打印
[STM32F4]

基于HAL库的STM32F4的 单通道ADC+DMA

[复制链接]
1354|48
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yutingwei|  楼主 | 2023-10-29 01:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
AD, ADC, DM, DMA, ST

如何用STM32F407对于单通道ADC-DMA进行配置。

实验板子:STM32F407VET6

基础配置
  • SYS配置
  • Dubug这个选项我们选择Serial Wire ,我这用的是ST-LINK下载器,如果你们使用的其他下载器,比如JTAG,则选择其他的。

使用特权

评论回复
沙发
yutingwei|  楼主 | 2023-10-29 01:48 | 只看该作者
2.RCC配置

使用特权

评论回复
板凳
yutingwei|  楼主 | 2023-10-29 01:48 | 只看该作者
对于高速时钟和低速时钟我们都选择上面的选项,这样之后的时钟树才能配置,否者后面的时钟树配置会无法配置。

使用特权

评论回复
地板
yutingwei|  楼主 | 2023-10-29 01:48 | 只看该作者
3.USART配置

使用特权

评论回复
5
yutingwei|  楼主 | 2023-10-29 01:48 | 只看该作者
串口的Mode选择异步通讯,波特率我一般选的是115200,你选9600也没问题,但你的这的波特率要和串口助手上的波特率相对应,否者也可能出不来值。

使用特权

评论回复
6
yutingwei|  楼主 | 2023-10-29 01:48 | 只看该作者
ADC的配置
1、ADC配置

使用特权

评论回复
7
yutingwei|  楼主 | 2023-10-29 01:48 | 只看该作者
Data Alignment : 对齐模式,可选左对齐和右对齐,一般选择右对齐模式

1、Conversion Mode:扫描转换模式是否开启

2、Continuous Conversion Mode:连续转换模式是否开启

3、Discontinuous Conversion Mode:不连续转换模式 是否开启

4、DMA Continuous Selection :DMA 连续选择 。 因为我使用的是DMA所以这里需要打开。

5和6、External Trigger Conversion Source:触发开始转换事件选择:这里我选择定时器3作为触发开始,触发方式选择上升沿作为触发方式

使用特权

评论回复
8
yutingwei|  楼主 | 2023-10-29 01:49 | 只看该作者
MA的配置

使用特权

评论回复
9
yutingwei|  楼主 | 2023-10-29 01:49 | 只看该作者

使用特权

评论回复
10
yutingwei|  楼主 | 2023-10-29 01:49 | 只看该作者
3、定时器3的配置

使用特权

评论回复
11
yutingwei|  楼主 | 2023-10-29 01:49 | 只看该作者
在Clock Source 选择内部时钟(interal Clock),紧接着是预分频系数和计数周期
采样率=84M/(PRC+1)(ARR+1),TIMER3挂在APB2上,APB2的时钟频率是84MHZ.
当你需要什么样的采样率可以自己去设置,有个前提,PRC和ARR不能同时为0,选择更新事件作为触发事件.
我这里配置的采样率是100K。

使用特权

评论回复
12
yutingwei|  楼主 | 2023-10-29 01:49 | 只看该作者
时钟树配置

使用特权

评论回复
13
yutingwei|  楼主 | 2023-10-29 01:49 | 只看该作者
我所使用的是STM32F407vet6,最高主频168MHZ,我们直接把性能给他拉满,在红框内输入168回车就行了,后面的他会自动帮你配好分频系数等等。

使用特权

评论回复
14
yutingwei|  楼主 | 2023-10-29 01:49 | 只看该作者
代码生成

使用特权

评论回复
15
yutingwei|  楼主 | 2023-10-29 01:50 | 只看该作者

使用特权

评论回复
16
yutingwei|  楼主 | 2023-10-29 01:50 | 只看该作者
这里1和2,都可以选,但是选1是复制所有的文件目录,所以每个文件都比较大,选2的话,只保留重要文件目录,文件不会太大。我一般会选择2,因为这样每个工程的大小不会太大,不会太占内存。3的配置就跟上面的一样。

使用特权

评论回复
17
yutingwei|  楼主 | 2023-10-29 01:50 | 只看该作者
之后生成.c文件就行了。

使用特权

评论回复
18
yutingwei|  楼主 | 2023-10-29 01:50 | 只看该作者
代码编写

使用特权

评论回复
19
yutingwei|  楼主 | 2023-10-29 01:50 | 只看该作者
之后在main.c中添加#include "stdio.h"就行了

使用特权

评论回复
20
yutingwei|  楼主 | 2023-10-29 01:50 | 只看该作者
在main函数之前先定义一个16位变量(在使用ADC_DMA时那个变量必须是16位的,之前这个变量写的32位的,结果一直没出来,最后debug出来的,花了很多的时间

使用特权

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

本版积分规则

36

主题

358

帖子

0

粉丝