你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F303 串口DMA接收 异常

[复制链接]
shuaishuai2599 提问时间:2018-2-2 10:29 /
各位大牛好:
    小弟使用了STM32F303芯片的串口DMA配合空闲中断来接收不定长的串口数据,现在发现有时候只能接收最开始的那一个字节(能确定发送到额数据大小没超过DMA的缓冲大小),过段时间,又会自行恢复正常。监控了串口的数据均正常,没有出现至发送一个字节的情况。请大家忙帮分析一下,代码如下,先谢谢各位

DMA初始化

DMA初始化

空闲中断里的DMA接收

空闲中断里的DMA接收

收藏 评论4 发布时间:2018-2-2 10:29

举报

4个回答
feixiang20 回答时间:2018-2-2 11:48:05
曾经在网上看到一篇STM32  串口 DMA 接收和发送的源码详解, 你可以去参考参考。另外程序异常可以逐行进行分析,修改自己怀疑的程序段的参数,我编程的时候也老出意外,也是逐行检查来解决的。另外缓冲大小是否真有限制。。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

chrome777 回答时间:2018-2-2 15:27:02
之前F7的时候使用是这样,好像没碰到问题。 TIM图片20180202152316.png
最好在处理IDLE中断之后,加上HAL自带的中断处理函数,HAL_UART_IRQHandler(&huart3);




评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

shuaishuai2599 回答时间:2018-2-2 18:18:58
你好,感谢指导,相比较你的程序,多了huart3.hdmarx->NDTR=UART_RX_LEN,其实这句话在下面的HAL_UART_Receive_DMA()的函数中已经实现过了。现在比较纳闷,我的为什么只接收头一个字节呢,奇怪的是自己可以恢复正常。感谢你的指导,谢谢!
埃斯提爱慕 回答时间:2018-3-21 11:32:45
提示: 作者被禁止或删除 内容自动屏蔽

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版