一、RCC时钟配置
该函数位于在bsp.c文件下面;2 p8 O, V7 k" U7 G, s 4 n% o7 n8 D0 C6 V6 y9 `$ E# m 使能RCC时钟:RCC_APB1Periph_DAC 这里DA的时钟不像AD有AD1、AD2等,DA是共用时钟,所以调用接函数的时候一定要区分DA1和DA2开来。 4 d5 T4 I) ~1 d1 V# \9 i 二、引脚配置, x C0 X6 w$ U
6 b& S; b6 O- h7 f1 Y$ _+ a; A 该函数位于在dac.c文件下面; 对DA通道1所使用的引脚进行配置。" p! ~: f- P: X( s7 b+ V# M+ @ 1 i5 s" e8 C2 j( X& M* w# R% I* e& s 注意: 这里的DAC_OUT1引脚是固定对应的PA4的,一旦启动DA1功能,这个引脚就用于DAC功能了。 7 C$ Y8 |1 v1 N% Q( t5 W1 ` 三、DAC配置" F* j2 Y) f6 |" n: B/ j7 ]
该函数位于在dac.c文件下面; 对DA进行配置。1 g( e! H3 a, y2 c 配置的每一条语句都有注释,请看源代码.5 k& z5 N8 w1 Q* d$ c # ?1 }4 G$ i! _; G4 k7 O ! s$ @7 x9 [/ c3 _* } 四、输出电压
1 H. |. i" O- l; }4 O/ G0 H4 w4 c9 Y 该函数位于在dac.c文件下面;" J2 ^% G& N4 Z# E/ n; r; x $ s3 B: V9 G; c: q 调用这个接口就可以在PA4引脚上输出相应的电压值(注意这个接口适用于参考电压为3.3V的情况下,若参考电压改了,换算的公式也要对应改,看源代码的人都应该知道怎么修改)。 + W6 e, T, u8 Y; D 这里是使用软件出发转换,后期会使用其他方法触发。 ; q" S3 M$ p2 _2 D- t' F! y 五、主函数应用 5 {+ z$ A6 _6 p' {% I2 p/ B* R
1 G. A- v$ y+ H 该函数位于在main.c文件下面; 主要就是在上电配置DA,并让其在PA4引脚上输出1.5V的电压。 ' A" J: a" c/ `5 m H6 W6 X 可以看到现象:间隔500ms,LED变化,串口打印出字符串。 六、今天的重点提示3 o3 ]2 h) Q5 W8 x& |6 R A.DA1和DA2的配置基本一样; . s) ^! [$ h; `3 H3 r% H7 F B.为了避免寄生的干扰和额外的功耗,引脚PA4或者PA5在之前应当设置成模拟输入(AIN),因此在引脚配置的地方配置为:GPIO_Mode_AIN。- m! T, W1 u0 s ———————————————— 版权声明:马少爷 如有侵权请联系删除 $ e U: S* h( [, x, \0 E3 ^. K U" A0 P9 V. F/ u$ ? |
经验分享 | 通过STM32 TIMER的PWM功能模拟输出正弦波
STM32H563 ADC+TIM+DMA应用演示
经验分享 | STM32N6 ADC DMA 传输失败案例分享
实战经验 | MC SDK V6.x软件HSO功能ADC采样设计说明
经验分享 | 为什么重启ADC的DMA传输要先停掉ADC?
经验分享 | 为什么重启ADC的DMA传输要先停掉ADC?
经验分享 | STM32 ADC过采样话题
经验分享 | STM32双定时器+ADC+DMA实战案例
经验分享 | STM32U5系列TIMER+DMA+DAC应用演示
经验分享 | 基于STM32片内信号的ADC应用演示
微信公众号
手机版