浅谈STM32的DMA模块的使用
首先,按照相关的资料提示,建立好项目路径、拷贝库文件和相关必要的文件,并建立一个新工程;还有就是设置好IAR IDE的相关设置。一切准备就绪后就开始修改相关的文档:
ADC模块的启用设置:
DMA模块的启用设置:
USART模块启用的设置:
其他的如flash、GPIO、RCC、NVIC、HSE等就不一一举例,因为这些几乎每个工程都要用到。
再回头看看我的main.c文档,
下图是相关的私有定义
USART的配制如下(9600,8,
DMA的配置如下:
ADC的配置如下图(采用了2路A/D多通道的ADC模式):
给各个模块配置的时钟使能如下图;在此想罗嗦一句就是在这个位置的设置我没有给DMA配置时钟,造成DMA功能无法正常使用,也就是前面所有说的与我原先的编程风格有较大的变化的原因,想说一句:在项目中所使用的所有功能模块都要在此配置时钟才能正常工作。
GPIO的配置
如果有开中断子程序,请在在NVIC中配置,还可以定义每个中断子程序的优先级别,由于我的工程没有用到,在此就不罗嗦了。
我项目应用到的文件目录如下图:
我的项目仿真结果如下;PA0与GND间接了一个1.5V的干电池,其结果是如中ADC_ConvertedValue[0]的值;PA1悬空,未接模拟信号。
我的硬件仿真平台如下2图:红色的是我AVR mega16L
用PC端USART数据采集结果:(图中的显示是我将ADC转换后的值给字符串化了)
ST-link II仿真窗口的测试结果与USART采集到的数据结果差异说明:由于Manley
心得:
2、
3、
4、
STM32DMA模 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)