应某些网友需求,说网上根本找不到基于Rt-Thread DMA串口发送代码,只有官方开源的串口DMA接收。
其实这些东西并不难,只要你细心去看哪些闲置的驱动文件且都是包装好的,通过关键字去查询或点开源文件查看,花不了几分钟,都很简单的。
在官方提供的驱动函数中,都赋予了static关键字限制或一些宏定义的限制,如果你需要用到这些限制函数,你只需要注释static关键字或打开宏定义即可。
想要使用串口的DMA发送,需要在board.h打开相关宏定义
config.baud_rate = BAUD_RATE_115200; //修改波特率为 115200
config.data_bits = DATA_BITS_8; //数据位 8
config.stop_bits = STOP_BITS_1; //停止位 1
config.bufsz = 128; //修改缓冲区 buff size 为 128
config.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);
因篇幅问题不能全部显示,请点此查看更多更全内容