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

Cube下实现串口+DMA+空闲中断接收不定长数据  

[复制链接]
wjjontheway 提问时间:2015-7-30 16:38 /
阅读主题, 点击返回1楼
4 收藏 22 评论81 发布时间:2015-7-30 16:38
81个回答
haitio-33754 回答时间:2015-12-10 10:43:33
光环 发表于 2015-12-9 16:40
刚接触STM32 ,试验了一下楼主程序,每次重启MCU后,第一次向mcu发送数据,收不到,从第二次以后就正常了。 ...

                temp = huart1.Instance->SR;      这里的赋值是什么意义?
                temp = huart1.Instance->DR;      这里的赋值是什么意义?
这不是赋值,这是STM32的寄存器操作方式,先读uart的SR寄存器,再读DR寄存器,可以清除某些标志位。
但是我也不清楚为啥要在这里清除这些标志位呢。按照我的理解,楼主可能是想把IDLE标志位给清除掉,但是前面不是已经调用 __HAL_UART_CLEAR_IDLEFLAG(&huart1)这个函数清除掉了么?为什么重新来一次呢?
光环 回答时间:2015-12-10 11:22:13
本帖最后由 光环 于 2015-12-10 11:27 编辑
haitio-33754 发表于 2015-12-10 10:43
temp = huart1.Instance->SR;      这里的赋值是什么意义?
                temp = hua ...

感谢,明白了,是为了清除标志,谢谢你。另外我试验了一下:
1、注释掉这两句也能正常接收。
2、我将 HAL_UART_Receive_DMA(&huart1,rx_buffer,BUFFER_SIZE); 放到while(1)前面(只执行一次)也可以正常接收。
quanqiuying 回答时间:2015-12-28 11:37:01
要用循环模式
飘云-356085 回答时间:2016-3-1 15:51:07
谢谢楼主分享。支持
ontot 回答时间:2016-4-14 14:14:53
我正在写这个程序,今天下午正在想怎么解决这个问题呢,刚刚好想法不谋而合。你那个长度获取对我来说也有吸引力。这个用在485上完美了。C:\Users\Tsar\Desktop\2016-04-14_141327.png
mjun5210 回答时间:2016-6-23 16:58:04
你们用空闲中断,会不会丢数据?我的丢数据很严重。
mjun5210 回答时间:2016-6-23 16:58:20
你们用空闲中断,会不会丢数据?我的丢数据很严重。
efree 回答时间:2016-7-25 16:39:13
好资料。顶一下。
dongyichen 回答时间:2016-10-26 14:22:33
我的也用DMA加串口空闲接收数据,也丢失很严重,不知道为啥呢。待会我上传下代码,各位看下
ynwscfsfi 回答时间:2016-10-26 14:37:39

多谢分享

所属标签

相似问题

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