利用STM32CubeMx的串口DMA收发数据

描述

一,代码生成

 

按以前的方法设置好时钟和调试方式,这里就不多说了。

 

串口串口

2.设置串口1。

串口

3.在DMA Setting里点击Add添加USART1_TX,Mode有两种模式,一种是普通模式,使用一次发送语句就发一次,另一种是循环模式,使用一次发送会一直发送。这里发送我选择普通模式,接收选择循环模式。

串口

4.在中断设置里打开串口1的中断。

串口

 5.时钟和文件路径等设置好,然后点生成代码。

串口

 

二,代码编写

1.先定义发送和接收的数组。

  •  
  •  
  •  
  •  

/* USER CODE BEGIN 0 */uint8_t aRxBuffer[1];uint8_t aTxBuffer[]="ok";/* USER CODE END 0 */

2.打开串口DMA的发送使能,while循环可以放一些LED的闪烁。

  •  
  •  
  •  
  •  

/* USER CODE BEGIN 2 */ HAL_UART_Receive_DMA(&huart1,aRxBuffer,1); HAL_UART_Transmit_DMA(&huart1,aTxBuffer,sizeof(aTxBuffer)); /* USER CODE END 2 */

3.最后加上一个串口接收函数的回调函数,把接收到的数据再发出去。

  •  
  •  
  •  
  •  
  •  
  •  

/* USER CODE BEGIN 4 */void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle){ HAL_UART_Transmit(&huart1,aRxBuffer,1,0);}/* USER CODE END 4 */

 

三,现象:

电脑的串口会收到“OK”,然后从电脑发送给芯片任意字符,芯片再发回来。

串口

 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分