如果觉得本文对您有帮助别忘了点赞收藏呦,有问题欢迎评论交流。
总述
串口DMA实质上就是在DMA控制器的控制下将内存中的数据(比如我们定义的一个数组)一个字节一个字节复制到,串口数据寄存器,然后发送出去,发送过程由DMA控制,不用我们代码控制。而对于传统串口发送,要发送字符串一般是要用循环语句,而用DMA只需要配置好相关寄存器就可以自动发送字符串。
初始化
时钟
DMA时钟和外设时钟都要初始化
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE);
串口
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef Usart1_structure;
//USART1_TX GPIOA.9
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //¸´ÓÃÍÆÍìÊä³ö
GPIO_Init(GPIOA, &GPIO_InitStructure);//³õʼ»¯GPIOA.9
Usart1_structure.USART_BaudRate=9600;
Usart1_structure.USART_HardwareFlowControl=USART_Hardware