历史上的今天
返回首页

历史上的今天

今天是:2025年08月09日(星期六)

2021年08月09日 | STM32 | 串口空闲中断接收不定长数据(DMA方式)

2021-08-09 来源:eefocus

在使用STM32的串口接收数据的时候,我们常常会使用接收中断的方式来接收数据,常用的是RXNE。这里分享另一种接收数据的方式——IDLE中断(PS:本文的例子运行在STM32F103ZET6上)。


一、IDLE中断什么时候发生?

IDLE就是串口收到一帧数据后,发生的中断。什么是一帧数据呢?比如说给单片机一次发来1个字节,或者一次发来8个字节,这些一次发来的数据,就称为一帧数据,也可以叫做一包数据。


二、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)。


四、USART+DMA+IDLE接收不定长数据例程

1、USART初始化

2、中断服务函数

mld6dU.png?imageView2/2/w/550

3、主函数

mld2i4.png?imageView2/2/w/550

4、运行结果

mldWW9.png?imageView2/2/w/550

五、最后

1、参考资料:

(1)http://www.armbbs.cn/forum.php?mod=viewthread&tid=94751&extra=page%3D1

(2)http://www.51hei.com/bbs/dpj-39885-1.html

2、源码获取

链接:https://pan.baidu.com/s/1Wr4OXm3jigtzPuIVI8N03w
提取码:0vpj


推荐阅读

史海拾趣

Alpha-Micro Electronics公司的发展小趣事

Alpha-Micro Electronics是一家提供嵌入式系统解决方案的公司,专注于设计和制造微控制器、传感器和其他嵌入式设备。以下是关于Alpha-Micro Electronics公司发展的五个相关故事:

  1. 公司成立:Alpha-Micro Electronics公司成立于1982年,总部位于德国斯图加特。公司的创始人是一群电子工程师,他们致力于为各种应用领域提供高性能的嵌入式系统解决方案。

  2. 技术创新:在公司创立之初,Alpha-Micro Electronics就开始致力于技术创新。他们不断投资于研发,推出了一系列先进的微控制器和传感器产品,以满足客户对功能强大和性能稳定的需求。

  3. 解决方案定制:Alpha-Micro Electronics公司注重与客户的紧密合作,提供定制化的解决方案。他们的工程团队具有丰富的经验和专业知识,能够根据客户的具体要求设计和制造符合其需求的嵌入式系统。

  4. 国际扩展:随着业务的不断发展,Alpha-Micro Electronics逐渐拓展了国际市场。除了在德国的总部和研发中心外,公司还在全球范围内建立了销售和服务网络,包括在美国、亚洲和欧洲的分支机构和合作伙伴。

  5. 行业合作与创新:Alpha-Micro Electronics公司积极参与行业合作和创新项目,与其他企业、研究机构和学术界合作,共同推动嵌入式技术的发展。通过与行业领先者合作,公司不断探索新的技术和应用领域,为客户提供更具竞争力的解决方案。

这些故事展示了Alpha-Micro Electronics公司在技术创新、解决方案定制、国际扩展和行业合作方面的发展历程,以及其在电子行业中的重要地位和影响力。

达方(DARFON)公司的发展小趣事

达方电子股份有限公司于1997年在台北市创立,初始阶段主要致力于IT周边组件的研发与生产。创始人凭借对市场趋势的敏锐洞察,决定专注于笔记本键盘的生产,并逐步在行业中崭露头角。通过不断的技术创新和产品优化,达方电子的笔记本键盘逐渐获得了市场的认可,为公司的发展奠定了坚实的基础。

铨力(ALLPOWER)公司的发展小趣事

为了进一步提升综合竞争力,铨力公司开始着手深化产业链整合。通过收购、合作等方式,公司逐渐掌握了从原材料供应、产品生产到销售终端的完整产业链。这一举措不仅降低了生产成本,提高了生产效率,还为公司带来了更多的利润增长点。

统宇电研(Coilmaster)公司的发展小趣事

统宇电研公司成立于1995年,初创时期面临着重重挑战。当时,电子行业正值技术革新的关键时期,无源组件市场竞争激烈。统宇电研凭借对技术的敏锐洞察力和对市场趋势的准确判断,决定专注于高性能功率电感等无源组件的研发和生产。公司团队夜以继日地攻克技术难题,不断优化产品设计,最终成功推出了一系列具有竞争力的产品,为公司赢得了市场的认可。

Fascomp公司的发展小趣事

为了进一步提升技术实力和市场竞争力,Fascomp积极寻求与国际知名企业的技术合作。通过与多家跨国公司的联合研发项目,Fascomp成功吸收和借鉴了国际先进的技术和管理经验。此外,公司还积极拓展海外市场,产品远销欧美、亚洲等多个国家和地区,进一步提升了公司的国际化水平。

安普康(AMPCOM)公司的发展小趣事

随着业务的不断发展,安普康开始积极寻求市场拓展和战略合作的机会。公司在香港市场取得了显著的成绩后,决定进一步拓展内地市场。通过设立深圳安普康科技有限公司等分支机构,安普康逐步在内地市场建立了完善的销售网络和服务体系。同时,公司还与多家知名企业建立了长期合作关系,共同开拓市场、分享资源。这些合作不仅提升了安普康的市场地位,也为其未来的发展奠定了坚实的基础。

问答坊 | AI 解惑

Linux操作系统的高级电源管理 (1)

  在Windows下我们已经对系统的电源管理非常熟悉了,我们可以通过主板的高级电源管理模块实现STR、STD等功能。对于笔记本电脑用户使用高级电源管理方式,让笔记本电脑处于休眠状态,节省电池就更加重要。   上面说的这些功能在Windows平台下 ...…

查看全部问答>

5个跟实际生活相关的Twitter应用

心律Twitter:Akiduki Pulse可以把你的心律发布到Twitter上,号称是硬件、软件都开源的,我只找到了心律采集部分的原理图(从本站下载),其他部分电路没有看到,也没有找到软件部分的代码,因为网站是日语的,而我不懂日语。 胎儿Twitter:Core ...…

查看全部问答>

求教:嵌入式方向的课程应该学哪些?

我是计算机专业学生,选择栏嵌入式方向,但是不知道课程应该怎么选,请各位指点一下…

查看全部问答>

手机端打印问题,希望大家帮帮忙啊~~~~~~~~~

有个问题,希望有经验的朋友帮忙解决一下~ 做了一个asp.net页面调用数据库里的一段HTML代码,并且在手机上用webBrowser显示出来 但是我有个功能是要将其打印出来,并且在手机上webBrowser1.DocumentText这个属性也和电脑上不一样,虽然微软提供了这 ...…

查看全部问答>

我是新手,若若地问一句,我新买的的89s52学习板

今天烧录了一个程序,想让他运行,怎么才能开始运行,是一接通电源就运行,还是要怎么搞他才开始运行,我烧录的程序是1602LCD简单时钟显示实验C语言!…

查看全部问答>

win ce对多语言的支持

我在做项目开发时,需要编译一个阿拉伯版的win ce操作系统,我用PB可以编译出中文,英文,法文都可以,但是阿拉伯文不支持啊,将default language设为阿拉伯(埃及),下载到开发板运行,桌面语言仍然是英文,相同方法,法文、中文都可以,请问对于 ...…

查看全部问答>

DM9161,怎么才能得到他的物理地址,即5bit的PHY地址

请问一下 我板子上有一个DM9161,怎么才能得到他的物理地址,即5bit的PHY地址? 我的程序源码中用的地址是0x100。 看了看手册,但是没看见。是通过引脚配置吗? 知道的大哥给教一下 谢谢了 …

查看全部问答>

串口

if(ReceiveBuf==0x55) { SBUF= SendBuf[0]; //若接收到的是0x55,则将SendBuf[0]中的0xaa发送出去 while(!TI); //等待发送 TI=0; //若发送完毕,将TI清0 P2=0x00; BEEP=0; Delay_ms(500);  BEEP=1; }   请问各位大哥,这个 ...…

查看全部问答>