1 static void USART2_config(void) 2 { 3 float temp; 4 u16 mantissa; 5 u16 fraction; 6 7 DMA1_Stream5->PAR=(uint32_t)&(USART2->DR); //DMA外设地址 多重ADC->CDR 8 DMA1_Stream5->M0AR= (uint32_t)_Compass_Value; //DMA 存储器0地址 9 DMA1_Stream5->NDTR=3; //传输数据项个数 10 DMA1_Stream5->CR=0; //先全部复位CR寄存器值 11 DMA1_Stream5->CR|=4<<25; //通道选择4 12 DMA1_Stream5->CR|=0<<23; //存储器单次传输 13 DMA1_Stream5->CR|=0<<21; //外设单次传输 14 DMA1_Stream5->CR|=1<<16; //中等优先级 2:高 3:非常高 15 DMA1_Stream5->CR|=0<<13; //存储器数据大小为8位 0:8位 1:16位 2:32位 16 DMA1_Stream5->CR|=0<<11; //外设数据大小为8位 0:8位 1:16位 2:32位 17 DMA1_Stream5->CR|=1<<10; //存储器地址递增 18 DMA1_Stream5->CR|=0<<9; //外设地址固定 19 DMA1_Stream5->CR|=1<<8; //循环模式 20 DMA1_Stream5->CR|=0<<6; //0:外设到存储器 1:存储器到外设 2:存储器到存储器 21 DMA1_Stream5->CR|=1<<0; //开启DMA传输 22 23 24 //波特率为 25 temp=(float)(42000000)/(19200*16);//得到USARTDIV@OVER8=0 26 mantissa=(u16)(temp); //得到整数部分 27 fraction=(u16)((temp-mantissa)*16); //得到小数部分@OVER8=0 28 mantissa<<=4; 29 mantissa+=fraction; 30 31 //波特率设置 32 USART2->BRR=mantissa; //波特率设置 33 USART2->CR1&=~(1<<15); //设置OVER8=0 34 //使能发送 35 //USART2->CR1|=1<<3; //串口发送使能 36 USART2->CR1|=1<<2; //串口接收使能 37 38 USART2->CR3=1<<6; //开启DMA输出 39 //使能 40 USART2->CR1|=1<<13; //串口使能 41 42 43 }
STM32F4寄存器初始化系列:串口DMA接收
猜你喜欢
转载自www.cnblogs.com/penuel/p/11265322.html
今日推荐
周排行