1. 程序设计思路:
设计一个函数用于串口发送数据,通过DMA方式发送数据,接收数据则通过中断方式接收不定长度的数据。
2. 数据发送具体实现方法:
DMA弹性请求映射,可以将DMA的通道CHx_SRC[x=1-7]设定为任意来源,如将DMA_Chanel1通道设置为USART2_TX的具体函数为:
dma_flexible_config(DMA1, FLEX_CHANNEL1, DMA_FLEXIBLE_UART2_TX);具体可以参考手册的说明。这一点应该要特别注意的地方。
3. 数据接收具体实现方法:
具体的思路还是通过中断的方式结束数据,当检测到数据超时后,判断为数据接收完成,本程序中设置为5ms超时。
4. 数据超时的实现:
通过定时器TMR6来计数实现
5.具体接线及代码运行情况,如图所示,接开发板的PA2,PA3口,测试代码可正常收发数据。
附带源码如下,有需要的可以直接下载运行,所有库已经整理完成。
串口DMA发超时收.zip
(288.04 KB)
|