资讯动态

STM32F407寄存器操作(DAC输出预设波形,三角波,噪声波)

发布时间:2026/10/7 1:56:28 来源:尧图企业网站定制
1.前言最近打算把STM32F407的模拟系统再研究研究于是先看了看DAC系统。总的来说DAC系统前面研究的已经比较完善了。看了看手册发现DAC自带两种输出波形——三角波噪声波。2.三角波理论我们先看一下手册上对这一段的描述需要关注的有四个寄存器CR寄存器中的WAVEMAMP然后是数据DHR和DOR寄存器我们看到寄存器描述WAVE在CR寄存器的第6-7位给2或3输出三角波然后是MAMP寄存器在8-11位这部分怎么理解呢我们看数据手册我们输出波形收到MAMP和DHR的影响DHR给基值WAVE给幅值。假如DHR给0WAVE给1001那么我们DAC输出就在0~1023间变化。然后是DOR寄存器这个寄存器是DAC实际输出的寄存器是只读的此外要注意一下配置顺序3.三角波程序void init_dac1_triangle(void) { GPIOA-MODER|38;//PA4模拟输入 GPIOA-PUPDR|28;//PA4下拉模式 DAC-CR|10;//使能DAC1通道 DAC-CR|12;//DAC1通道触发使能 DAC-CR|73;//配置为软件触发 DAC-CR|108;//振幅为1023 DAC-CR|26;//DAC1生成三角波 }我这里是初始值为0幅值是1023我在主程序里面写死软件触发就是连续搬运不管其他的了4.输出波形可以看到波形还是不错的但是底部略有失真我们可以给初始值保证波形更好看一点我们把输出幅值改为511可以看到输出的三角波幅值确实有变化了但是明显波形不好看了5.噪声波理论然后我们再看一下手册上关于生成噪声波的要求与三角波程序类似唯一区别在于WAVE置01即可5.噪声波程序void init_dac1_noise(void) { GPIOA-MODER|38;//PA4模拟输入 GPIOA-PUPDR|28;//PA4下拉模式 DAC-CR|10;//使能DAC1通道 DAC-CR|12;//DAC1通道触发使能 DAC-CR|98;//振幅为511 DAC-CR|73;//配置为软件触发 DAC-CR|16;//DAC1生成噪声波 }噪声波的程序与三角波类似仅需要改变CR寄存器的第6位6.输出波形我这里把示波器暂停大家看一下波形7.结语总的来说使用DAC输出这两个预设波形还是比较简单的程序也没有多复杂。我这里因为只是测试所以用的软件触发这里也可以使用定时器或其他外部设备作为触发源使用方法和前面说的定时器触发DAC是一样的。相较而言使用DMA传输到DAC的好处是数值较为随意而且可以输出任意波形但是使用预设的波形好处在于整个流程较为省心定时器一开就不烦神了。那么好的大家有什么需要可以自取我们下面就正式开始ADC的高级课程了我们下篇文章见。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑