一、RCC时钟配置8 g( I6 G& o- D( y0 S3 G
b: o6 t x6 u- | 3 r) J$ V( z9 @! }+ V0 o; o 该函数位于在bsp.c文件下面; 使能RCC时钟:RCC_APB1Periph_DAC2 q c2 [" y* g' I/ B6 i5 j2 q 这里DA的时钟不像AD有AD1、AD2等,DA是共用时钟,所以调用接函数的时候一定要区分DA1和DA2开来。 # S/ s8 ^4 W2 S# c 二、引脚配置 - I' G7 z' i# o; _1 m* C
4 k- x1 d' @" l! e 该函数位于在dac.c文件下面; 对DA通道1所使用的引脚进行配置。 3 g K" G0 k/ m: [: h X 注意:8 ?5 r$ @2 a: u0 b3 W4 _ 这里的DAC_OUT1引脚是固定对应的PA4的,一旦启动DA1功能,这个引脚就用于DAC功能了。 % v! d- g3 e$ H- G' a 三、DAC配置
% N, X0 z* M8 m8 n) _ 该函数位于在dac.c文件下面;6 T0 T& x; ]# I% s 对DA进行配置。2 |# d7 y) W5 ?& B B# e 2 t4 \( e7 P' H5 M 配置的每一条语句都有注释,请看源代码.. P- z! P/ X$ g. W 4 {& Y! W3 }2 j0 W; S 四、输出电压! y/ G7 J+ Y: F$ H& t F' i- D* r* q
该函数位于在dac.c文件下面;% W- W: D8 E# d6 r- V+ H% P 调用这个接口就可以在PA4引脚上输出相应的电压值(注意这个接口适用于参考电压为3.3V的情况下,若参考电压改了,换算的公式也要对应改,看源代码的人都应该知道怎么修改)。4 G1 T' o2 ]! ~3 y# }# X3 Q W2 q 这里是使用软件出发转换,后期会使用其他方法触发。 2 X$ g* W4 |1 f0 j3 g- n2 Z 五、主函数应用+ i2 z% H- k" K; }2 t2 t( @6 j
! S4 D# ?+ `8 }2 Q4 U 该函数位于在main.c文件下面; 主要就是在上电配置DA,并让其在PA4引脚上输出1.5V的电压。# o: F$ T+ U8 L% R! e ; E2 b& l5 N5 e' z7 N5 u 可以看到现象:间隔500ms,LED变化,串口打印出字符串。 . r0 c2 y, e5 w ^5 P% t. o 六、今天的重点提示 A.DA1和DA2的配置基本一样; # P1 N/ B0 O: d/ } B.为了避免寄生的干扰和额外的功耗,引脚PA4或者PA5在之前应当设置成模拟输入(AIN),因此在引脚配置的地方配置为:GPIO_Mode_AIN。 ———————————————— 版权声明:马少爷# B/ |! e: C4 K1 U 如有侵权请联系删除8 O s$ P1 @' l8 u! h ( W& f2 |4 R+ r4 J* l! Q / G# F: O, R+ u! n$ C" ]# y+ f$ n |
经验分享 | 通过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应用演示
微信公众号
手机版