[无勇者孤勇者孤勇者]STM32CubeMx使用教程(五)——使用PWM控制蜂鸣器演唱孤勇者

本段落将传授如何采用STM32CubeMx实用性计时器,并采用PWM掌控无源开关振幅弹奏

1.应用软件预备:STM32CubeMx、Keil5_?MDK

2.硬体预备:STM32F103最轻控制系统板、无源开关组件、强生线若干个

本后处理采用的大部份电子元件目录和工程建设源代码已上载至玒盘

镜像:http://pan.baidu.com/s/11HC05dnI-CEzDaU9OL2ugA?pwd=80o8?

抽取码:80o8

?总的来看为开关电阻。

通常来说,3.3V三相产生的电脉冲输出功率极小,足以驱动力开关收到可听到的声响,因此整座组件两个电阻弱化组件,这即是图中的固体真空管。图中的弱化电阻是众所周知的共发射极三相,开关接在基极上,就实现了电阻的弱化(详尽的电固体弱化电阻基本上概念请见《演示电子学》)

开关分成无源和无源三种。简而言之的源,指的是其中外部的共振源,无源开关中的放大器通常是多谐放大器,其基本上概念就是演示电阻中RC放大器的通常基本上概念(弱化电阻、负反馈、差值90°、保险丝电阻),无源开关外部的共振源振幅是一般来说的,因此采用时不容中波,且输出的电脉冲要是三相。

相对而言,无源开关没外部共振源,表达意见的基本上基本上概念是电磁学,其外部的基本上内部结构是一匝匝导体以及两个小型音箱。由于没共振源,且外部的主要内部结构是导体,因此其工作时输出的电脉冲要是沟通交流,而无法是振幅较低的三相(三相无法通过无阻抗的导体,负责管理导体会因为漏电而被坏掉)。与无源开关一样,无源开关也要采用弱化电阻来减小输出讯号的输出功率。

脉冲宽度调制(PWM) 是一种数字讯号,最常用于掌控电阻。该讯号在预定义的时间和速度中设置为高(5v或3.3v)和低(0v)。通常,我们将PWM的高电平称为1,低电平为0。

PWM主要有?PWM振幅(f)、?PWM周期(T)、?PWM占空比等参数。

PWM振幅:是指一秒钟内从高电平时间在到低电平时间,再从低电平跳到高电平的瞬间次数,也就是一秒钟内有多少个PWM的周期。f = T / 1(HZ)。

PWM周期:是指一秒钟内从高电平时间在到低电平时间,T = f / 1(s)。

?PWM占空比:是指两个周期内高电平时间和总时间的比值。

例如:PWM的周期为1ms,高电平时间为0.5ms,低电平时间为0.5ms,则振幅就为1kHz,占空比就为百分之五十。

总的来看,为示波器

pwm的调节作用来源于对占周期的宽度掌控,占周期变宽,输出的能量就会提高,通过阻容变换电阻所得到的平均电压值也会上升,占周期变窄,输出的电压讯号的电压平均值就会降低,通过阻容变换电阻所得到的平均电压值也会下降

也就是,在一定的振幅下,通过不同的占空比即可得到不同的输出演示电压,由此,我们可以通过掌控PWM输出振幅掌控开关收到不同音调。

总的来看为不同音调对应的振幅,我们通过修改计时器psc即可修改不同振幅对应的音调。

?

为计算所得产生中断周期,其中为自动重装载值,为预分频,为对应时钟振幅。

若要使音调对应计时器振幅,以低音DO为例,将?带入上述公式,即可求出的值,修改不同的对应不同的音调。?

由计时器周期计算公式我们可知,Tclk为计时器挂靠时钟总线振幅,arr为设定计时器自动重装载值,f已知为不同音调振幅,图中dao振幅为262,通过计算得出psc赋给计时器以获得不同音调。

将大部份音调计算出来,放在.h文件宏定义。

(一)音调

音阶分成中音、高音、低音,点在上面为高音,没点为中音,点在下面为低音

(二)音长

简谱对应音阶下无横线为一拍,有单横线为半拍,双横线为1/4拍。音阶数字后有点加半拍音长,有横线加一拍。

五、程序实现

本次实验同样通过STM32CubeMx实现,

打开之前创建的工程建设

设置psc和arr,因为本次实验是通过修改psc掌控计时器振幅,因此初始化psc的值可任意?,arr的值会影响到占空比的大小,通常设置为1000,方便自己计算即可。

?设置占空比为50%,其余设置保持默认即可。设置完成后生成代码。

根据音调表对应振幅宏定义音调

?到此为止,底层基本上书写完毕,接下来就是寻找歌曲简谱,实现功能

这里推荐乐谱查询网址陈奕迅《孤恶龙》吉他谱_G调吉他弹唱谱_高清六线谱_玩吉他 (wanjita.com)

?对应音调编写以下代码

《孤恶龙》

《起风了》?

可以打开视频看到演示效果?

发布于 2022-09-22 23:09:41
收藏
分享
海报
0 条评论
43
目录

    推荐阅读

    0 条评论

    请文明发言哦~

    忘记密码?

    图形验证码