【STM32CubeMX】 13 stm32-串口接受不定长数据方法(3种),使用两个串口功能串口触摸屏 2018年11月13日

转https://blog.csdn.net/u014515202/article/details/73293917

想做好通信,串口一定要非常熟,一个经典的问题。

很多时候,看问题多个角度看,串口容易出问题,可以多从固件库看看原理,如中断标志的清理等等,不要局限于HAL库。

1,方法3:实现思路:直接利用stm32的RXNE和IDLE中断进行接收不定字节数据。 

RXNE中断和IDLE中断的区别? 

当接收到1个字节,就会产生RXNE中断,当接收到一帧数据,就会产生IDLE中断。比如给单片机一次性发送了8个字节,就会产生8次RXNE中断,1次IDLE中断。 

2、方法2:DMA接受+IDLE中断//主推,不易丢失数据

 

实现思路:采用STM32F103的串口1,并配置成空闲中断IDLE模式且使能DMA接收,并同时设置接收缓冲区和初始化DMA。那么初始化完成之后,当外部给单片机发送数据的时候,假设这帧数据长度是200个字节,那么在单片机接收到一个字节的时候并不会产生串口中断,而是DMA在后台把数据默默地搬运到你指定的缓冲区里面。当整帧数据发送完毕之后串口才会产生一次中断,此时可以利用DMA_GetCurrDataCounter();函数计算出本次的数据接受长度,从而进行数据处理。

3,2018/8/8  

传输多行数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值