- 本帖最后由 Line 于 2020-5-25 01:19 编辑 *
芯片:STM32F407 RTT 版本:4.0.2
boar.h 部分配置:
#define BSP_USING_UART3
#define BSP_UART3_RX_USING_DMA
#if defined(BSP_USING_UART3)
#define UART3_TX_PORT GPIOB
#define UART3_RX_PORT GPIOB
#define UART3_TX_PIN GPIO_PIN_10
#define UART3_RX_PIN GPIO_PIN_11
#endif
出现问题代码:
serial = rt_device_find("uart3");
rt_device_control(serial , RT_DEVICE_CTRL_CONFIG, &config);
rt_device_set_rx_indicate(serial , uart_input);
rt_device_open(serial , RT_DEVICE_FLAG_DMA_RX);
rt_device_write(serial , 0, tx_buffer, sizeof(tx_buffer));
if (rt_sem_take(&rx_sem, rt_tick_from_millisecond(500)) == RT_EOK) { // dma 接收回调函数释放的信号量
rt_device_read(serial, 0, rx_buffer, BUFFER_SIZE);
... // 数据处理
}
rt_device_close(serial);
问题描述:
上述代码第一次执行的时候没有问题,但是第二次执行的时候进入断言,在 drv_usart.c 中找到 HAL_DMA_DeInit(DMA_Handle) 的返回值为 HAL_DMA_STATE_BUSY ,请问是什么原因导致的 dma busy?
串口 3 实际上是没有接设备的(要接的设备目前不在身边),是因为没有收到返回数据导致的吗?
请问解决了吗?我也遇到这个问题了
@Tomato_E 没有解决,放弃用 DMA 接收了