在上一篇帖子中,波形的生成都是通过DAC读取计算后数组内的电压值,但是STM32自带的波形发生器支持硬件输出方波(PWM)和三角波,可以有效地降低STM32的数据计算量。本帖从F103的数据手册出发,学习如何使用TIM7硬件输出三角波形。
从数据手册中可以看出,硬件三角波形的输出是由DAC_CR寄存器的WAVEx[1:0]位控制,三角波的振幅由DAC_CR寄存器的MAMPx[3:0]决定,三角波的频率由APB1的时钟速率有关,换言之,在时钟主频一定的情况下,硬件生成的三角波频率是固定的(个人理解)。
从上图中可以看出,STM32F1共有两路DAC,以DAC1通道为例,首先将TEN1位置1,使能DAC1的通道触发,而后将WAVE1[1:0]置为10或11,使能生成三角波,而后设置MAMP1[3:0]值,选择三角波的振幅。TSEL1[2:0]用来选择DAC1的触发器,因为使用的是TIM7触发,置010。STM32CubeMX支持HAL与LL库混用,因为涉及寄存器操作,DAC用LL库,方便寄存器的置位操作。硬件的三角波生成大概思路大概就这样了,程序还未测试,晚一些上传。
|