首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

STM32的USART接收数据通过DMA传输所遇到的问题

STM32的USART接收数据通过DMA传输所遇到的问题

出现的问题:
先使用USART中断函数接收数据,判断是否接收到每帧数据的起始标记字符。如果接收到就关闭USART中断,然后开启DMA用于后续串口数据的接收。但是出现一个问题是每帧数据的起始标记为:A5 4A 05 00 00 40 81
然后开启DMA传输后所接收收到的第一个数据为0x81,也就是起始标志字符的最后一个数据。
造成这样问题的原因是:
在USART初始化时使用了函数:USART_DMACmd(USART1,USART_DMAReq_Rx,ENABLE);
虽然此时DMA没有被使能,但是硬件上已经开始做DMA传输检测了。
解决办法:
将函数:USART_DMACmd(USART1,USART_DMAReq_Rx,ENABLE);从串口初始化函数中删除掉,然后和使能DMA传输函数放在一起。这样就成功解决问题了



技术交流可以加黄工QQ2685896890
返回列表