stm32的rxne和idle中断_STM32 HAL CubeMX 串口IDLE接收空闲中断+DMA

历程详解

详解包括:

中断原理讲解

例程流程详解

库函数分析详解

对应寄存器介绍

对应函数介绍

对应注释详解

本篇文章提供两种方法:

一种是 :IDLE 接收空闲中断+DMA

一种是: IDLE 接收空闲中断+RXNE接收数据中断

都可完成串口数据的收发

知识点介绍:

STM32 IDLE 接收空闲中断

功能:

在使用串口接受字符串时,可以使用空闲中断(IDLEIE置1,即可使能空闲中断),这样在接收完一个字符串,进入空闲状态时(IDLE置1)便会激发一个空闲中断。在中断处理函数,我们可以解析这个字符串。

接受完一帧数据,触发中断

STM32的IDLE的中断产生条件:

在串口无数据接收的情况下,不会产生,当清除IDLE标志位后,必须有接收到第一个数据后,才开始触发,一但接收的数据断流,没有接收到数据,即产生IDLE中断

STM32 RXNE接收数据中断

功能:

当串口接收到一个bit的数据时,(读取到一个停止位) 便会触发 RXNE接收数据中断

接受到一个字节的数据,触发中断

比如给上位机给单片机一次性发送了8个字节,就会产生8次RXNE中断,1次IDLE中断。

串口CR1寄存器

75e1d29bcca5e574b98bedc479b684c8.png

对bit4写1开启IDLE接受空闲中断

,对bit5写1开启RXNE接收数据中断。

串口ISR寄存器

33db0a274a94c1831a5cd56da5db7af9.png

此寄存器为串口状态查询寄存器

当串口接收到数据时,bit5 RXNE就会自动变成1,当接收完一帧数据后,bit4就会变成1.

清除RXNE中断标志位的方法为:

只要把接收到的一个字节读出来,就会清除这个中断

在STM32F1 /STM32F4 系列中 清除IDLE中断标志位的方法为:

先读SR寄存器,

再读DR寄存器。

79f9fba08297b6a535b243b585450e38.png

memset()函数

extern void *memset(void *buffer, int c, int count)

buffer:为指针或是数组

c:是赋给buffer的值

count:是buffer的长度.

USART采用DMA接收时,如何读取当前接收字节数?

#define __HAL_DMA_GET_CO

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值