DMA配置

落日映苍穹つ 2021-12-22 13:35 385阅读 0赞
  1. DMA可以认为连接两个“地址”数据通道。DMA共享系统总线,不占用CPU,所以可以实现快速数据传输。
  2. 这里以DMA连接存储器(数组)和串口(USART1->DR)为例。
  3. 1 void DMA_init(void)
  4. 2 {
  5. 4 RCC->AHBENR|=1<<0;//时能DMA1时钟
  6. 5
  7. 7 DMA1_Channel4->CPAR=(u32)&USART1->DR;//读外设串口数据寄存器
  8. 8 DMA1_Channel4->CMAR=(u32)tbuff;//存储器地址为temp地址
  9. 9 DMA1_Channel4->CNDTR=10;//一次接收字节数DMA_BUFF_SIZE
  10. 11 //DNA->CCR配置
  11. 12 DMA1_Channel4->CCR=0x00000000;//复位DMA
  12. 13 DMA1_Channel4->CCR|=0<<14;//非存储器到存储器模式
  13. 14 DMA1_Channel4->CCR|=1<<12;//13,12设置通道优先级
  14. 15 DMA1_Channel4->CCR|=0<<10;//10,11存储器数据宽度
  15. 16 DMA1_Channel4->CCR|=0<<8;//9,8外设数据宽度8位
  16. 17 DMA1_Channel4->CCR|=1<<7;//存储器地址增量模式
  17. 18 DMA1_Channel4->CCR|=0<<6;//外设地址增量模式
  18. 19 DMA1_Channel4->CCR|=0<<5;//循环模式
  19. 20 DMA1_Channel4->CCR|=1<<4;//数据传输方向0:从外设读,即从外设到存储器 1:从存储器读,即从存储器到外设
  20. 21 DMA1_Channel4->CCR|=0<<3;//允许传输错误中断
  21. 22 DMA1_Channel4->CCR|=0<<2;//允许半传输中断
  22. 23 DMA1_Channel4->CCR|=0<<1;//允许传输完成中断
  23. 24 DMA1_Channel4->CCR|=0<<0;//通道开启
  24. 25 }
  25. 28 int main(void)
  26. 29 {
  27. 31 Stm32_Clock_Init(9); //系统时钟设置
  28. 32 delay_init(72); //延时初始化
  29. 33 uart_init(72,9600); //串口初始化为9600
  30. 34 LED_Init(); //初始化与LED连接的硬件接口
  31. 35 DMA_init();
  32. 36 LED0=0;
  33. 37
  34. 38 USART1->CR3|=1<<7;//记得要把串口配置为DMA使能,否则DMA不会工作
  35. 39 while(1)
  36. 40 {
  37. 41
  38. 42 DMA1_Channel4->CCR&=~(1<<0);
  39. 43 DMA1_Channel4->CNDTR=10;
  40. 44 DMA1_Channel4->CCR|=1<<0;
  41. 45
  42. 46 while(1)
  43. 47 {
  44. 48 if(DMA1->ISR&(1<<13))
  45. 49 {
  46. 50 delay_ms(100);
  47.         LED0=~LED0;
  48. 51 DMA1->IFCR|=1<<13;
  49. 52 break;
  50. 53 }
  51. 54 }
  52. 55 }
  53. 56 }

转载于:https://www.cnblogs.com/skeyzero/p/3242637.html

发表评论

表情:
评论列表 (有 0 条评论,385人围观)

还没有评论,来说两句吧...

相关阅读

    相关 DMA

    [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RzMT...

    相关 DMA技术

    先总结: DMA是指外部设备不通过CPU而直接与系统内存交换数据的接口技术 主要工作是由DMA控制器来完成的. 下面开始正文 \-------------------

    相关 DMA的基本操作

    1.从外围设备发送DMA请求 2.CPU接受响应后,把CPU工作改编成DMA操作方式,DMA控制器接管CPU对总线的控制 3.由DMA控制器对对内存寻址,即决定数据传送

    相关 DMA

    DMA(Direct Memory Access,直接内存存取) DMA 传输将数据从一个地址空间复制到另外一个地址空间。当CPU 初始化这个传输动作,传输动作本身是由 DM

    相关 DMA小结

    DMA分为两大类,总线主DMA驱动(利用PCI卡上的DMA控制器),从属DMA驱动(利用主板上的DMA控制器,例如软盘控制器,这类基本被淘汰)。这两类驱动每种又可以分为基于包的

    相关 DMA配置

    DMA可以认为连接两个“地址”数据通道。DMA共享系统总线,不占用CPU,所以可以实现快速数据传输。 这里以DMA连接存储器(数组)和串口(USART1->DR

    相关 DMA之理解

    1、DMA由来 DMA(Direct Memory Access,直接存储器访问)。在DMA出现之前,CPU与外设之间的数据传送方式有程序传送方式、中断传送方式。CPU是