本程序的时钟配置为HSE=8M,PLL=144M,AHB=144M,APB1=36M,APB2=72M,DAC CLK=36M,TIM4 CLK=72M,DMA CLK=144M
代码参考了国民技术的官方例子,DoubleModeDMASineWave。
该例子验证了N32的DAC和DMA功能,由TIM4定时器触发DAC转换。
我的代码执行流程:
1.计算出一个正弦波序列,长度为n;
2.设置输出的正弦波信号的幅度和偏置电压,以及频率;
3.根据正弦波参数和初始正弦波序列,计算出交给DAC转换的序列,其中的每一个值为12bit;
4.设置单片机的DAC、DMA和TIM4,其中定时器TIM4的周期和分频根据正弦波频率f计算得出;
5.输出正弦波。
在代码里还设计了一个根据输出信号频率调整输出序列点数的功能,在保证信号波形完整的情况下,减少内存空间占用,也有利于输出高频信号。
|