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

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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版