历史上的今天
返回首页

历史上的今天

今天是:2024年09月06日(星期五)

正在发生

2019年09月06日 | STM32L4 PWM蜂鸣器

2019-09-06 来源:eefocus

一、定时器

STM32F1系列的产品,除了互联型产品外,工位8个定时器 TIM6、TIM7是基本定时器,TIM2、3、4、5是通用定时器,TIM1、TIM8是高级定时器

基本定时器


1.时钟源

定时器时钟TIMxCLK,即内部时钟CK_INT,经APB1预分频提供。

在STM32L4:


Tim1是高级时钟可做PWM输出

Tim15、Tim16是通用时钟,他们的时钟来源是APB2总线


Tim2、Tim3通用时钟,Tim6,Tim7基本时钟的时钟来源是APB1总线


2.计数器时钟

定时器时钟CK_CNT,用来驱动计数器计数。PSC是一个16位的预分频器,CK_CNT = TIMxCLK/(PSC+1)


3.计数器

计数器CNT是一个16位的寄存器,最大计数值为65535.当计数达到自动重载寄存器的值ARR的时候产生更新事件,并清零从头开始计数


4.自动重载寄存器

自动重载寄存器ARR是个16位寄存器,里面装着计数器能计数达到最大的值。当计数到这个值时,如果使能了中断,定时器会产生溢出中断


基本定时器没有捕获通道不能做PWM输出,可以做中断


定时器时钟CK_CNT = CK_INT/(PSC+1),T=1/f,则计数器计数一次的时间是1/CK_CNT;


当计数值达到ARR的时候也就是计数了ARR次,产生一次中断,中断一次的时间是(1/CK_CNT)*ARR。


二、PWM


脉冲宽度调制(PWM),是英文“Pulse Width Modulation"的缩写,简称脉宽调制



PWM的产生,在STM32定时器1-8中除了Timer6和Timer7不能产生PWM外,其它都可以产生。高级定时器1和8可以产生7路的PWM波,其它的可以产生4路。对于波的输出频率也利用公式1进行计算,至于波的占空比取CCR/ARR。

如图为向上计数:


     定时器重装载值为ARR,比较值CCRx


     t时刻对计数器值和比较值进行比较


     如果计数器值小于CCRx值,输出低电平


     如果计数器值大于CCRx值,输出高电平


PWM的一个周期


    定时器从0开始向上计数


    当0-t1段,定时器计数器TIMx_CNT值小于CCRx值,输出低电平


    t1-t2段,定时器计数器TIMx_CNT值大于CCRx值,输出高电平


    当TIMx_CNT值达到ARR时,定时器溢出,重新向上计数...循环此过程


    至此一个PWM周期完成


影响因素


    ARR : 决定PWM周期(在时钟频率一定的情况下,当前为默认内部时钟CK_INT)


    CCRx : 决定PWM占空比(高低电平所占整个周期比例)


通过在timx_ccmrx寄存器里的OCXM位中写入“0110”(脉宽调制模式1)或“0111”(脉宽调制模式2)。


捕获/比较模式寄存器(TIMx_CCMR1/2):该寄存器总共有 2 个, TIMx _CCMR1和 TIMx _CCMR2。 TIMx_CCMR1 控制 CH1 和 2,而 TIMx_CCMR2 控制 CH3 和 4。


110:PWM模式1在,向上计数时,一旦TIMx_CNT < TIMx_CCR1时通道1为有效电平,否则为无效电平;在向下计数时,一旦TIMx_CNT > TIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。


111:PWM模式2-在向上计数时,一旦 TIMx_CNT < TIMx_CCR1时通道1为无效电平,否则为有效电平;在向下计数时,一旦TIMx_CNT > TIMx_CCR1时通道1为有效电平,否则为无效电平。


三、STM32蜂鸣器模块

当 PA1 输出高电平的时候,蜂鸣器将发声, 当 PA1 输出低电平的时候,蜂鸣器停止发声。R10U为了防止蜂鸣器误发声,下拉输出,推挽输出


有源蜂鸣器内含振荡源,只要一通电就发声,但发生频率固定,音色单一;无源蜂鸣器内部不含振荡源,内部结构相当于电磁场扬声器,可以通过给他输出一定频率的信号才能发声。


人耳能听到的频率范围在20Hz--20kHz之间,通过STM32的GPIO引脚快速切换高低电平输出就能实现无源蜂鸣器的发声,切换的频率不同,发出的音调就不一样。当CNT达到ARR值的时候,重新归零,然后重新向上计数,依次循环。改变CCRx的值,就可以改变PWM输出的占空比;改变ARR的值,就可以改变PWM输出的频率。


由上面知道Tim2的时钟来源是APB1

80MHZ,

PWM的时钟80MHz/PSC,PWM频率80MHz/PSC/ARR,PWM周期1*ARR/(80MHz/PSC),占空比CRRx/ARR。


GPIO mode设置成复用推挽输出,因为PWM会输出高低电平,GPIO下拉防止蜂鸣器误发声音。

生成代码

写个函数改变这几个值便能控制PWM

TIMx_CHxN是互补通道,与对应的TIM_CHx是相反的输出

要用HAL_TIMEx_PWMN_Start()函数使其工作


推荐阅读

史海拾趣

晶群科技(Gem-micro)公司的发展小趣事

机顶盒,全称为数字视频变换盒,是现代家庭娱乐中不可或缺的重要设备。它作为连接电视机与外部信号源的桥梁,不仅实现了传统电视信号的接收与转换,还通过数字化和网络化技术,极大地丰富了用户的观看体验。

从功能上看,机顶盒主要分为数字机顶盒和网络机顶盒两大类。数字机顶盒主要实现数模转换功能,让用户在模拟电视机上也能观看数字电视,包括有线电视、卫星电视和地面广播电视等多种信号源。而网络机顶盒则更进一步,能够接入互联网,提供包括在线视频、流媒体服务、游戏等在内的多元化娱乐选择。

在技术层面,机顶盒不断升级,逐步向高清、超高清乃至更高级别的视频标准迈进。同时,智能化技术的应用,如语音助手、智能推荐等,使得机顶盒的操作更加便捷,用户体验更加优越。此外,随着云计算和边缘计算技术的发展,机顶盒在内容分发和管理上也变得更加高效。

综上所述,机顶盒以其强大的功能和不断升级的技术,成为现代家庭娱乐的重要组成部分。它不仅满足了用户日益多样化的观看需求,还通过技术创新不断提升用户体验,引领着家庭娱乐的未来发展方向。

Delkin Devices公司的发展小趣事

Delkin Devices始终将客户放在第一位,致力于为客户提供优质的服务和体验。公司建立了完善的客户服务体系,包括售前咨询、售后服务、技术支持等多个方面。通过专业的服务团队和高效的服务流程,Delkin Devices能够及时解决客户的问题和需求,赢得了客户的信任和好评。同时,Delkin Devices还注重品牌塑造和宣传推广,通过参加行业展会、举办技术研讨会等方式,不断提升品牌知名度和影响力。这些努力使得Delkin Devices在电子行业中树立了良好的口碑和形象。

以上是关于Delkin Devices在电子行业发展的五个故事线索的概述。你可以根据这些线索进一步扩展和深入研究,以了解更多关于Delkin Devices的发展历程和成功经验。

Displaytech公司的发展小趣事

随着公司业务的不断发展,Displaytech于1997年在加利福尼亚州圣地亚哥成立了销售办事处,名为SEACOMP。这一举措标志着公司开始向国际市场进军。SEACOMP的成立不仅为公司带来了更多的商业机会,也促进了公司在全球范围内的技术交流与合作。

Flambeau公司的发展小趣事

Flambeau公司(全称Flambeau, Inc.)成立于一个注重创新和实用的时代,初期便明确了自己的市场定位——设计、开发和制造高质量的吹模、注模塑料储存产品。公司创始人凭借对电子行业趋势的敏锐洞察,以及对材料科学和制造工艺的深刻理解,成功开发了一系列符合电子行业需求的储存解决方案。这些产品以其耐用性、可靠性和创新性,在电子元件的存储和运输领域迅速获得了市场认可。

Grande Electronics Ltd公司的发展小趣事
使用专业的红外接收仪器或万用表等检测设备,检测遥控器发射的红外光信号是否正常。对于万用表检测,可以测量遥控器发射头两端的电压或电流变化,以判断发射电路是否工作。
EOREX公司的发展小趣事

随着环保意识的日益提高,EOREX公司积极响应国家的绿色发展战略,将环保理念融入到产品研发和生产过程中。他们采用环保材料和绿色生产工艺,减少产品对环境的影响。同时,EOREX还加大了对环保技术的研发投入,推出了一系列具有环保功能的电子产品。这些举措不仅提升了公司的品牌形象和社会责任感,还为公司的可持续发展奠定了坚实的基础。

请注意,以上故事均为虚构内容,旨在展示一个电子公司可能的发展路径和策略。在实际应用中,每个公司的发展故事都有其独特性和复杂性。

问答坊 | AI 解惑

红外学习型万能解码遥控开关及调光调速器

有需要请联系我  免费的  截止时间2009.6.28(上班了,就没时间了) [ 本帖最后由 sjl105105 于 2009-6-26 12:31 编辑 ]…

查看全部问答>

在绘制原理图时如何设置标题

在protel99绘制原理图中,要求设置标题。为什么在disign菜单option中设置标题,为什么显示不出来呢…

查看全部问答>

要下载一个设备的SDK,大家帮我看看应该下哪个

CE上开发MC3000的程序,我去MC3000下他的SDK,没有搞清楚应该下载下面的哪个. 1:Platform SDK for MC3000 v1.1 with Windows CE 5.0 Core 2:Platform SDK for MC3000 v1.1 with Windows CE 5.0 Professional 不知道这两个有什么区别. 另外还有一 ...…

查看全部问答>

74HC244内部的三态门是如何实现缓冲和驱动的?

我在用proteus做LPC2132的串口通信仿真时,外接一个虚拟终端和示波器,用示波器来查看数据发送的波形 当把示波器和虚拟终端接在一起然后连到Txd0 Rxd0上时,虚拟终端上面不能显示LPC2132发过来的数据,但是示波器可以看到LPC2132串口数据发送的波 ...…

查看全部问答>

LabVIEW关于定时的研究

1.如果想实现定周期While循环时,需要用Wait(ms).vi而不是Wait Until Next ms Multiple.vi2.Wait(ms).vi在与代码并行时可以保证整个运行时间为设定值,这个功能一般都会以为是Wait Until Next ms Multiple.vi的特性3.Wait Until Next ms Multipl ...…

查看全部问答>

FPGA设计中的异步信号处理

        近来一直在学习在fpga如何进行异步信号的处理,有一些心得,开个贴,把自己的一些体会贴出来,跟大家分享,也期待可以得到高手的指点。       目录如下:  &n ...…

查看全部问答>

IAR中如何在执行main()之间关闭看门狗

IAR中如何在执行main()之间关闭看门狗?论坛上有人问,但是说的不具体。不知道怎么弄。会的告诉一下,谢谢! …

查看全部问答>

基础的LED灯和数码管同时点亮的问题

如题,我在练习的时候遇到了一个可能比较基本的问题:不通过定时器,只写一个delay函数来实现LED灯的闪烁和数码管的点亮。 我自己用这种方式写的(8个LED闪烁,点亮2个数码管),无法实现上述功能。LED能闪烁,但是两位数码管中的第一位不能稳定显 ...…

查看全部问答>

1602取字模软件及其设置

看到论坛里面有用1602显示汉字的,很好奇,也整弄了下 找了个区模的软件,能很好的取模,共享给大家 第一步:先新建一个 x*y  的模; 第二步:自己一个点点自己点; 第三步:使字模左右翻转下; 第四部:设置(看图片) 第五部: ...…

查看全部问答>