CH32V实现串口DMA、空闲中断接收不定长数据
UART通讯是MCU中最常用的通讯方式,利用DMA方式接收数据,并利用UART的空闲中断,来接收来自用户不定长的数据。
对于此功能,主要应该注意以下几点。参考了很多STM32关于此功能的讲解与程序源码。
USART DMA 空闲中断接收不定长数据:
配置USART DMA接收功能。
a. 使能时钟,RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
b. 配置 DMA1_Channel5,初始化。
配置USART 功能。
使能USART1对应管脚的时钟,USART1时钟。
配置并初始化发送、接收管脚。
3. 配置中断优先级。配置并初始化USART1_IRQn的抢占优先级、响应优先级,并初始化之。
4. 配置USART1的空闲中断。USART_ITConfig(USART1, USART_IT_IDLE, ENABLE);
5. 使能USART1的DMA接收功能,USART_DMACmd(USART1, USART_DMAReq_Rx, ENABLE); // 开启串口的DMA接收接收功能
6. 使能USART1,USART_Cmd(USART1, ENABLE);。
示例坐标:链接: https://pan.baidu.com/s/1OBKaOwFQ1iVHwldnmCHXtg?pwd=rv32 提取码: rv32