应某些网友需求,说网上根本找不到基于Rt-Thread DMA串口发送代码,只有官方开源的串口DMA接收。
其实这些东西并不难,只要你细心去看哪些闲置的驱动文件且都是包装好的,通过关键字去查询或点开源文件查看,花不了几分钟,都很简单的。
一、更改驱动文件
在官方提供的驱动函数中,都赋予了static关键字限制或一些宏定义的限制,如果你需要用到这些限制函数,你只需要注释static关键字或打开宏定义即可。
二、打开宏定义
想要使用串口的DMA发送,需要在board.h打开相关宏定义
在串口驱动文件drv_usart.c中可以发现关于dma操作的函数只有两个,所以只需要删除两句函数开头的static关键字
三、串口配置传输
config.baud_rate = BAUD_RATE_115200; //修改波特率为 115200config.data_bits = DATA_BITS_8; //数据位 8config.stop_bits = STOP_BITS_1; //停止位 1config.bufsz = 128; //修改缓冲区 buff size 为 128config.parity = PARITY_NONE; //无奇偶校验位rt_device_control(serial, RT_DEVICE_CTRL_CONFIG, &config); /*控制串口设备。通过控制接口传入命令控制字,与控制参数 */rt_device_open(serial, RT_DEVICE_FLAG_DMA_RX); /* 以 DMA 接收及轮询发送方式打开串口设备 */rt_device_set_rx_indicate(serial, uart_input); /* 设置接收回调函数 */stm32_dma_config(serial,RT_DEVICE_FLAG_DMA_TX);stm32_dma_transmit(serial, "123", 4,RT_SERIAL_DMA_TX);