STM32 使用 DMA 加串口空闲中断接收数据
中,需要用串口接收数据,是使用串口中断来接收数据。但是用这种方法的话,
就要频繁进入串口中断,然后处理,效率就比较低。于是就想到用 来接收串口数据,
这个 也是支持的。但是关键的一点,怎么知道数据接收完毕了呢?如果接收的数
据长度固定,那就好办,直接设置 的接收数据个数就行了。但是如果长度不固定了,
那应该怎么办了?
这个时候,就要用到 在串口中提供的另一个好用的东西了,就是串口空闲中断。
在 的串口控制器中,设置了有串口空闲中断,即如果串口空闲,又开启了串口空
闲中断的话,就触发串口空闲中断,然后程序就会跳到串口中断去执行。有了这个,是不
是可以判断什么时候串口数据接收完毕了呢?因为串口数据接收完毕后,串口总线肯定是
会空闲的嘛,那这个中断肯定是会触发的了。
还有一个问题,这串口空闲中断是只要串口空闲就会产生吗?其实不是的,串口空闲中
断要触发的话,是要 位被置位后,串口总线空闲才会触发的。所以我们不用担心,
串口数据发送完毕后,会不会触发串口空闲中断了。