文档介绍:Ml
断
STM32中,需要用串口接收数据,是使用串口中断来接收数据。但是用这种方法的话, 就要频繁进入串口中断,然后处理,效率就比较低。于是就想到用DMA来接收串口数据,这 个STM32也是支持的。但是关键的一点,怎么知道数据接收完毕然接收数据就会一直产生中断了。
2、 DMA配置
DMA配置,要先查看串口接收是使用的哪个DMA的哪个通道,对于USART1_RX使用的是 DMA1的5通道。
usaku tx nwi ctti ■til: TR1& Tibi COM
Tlh6*_CH2 I3"d狂 ~t~J£
ll&AffTS -TK n^i ^ki TiMi LIP -ir*n do ^Pll RX
IfSAFTTSR^ PW1_C«2 T 吟 fJ-M Tlha^LiP MPIL IK
SSAfWE HX
~tSwTuf fiPI44SS_™
TWJ3<1 ri眦*
I2C2_HK
4
fctrt氏占i
4 ifiltWELIt?
减ft诂卓』
然后就是代码配置DMA To
void DMA_init(void)
{
DMA_InitTypeDef DMA_Initstructure;
// NVIC_InitTypeDef NVIC_Initstructure;
/*开启DMA时钟*/
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMAl,ENABLE);
// /* Enable the DMA1 Interrupt */
// 二 DMAl_Channel4_IRQn; //通道设置为
串口 1中断
// = 1; //中断响应优先级 0
// =1;
// NVIC_Ini tst rue = ENABLE; //打开中断
// NVIC_Init(&NVIC_Initstrueture);
/*DMA 配置*/
= (u32)(&USART1-〉DR);;
= (u32)receive_data;
= DMA_DIR_PeripheralSRC;
= 128;
= DMA_PeripheralInc_Disable;
=DMA_MemoryInc_Enable;
= DMA_Per