stm32 串口中断读取一帧数据(中断接收不定长数据)
单片机开发板上的例程中对串口讲解大都很简单.
通常只会讲解收发操作.就是接收一个字符,然后把这个字符发送出去.
但是在实际应用串口中通常是用于接收指令或发送指令的.
这就需要用到"帧"的概念了.
其实说的更白话一点,就是接收一条指令.这里一帧就是一条指令.

通常接收一帧,如果有包头和包尾的数据还好,就是弄一个环形的缓存,无论串口传过来是什么,统统接收,然后在根据包头和包尾去摘出其中的一条完整数据,但是如果一个器件没有包头或包尾,并且传过来的数据是不定长的?,这时就需要用到接收一帧的功能了.
这个功能自己编写起来是比较麻烦的,stm32单片机集成了硬件上判断一帧的功能(IDLE).

用起来也很简单,(我这里用了条件编译)
首先配置串口的引脚:

然后配置串口功能:(这里也打开了串口中断)

注意:上面打开中断,用了两条语句,

配置串口的nvic:

经过上面这些,串口的功能基本配置好了.
下面就是串口的中断函数了.


参考文档:
https://blog.csdn.net/qq_43765237/article/details/107599234
http://www.voidcn.com/article/p-wtykumrm-bag.html