您现在的位置: 主页 > MCU > 单片机技术应用 > STM32的DMA配置 -
本文所属标签:
为本文创立个标签吧:

STM32的DMA配置 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-06 

[导读]DMA可以认为连接两个“地址”数据通道。DMA共享系统总线,不占用CPU,所以可以实现快速数据传输。这里以DMA连接存储器(数组)和串口(USART1->DR)为例。1 void DMA_init(void)2 {4 RCC->AHBENR|=1DR;//读外设串口数据

DMA可以认为连接两个“地址”数据通道。DMA共享系统总线,不占用CPU,所以可以实现快速数据传输。

本文引用地址: http://www.21ic.com/app/mcu/201809/783761.htm

这里以DMA连接存储器(数组)和串口(USART1->DR)为例。


1 void DMA_init(void)

2 {

4 RCC->AHBENR|=1<<0;//时能DMA1时钟

5

7 DMA1_Channel4->CPAR=(u32)&USART1->DR;//读外设串口数据寄存器

8 DMA1_Channel4->CMAR=(u32)tbuff;//存储器地址为temp地址

9 DMA1_Channel4->CNDTR=10;//一次接收字节数DMA_BUFF_SIZE

11 //DNA->CCR配置

12 DMA1_Channel4->CCR=0x00000000;//复位DMA

13 DMA1_Channel4->CCR|=0<<14;//非存储器到存储器模式

14 DMA1_Channel4->CCR|=1<<12;//13,12设置通道优先级

15 DMA1_Channel4->CCR|=0<<10;//10,11存储器数据宽度

16 DMA1_Channel4->CCR|=0<<8;//9,8外设数据宽度8位

17 DMA1_Channel4->CCR|=1<<7;//存储器地址增量模式

18 DMA1_Channel4->CCR|=0<<6;//外设地址增量模式

19 DMA1_Channel4->CCR|=0<<5;//循环模式

20 DMA1_Channel4->CCR|=1<<4;//数据传输方向0:从外设读,即从外设到存储器 1:从存储器读,即从存储器到外设

21 DMA1_Channel4->CCR|=0<<3;//允许传输错误中断

22 DMA1_Channel4->CCR|=0<<2;//允许半传输中断

23 DMA1_Channel4->CCR|=0<<1;//允许传输完成中断

24 DMA1_Channel4->CCR|=0<<0;//通道开启

25 }


28 int main(void)

29 {

31 Stm32_Clock_Init(9); //系统时钟设置

32 delay_init(72); //延时初始化

33 uart_init(72,9600); //串口初始化为9600

34 LED_Init(); //初始化与LED连接的硬件接口

35 DMA_init();

36 LED0=0;

37

38 USART1->CR3|=1<<7;//记得要把串口配置为DMA使能,否则DMA不会工作

39 while(1)

40 {

41

42 DMA1_Channel4->CCR&=~(1<<0);

43 DMA1_Channel4->CNDTR=10;

44 DMA1_Channel4->CCR|=1<<0;

45

46 while(1)

47 {

48 if(DMA1->ISR&(1<<13))

49 {

50 delay_ms(100);

        LED0=~LED0;

51 DMA1->IFCR|=1<<13;

52 break;

53 }

54 }

55 }

56 }




              查看评论 回复



 

"STM32的DMA配置 -"的相关文章

网站地图

围观()