python 串口接收不定长数据_【F769IDISCOVERY评测】串口接收超时中断和字符匹配中断...

在如今这个需要快速开发设计出产品的时代,模块化的东西越来越方便快捷,在各种模块使用的接口里面串口应该是比较常见和常用的,串口蓝牙模块,串口WIFI模块等等,除此之外串口还常用于和客户产品进行通信中也比较方便,因此一个接收发送数据等功能完善的串口对项目开发来说非常重要。(STM32官网)

在ST发布比较新的系列的ARM芯片中,串口已经非常强大,下面我们就简单测试几个比较常用的功能。

1、接收超时中断+DMA接收不定长数据

如果我们想要用串口接收一段长度不确定的数据,比较常见的做法是空闲中断配合DMA或者自己使用定时器进行一个超时判断来确定一帧长度数据接收完成,除此之外在STM32F7系列中串口有一个Receiver timeout 中断,使用这个接收超时中断配合DMA可以很方便的接收不定长数据。

接收超时中断用于串口在接收到最后一个字符后,在设置的超时时间内没有接收到新的数据便会触发。

uartouttime.png (142.28 KB, 下载次数: 24)

2016-12-10 17:02 上传

接收超时中断的设置超时时间是以串口接收一个bit的持续的时间为单位,这个时间和波特率有关系实际使用中可以根据具体情况进行调整,然后设置超时多少个这样的持续时间才会触发中断。

RTO.png (80.8 KB, 下载次数: 17)

2016-12-10 17:14 上传

接收超时设置和中断回调函数如下

//打开或者关闭串口接收超时

void USART_ReceiverTimeOutCmd(USART_TypeDef* USARTx, FunctionalState NewState)

{

if (NewState != DISABLE)

{

USARTx->CR2 |= USART_CR2_RTOEN;

}

else

{

USARTx->CR2 &= (uint32_t)~((uint32_t)USART_CR2_RTOEN);

}

}

//设置串口接收超时时间

void USART_SetReceiverTimeOut(USART_TypeDef* U

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值