发新帖我要提问
12
返回列表
打印
[应用相关]

浅谈STM32的DMA模块的使用

[复制链接]
楼主: programmable
手机看帖
扫描二维码
随时随地手机跟帖
21
programmable|  楼主 | 2020-2-10 11:58 | 只看该作者 回帖奖励 |倒序浏览
其他的如flash、GPIO、RCC、NVIC、HSE等就不一一举例,因为这些几乎每个工程都要用到。

再回头看看我的main.c文档,

下图是相关的私有定义

点击看大图

USART的配制如下(9600,8, N,1):

点击看大图

DMA的配置如下:

点击看大图

ADC的配置如下图(采用了2路A/D多通道的ADC模式):

点击看大图

使用特权

评论回复
22
programmable|  楼主 | 2020-2-10 11:58 | 只看该作者
给各个模块配置的时钟使能如下图;在此想罗嗦一句就是在这个位置的设置我没有给DMA配置时钟,造成DMA功能无法正常使用,也就是前面所有说的与我原先的编程风格有较大的变化的原因,想说一句:在项目中所使用的所有功能模块都要在此配置时钟才能正常工作。

点击看大图

GPIO的配置

点击看大图

使用特权

评论回复
23
programmable|  楼主 | 2020-2-10 11:59 | 只看该作者
如果有开中断子程序,请在在NVIC中配置,还可以定义每个中断子程序的优先级别,由于我的工程没有用到,在此就不罗嗦了。

我项目应用到的文件目录如下图:



我的项目仿真结果如下;PA0与GND间接了一个1.5V的干电池,其结果是如中ADC_ConvertedValue[0]的值;PA1悬空,未接模拟信号。

点击看大图

我的硬件仿真平台如下2图:红色的是我AVR mega16L Mini开发板,主要是利用了其中的POWER和RS232

点击看大图

点击看大图

用PC端USART数据采集结果:(图中的显示是我将ADC转换后的值给字符串化了)

点击看大图

ST-link II仿真窗口的测试结果与USART采集到的数据结果差异说明:由于Manley 的stme32 Mini-kit评估板套件无法给ADC和USART同时组合仿真,我是分别分开仿真和USART数据传输的,所以出现差异。

使用特权

评论回复
24
programmable|  楼主 | 2020-2-10 11:59 | 只看该作者
心得: 1、这次学习STM32的MCU,最大的心得是改变我原有的编程思维,原来学习AVR的时候,文件库需要自己写,属于底层操作,如要自己写直接操作各外设的寄存器,复杂的还需要自己写设置函数,对底层要有非常的清楚的认识,编写的代码的工作量也比较大;稍有不慎,容易把寄存器弄错;调试也会花费较大的时间。而STM32的编程风格给我一个全新的视角(哈哈!别拍砖,虽然属菜鸟级别,但比较容易接受新的东西),感觉只要按其提供的资料建立起工程的基本构架,很多都是ST公司提供封装好的接口(类似windows的API),直接调用接口和做少许修改就可以完成你想要的工程结果。

2、 清晰的工程构架:ST提供一些工程案例的基本构架,只要熟悉这些构架,对构架做一些适当的修改,你将很轻松的完成你的任务,开发周期也可以缩短很多。请记住:牢记工程构架;

3、 哈哈!不想罗嗦的是STM32的速度和丰富的外设。(再罗嗦可能会被成批的砖头拍死,哈哈哈哈!)

4、 更有信心用STM32做其他更复杂一些的项目。祝大家好运!(别拍砖头呀!哈哈!)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则