STM32低功耗串口接受数据异常
【摘要】
文章目录
低功耗串口接受数据异常一、异常信息1.1 硬件环境1.2 软件环境1.3 问题描述
二、问题分析三、解决方式
低功耗串口接受数据异常
一、异常信息
1.1 硬件环境 ...
低功耗串口接受数据异常
一、异常信息
1.1 硬件环境
小熊派 STM32L4 单片机
1.2 软件环境
STM32CubeMX 6.2.1
MDK 5.3
1.3 问题描述
使用 STM32CubeMX 配置 STM32 的 LPUART 后,生成代码使用串口 DMA 接受数据,在开启数据接受后,指定接受的数据长度,接受完成后,串口继续接受数据,在开启下一个串口接受时则会读取之前的数据,例如:
串口使能接受 5 个数据,然后上位机发送 ABCDEFG,本次串口 DMA 在接受到 ABCDE 时就会产生接受完成标志,调用回调函数,至于 FG 则不会接受丢弃掉,但我如果在设置接受 2 个数据,这两个数据居然还能接受到
在仿真调试里面运行程序时这两个数据不会接受到,很正常,符合逻辑,但一旦实际下载到单片机里面实际运行就会出现错误
二、问题分析
根据实验现象,仿真是很正常的,但实际下载运行就会出现问题,推测编译器或者生成的代码有问题
理论上第一次接受数量达标后,代码会将接受完成标志置位,然后串口的缓存区不会再接受任何数据,出现这种情况的原因可能是接受完成后数据 DMA 和串口没有关闭
三、解决方式
在调用之前我们将 DMA 的缓存区清空即可,例如我下面的代码,使用 memset 清空缓存区
文章来源: blog.csdn.net,作者:JeckXu666,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_45396672/article/details/122964396
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)