五,测试
STM32自带的串口空闲中断判断的相当及时!所以我不用它!因为很多时候我需要动态的空闲时间.
注:上面方案并不是最优的方式,但是适用于所有的单片机
我的想法是
发送数据采用 内存管理+DMA
每次发送的数据通过内存管理API放到内存里面,放入以后就查看一下以前的数据是不是发送完了,如果发送完了就重新配置下DMA
同时开启DMA发送完成中断,DMA发送完成中断里面也要判断内存里面有没有需要发送的数据,有的话就重新配置DMA,
说完发送,再说接收
我的想法是
数组+DMA+串口空闲中断/定时器
串口空闲中断和定时器的作用都是判断接收到一条完整的数据,空闲中断好说,直接在里面写标志就可以。
如果用定时器就是定时器里面获取DMA接收的数据个数(DMA有API可以获取),如果接收的数据个数在一定时间内不再改变,则置位标志,复位DMA.
当然如果为了预防处理慢,接收快的问题,加入内存管理。
内存管理+DMA+串口空闲中断
|