在rtt studio平台,芯片是stm32f429,串口3和串口4配置接收中断或者DMA模式都OK;串口8配置中断接收模式,收发都OK,但是配置成DMA模式该串口8不工作(发送和接收都没有)。
求助:将串口8配置成DMA收发模式可以正常工作。
/* 串口485方向GPIO设置 */
rt_pin_mode(rs485_dir1, PIN_MODE_OUTPUT);
rt_pin_write(rs485_dir1, PIN_LOW);
/* 查找串口设备 */
u2_dev = rt_device_find("uart2");
u3_dev = rt_device_find("uart3");
u4_dev = rt_device_find("uart4");
u8_dev = rt_device_find("uart8");
/* 初始化信号量 */
rt_sem_init(&rx2_sem, "rx2_sem", 0, RT_IPC_FLAG_FIFO);
rt_sem_init(&rx3_sem, "rx3_sem", 0, RT_IPC_FLAG_FIFO);
rt_sem_init(&rx4_sem, "rx4_sem", 0, RT_IPC_FLAG_FIFO);
rt_sem_init(&rx8_sem, "rx8_sem", 0, RT_IPC_FLAG_FIFO);
/* 以读写及中断/DMA等发送接收方式打开串口设备 */
rt_device_open(u2_dev, RT_DEVICE_FLAG_RDWR|RT_DEVICE_FLAG_INT_RX);
rt_device_open(u3_dev, RT_DEVICE_FLAG_RDWR|RT_DEVICE_FLAG_DMA_RX|RT_DEVICE_FLAG_DMA_TX);
rt_device_open(u4_dev, RT_DEVICE_FLAG_RDWR|RT_DEVICE_FLAG_DMA_RX|RT_DEVICE_FLAG_DMA_TX);
rt_device_open(u8_dev, RT_DEVICE_FLAG_RDWR|RT_DEVICE_FLAG_INT_RX);
/* 配置串口 */
rt_device_control(u2_dev, RT_DEVICE_CTRL_CONFIG, (void *)&u2_configs);
u3_configs.baud_rate = BAUD_RATE_9600;
rt_device_control(u3_dev, RT_DEVICE_CTRL_CONFIG, (void *)&u3_configs);
rt_device_control(u4_dev, RT_DEVICE_CTRL_CONFIG, (void *)&u4_configs);
rt_device_control(u8_dev, RT_DEVICE_CTRL_CONFIG, (void *)&u8_configs);
/* 设置接收回调函数 */
rt_device_set_rx_indicate(u2_dev, uartx_rxCallback);
rt_device_set_rx_indicate(u3_dev, uartx_rxCallback);
rt_device_set_rx_indicate(u4_dev, uartx_rxCallback);
rt_device_set_rx_indicate(u8_dev, uartx_rxCallback);
/* 设置发送回调函数 */
rt_device_set_tx_complete(u2_dev,uartx_txCallback);
rt_device_set_tx_complete(u3_dev,uartx_txCallback);
rt_device_set_tx_complete(u4_dev,uartx_txCallback);
rt_device_set_tx_complete(u8_dev,uartx_txCallback);
/* 设置接收数组 */
rt_ringbuffer_init(&uart2_rxrb,uart2_rx_buffer,UART2_RX_Buffer_Len);
rt_ringbuffer_init(&uart3_rxrb,uart3_rx_buffer,UART3_RX_Buffer_Len);
rt_ringbuffer_init(&uart4_rxrb,uart4_rx_buffer,UART4_RX_Buffer_Len);
rt_ringbuffer_init(&uart8_rxrb,uart8_rx_buffer,UART8_RX_Buffer_Len);
drv_usart.c文件中stm32_uart_get_dma_config只配置了uart1~6的DMA,uart7和uart8需要自己加一下
谢谢!非常感谢!!!❤👍