5.5.3PWM编程实例—电子音乐

在这里插入图片描述
我们产生什么频率的脉冲信号,蜂鸣器就会得到不同频率的声音。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
不同频率和不同时间长度构成的二维数组
在这里插入图片描述
要分四个模块完成问题
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发生一次时间中断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值