你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
串口空闲中断接收不定长数据(DMA方式)
[复制链接]
mizhinian
发布时间:2019-11-10 23:48
文章
文章封面:
-
文章简介:
-
代码:
stm32f10x_demo_USART_DMA_IDLE.rar
(4.03 MB, 下载次数: 63)
2019-11-10 23:42 上传
点击文件名下载附件
在使用STM32的串口接收数据的时候,我们常常会使用接收中断的方式来接收数据,常用的是RXNE。这里分享另一种接收数据的方式——IDLE中断(本实验的例子运行在STM32F103ZET6上)。
一、IDLE中断什么时候发生?
IDLE就是串口收到一帧数据后,发生的中断。什么是一帧数据呢?比如说给单片机一次发来1个字节,或者一次发来8个字节,这些一次发来的数据,就称为一帧数据,也可以叫做一包数据。
* L5 ]) W& e9 r$ W5 n
二、RXNE中断和IDLE中断的区别?
当接收到1个字节,就会产生RXNE中断,当接收到一帧数据,就会产生IDLE中断。比如给单片机一次性发送了8个字节,就会产生8次RXNE中断,1次IDLE中断。
三、IDLE中断如何配置?
IDLE中断由USART_CR1 寄存器进行配置:
对于STM32F103ZET6来说,配置USART_CR1寄存器bit5为1则打开RXNE中断,配置USART_CR1寄存器bit4为1则打开IDLE中断。
这是状态寄存器,当串口接收到数据时,bit5就会自动变成1,当接收完一帧数据后,bit4就会变成1.
需要注意的是,在中断函数里面,需要把对应的位清0,否则会影响下一次数据的接收。
对于RXNE中断,对USART_DR的读操作可以将该位清零。
对于IDLE中断,由软件序列清除该位(先读USART_SR,然后读USART_DR)。
1 H* s( j t" D& U+ ^) p; f! h' P
四、USART+DMA+IDLE接收不定长数据例程
1、USART初始化
2、中断服务函数
3、主函数
4、运行结果
, g0 f4 _' W: \0 `: B. x+ c
" R. r4 \0 M; |
赞
1
收藏
4
评论
7
分享
发布时间:2019-11-10 23:48
举报
请先
登录
后回答问题
7个回答
Kevin_G
回答时间:2019-11-11 13:14:41
a1024a.1 32b0c
多谢
赞
评论
回复
支持
反对
西点钟灵毓秀
回答时间:2019-11-11 15:25:22
a0a.1 32b0c
看看,一直都没有用DMA,现在下载来瞧瞧
赞
评论
回复
支持
反对
爱电子辉辉
回答时间:2019-12-5 10:04:32
a1024a.1 32b0c
点个赞。
赞
评论
回复
支持
反对
单片机爱好者
回答时间:2020-6-24 18:30:25
a0a.1 32b0c
支持一下,降低CPU使用率
赞
评论
回复
支持
反对
desk1983
回答时间:2020-6-26 21:20:44
a0a.1 32b0c
非常好的资料,对初学者很有帮助;
) X. T% R& l. Y6 l
希望楼主多多分享,赠人玫瑰,手有余香,念念不忘,必有回响;.非常好的资料,对初学者很有帮助;
6 \6 w5 @1 y @" W$ o
希望楼主多多分享,赠人玫瑰,手有余香,念念不忘,必有回响;.
赞
评论
回复
支持
反对
code_asf
回答时间:2020-7-5 16:10:30
a4a.1 32b0c
正在学习,感谢分享
赞
评论
回复
支持
反对
lion_wang
回答时间:2020-11-8 14:44:33
a1024a.1 32b0c
感谢分享
赞
评论
回复
支持
反对
所属标签
相似分享
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
希望楼主多多分享,赠人玫瑰,手有余香,念念不忘,必有回响;.非常好的资料,对初学者很有帮助;
希望楼主多多分享,赠人玫瑰,手有余香,念念不忘,必有回响;.