STM32串口中断+DMA接收不定长字符串

本文介绍了如何在STM32f103rct6上使用串口空闲中断+DMA接收不定长字符串。通过KEIL MDK和STM32固件库进行配置,重点解析了空闲中断的概念和处理思路,并提供了经过验证的代码示例,包括串口和DMA初始化、中断处理以及在main函数中处理数据的方法。文章还展示了实际测试结果,成功实现了8次接收,共接收64个字符。
摘要由CSDN通过智能技术生成

STM32串口中断+DMA接收不定长字符串

硬件平台:stm32f103rct6(大容量产品)
软件环境:KEIL MDK+stm32f1固件库
串口:USART1
-----------------------------------------------------------------------------
看了网上很多讲串口中断+DMA接收不定长字符串的例子,要么大家抄来抄去不加验证,要么没有源代码,要么对空闲中断解释不清楚。 今天有空来整理一下,下面的代码经过本人验证。
接收定长字符串简单,直接在中断里将字符放到数组里即可。
但是接收不定长字符串就比较麻烦,因为你不知道什么时候一帧数据接收完了。通常有两种方法来接收不定长字符串:超时判断串口空闲中断。今天我们先介绍第二种方法。
首先明确一个概念,什么是STM32的空闲中断,下面是stm32数据手册1对空闲中断的定义:

空闲符号被视为完全由’1’组成的一个完整的数据帧,后面跟着包含了数据的下一帧的开始位(‘1’的位数也包括了停止位的位数)。

也就是全部由1组成的一帧数据是空闲帧,包括起始位停止位都是1。当我们用串口助手发送完一串数据后,TXD引脚默认为高电平,此时我们可以认为发送完这一串的数据的最后一个字节后,紧跟着一个空闲中断。图1是手册里面的解释。

  • 11
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值