Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. HAL_UART_IRQHandler(&huart2);
  2.  
  3. /* Private variables ---------------------------------------------------------*/
  4. extern UART_HandleTypeDef huart2;
  5. DMA_HandleTypeDef hdma_usart2_tx;
  6. char *msg = "Hello STM32 Lovers! This message is transferred in DMA Mode.rn";
  7.  
  8.  
  9. /* USER CODE BEGIN PV */
  10. /* Private variables ---------------------------------------------------------*/
  11.  
  12. /* USER CODE END PV */
  13.  
  14. /* Private function prototypes -----------------------------------------------*/
  15. void DMATransferComplete(DMA_HandleTypeDef *hdma);
  16.  
  17. /* USER CODE BEGIN PFP */
  18. /* Private function prototypes -----------------------------------------------*/
  19.  
  20. /* USER CODE END PFP */
  21.  
  22. /* USER CODE BEGIN 0 */
  23.  
  24. /* USER CODE END 0 */
  25.  
  26. int main(void) {
  27. HAL_Init();
  28.  
  29. Nucleo_BSP_Init();
  30.  
  31. hdma_usart2_tx.Instance = DMA1_Channel7;
  32. hdma_usart2_tx.Init.Request = DMA_REQUEST_2;
  33. hdma_usart2_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
  34. hdma_usart2_tx.Init.PeriphInc = DMA_PINC_DISABLE;
  35. hdma_usart2_tx.Init.MemInc = DMA_MINC_ENABLE;
  36. hdma_usart2_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
  37. hdma_usart2_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
  38. hdma_usart2_tx.Init.Mode = DMA_NORMAL;
  39. hdma_usart2_tx.Init.Priority = DMA_PRIORITY_LOW;
  40. hdma_usart2_tx.XferCpltCallback = &DMATransferComplete;
  41. HAL_DMA_Init(&hdma_usart2_tx);
  42.  
  43. /* DMA interrupt init */
  44. HAL_NVIC_SetPriority(DMA1_Channel7_IRQn, 0, 0);
  45. HAL_NVIC_EnableIRQ(DMA1_Channel7_IRQn);
  46.  
  47. HAL_DMA_Start_IT(&hdma_usart2_tx, (uint32_t)msg, (uint32_t)&huart2.Instance->TDR, strlen(msg));
  48. //Enable UART in DMA mode
  49. huart2.Instance->CR3 |= USART_CR3_DMAT;
  50.  
  51. /* Infinite loop */
  52. while (1);
  53. }
  54.  
  55. void DMATransferComplete(DMA_HandleTypeDef *hdma) {
  56. if(hdma->Instance == DMA1_Channel7) {
  57. //Disable UART DMA mode
  58. huart2.Instance->CR3 &= ~USART_CR3_DMAT;
  59. //Turn LD2 ON
  60. HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET);
  61. }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement