目录
一、参考示例
二、配置参数
1.配置DAC
2.配置TIM3
三、代码修改
四、查看结果
DAC模块自带的硬件波形发生器只有三角波(Triangle wave)和 (Noise wave)两种。此外,如果配置了Trigger2参数,在波形发生模式中就出现(并且仅出现)锯齿波的选项(Sawtooth wave)。这些硬件自带的波形发生器也很容易使用。不过输出波形的频率是与输出幅值相关联的,虽然也可以受定时器控制,但频率调整不太方便。
一、参考示例
本项目依赖的软件和硬件工程参考本文作者写的文章:细说MCU用DMA实现DAC输出的方法-CSDN博客 https://wenchm.blog.csdn.net/article/details/140655500http://xn--https-rfa//wenchm.blog.csdn.net/article/details/140655500 本文仅表述与参考文件不一样的工程配和代码修改。
二、配置参数
1.配置DAC
配置DAC1,将OUT1模式(OUT1mode)选择为Connected to external pin only,也就是将DAC1的输出通道1连接到外部引脚,该引脚为PA4。因为要用定时器来触发DAC,所以将其中的Trigger选择为Timer 3 Trigger Out event。将Wave generation mode选择为Triangle wave generation,Maxium Triangle Amplitude选择为4095。
2.配置TIM3
在TIM3模式和配置界面中,先将模式(Mode)的时钟源(Clock Source)选择为内部时钟(Internal Clock);在定时器设置(Counter Settings)区,将预分频因子(Prescaler)设置为0,计数器周期(Counter Period)设置为169。由于配置了用TIM3来触发DAC,所以在定时器的触发事件选择(Trig-ger Event Selection TRGO)列表框中要选择Update Event。定时器的事件更新频率为170*10^6/ ((0+1)(169+1))=1MHz。
其它参数配置与参考文件相同。
三、代码修改
在while(1)前面添加的初始化代码中,做如下修改:
/* USER CODE BEGIN 2 */
HAL_TIM_Base_Start(&htim3);
HAL_DACEx_TriangleWaveGenerate(&hdac1,DAC_CHANNEL_1,DAC_TRIANGLEAMPLITUDE_4095);
HAL_DAC_Start(&hdac1,DAC_CHANNEL_1);
/* USER CODE END 2 */
开启定时器的初始化语句是HAL_TIM_Base_Start(),初始化三角波发生器的语句是HAL_DACEx_TriangleWaveGenerate()和启动DAC的语句HAL_ DAC_Start()。其中HAL_DACEx_TriangleWaveGenerate()的最后一个参数就是控制三角波输出电压幅值的,这里给的是最大值。常量DAC_TRIANGLEAMPLITUDE_4095在库函数文件stm32g4xx_hal_dac_ex.h中定义。
四、查看结果