我们产生什么频率的脉冲信号,蜂鸣器就会得到不同频率的声音。
不同频率和不同时间长度构成的二维数组
要分四个模块完成问题
1第一步骤PWM模块有基本的时钟,是20.97M除以128得到一个频率大概百k的量级,所以define成了一个宏在代码第一句
2以时钟为单元进行计数,会设置一个计数器的值,决定当前模块所对应引脚的周期,周期被寄存器决定了反过来就决定了评率,得到周期应该是TPM时钟,这个百KHZ的时钟,与目标频率相除的商。所以我们用我们输入时钟的频率除我们想要的频率例如523得到的值取整应该是我们给周期寄存器,或者是MOD寄存器未来要设定的值。决定了PWM模块输出信号的频率。
3把功能封装成子程序来方便主程序的调用。右侧一个是TPM或PWM的init的初始化,配置时钟打开,配置时钟源,配置引脚给PWM模块用。配置TPM模块的初始寄存器
在这里第二个函数c4v设置成了一半占空比一直是一半,可能会对声音的音量产生影响
3将曲谱改为能被c语言读取的数据结构,上面一个是频率,下面是音长
4在这里配置时钟中断函数,1/8发生一次时间中断。
5.5.3PWM编程实例—电子音乐
最新推荐文章于 2024-02-19 10:31:28 发布