RTT下,串口DMA没反应
使用了RTT STUDIO,参考了官网rtt官方的DMA的例程,没有接受的处理。但是参考了RTT的中断又没有问题。
已经在board.h里,设置好了,同时在setting里也开启了DMA
#define BSP_USING_UART2
#define BSP_UART2_TX_PIN "PA2"
#define BSP_UART2_RX_PIN "PA3"
#define BSP_UART2_RX_USING_DMA
之前是使用STM32L435 DMA 串口开发的,业务扩展,AT32F435有8个串口准备移植到AT32来。
发现at32用RTT官方的驱动DMA,不起作用。 STM32L4系列的串口DMA是直接挂在DMA1七个通道里面的channel6和channel 7上,而AT32F32跟STM32 DMA的机制有些区别,AT32的DMA还有个复用器,所以可能要修改RTT DMA的BSP。
本帖最后由 sheltonyu 于 2025-3-31 10:02 编辑
你好,有以下几点请注意一下:
1. 是某个串口的dma不能用还是所有串口dma都无法使用?
dma外设通道设置默认进行了排布,外设间可能存在互斥导致没有实际开启,详见dma_config.h文件
2. debug确认一下setting里的串口dma支持是否有正确打开。
打开后会生成RT_SERIAL_USING_DMA宏定义。
3. 如何判断的dma没起作用?
串口接收是按loop buffer的方式不停的接收数据,收到数据时dma就自动进行收数据。4. 要以DMA的方式打开串口设备。
页:
[1]