本帖最后由 Jekele 于 2021-3-19 11:34 编辑
笔者407板子的USRAT1发没问题,收貌似有问题(废了老大的劲,最终断定USART1有问题),换了USART2立马就好了。
一、USRAT2串口配置
1、配置USART2时钟,GPIO(复用),USRAT2串口模式...
2、开启USART2发送完成中断,总线空闲检测中断,使能DMA串口发送请求,使能DMA串口接收请求,最后使能USART2串口。
二、DMA配置
1、参数配置中寄存器地址为使用串口的数据寄存器地址,内存地址为自定义的内存地址;
2、使能DMA发送通道,使能DMA接收通道,使能DMA发送端传输完成中断;
三、中断配置
1、中断分组配置,使能USART2中断,使能DMA发送通道中断。
四、DMA串口发送
1、笔者采用的单次发送模式,如果不进行其他操作,上电后只发送一次就会停止。
2、想要后续继续使用DMA发送,在第一次发送完成后,先清中断标志、关闭DMA发送通道,再次设置发送的字节数(一定要在关闭发送通道的情况下设置),最后在打开DMA发送通道完成下一次的发送。
五、DMA串口接收
1、接收完成一包数据后进入总线空闲检测中断,先清中断标志、关闭DMA接收通道(防止再次接收到数据造成干扰),再获取接收的数据长度、处理接收到的数据等操作。
2、为保证后续继续通过DMA接收数据,要再次设置接收的字节数,并重新打开DMA接收通道。最后循环操作即可。
|