一、定时器

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()函数使其工作


关键字:STM32L4  PWM  蜂鸣器 引用地址:STM32L4 PWM蜂鸣器

上一篇:STM32 ADC多通道采样声音传感器和环境光传感器
下一篇:STM32L4系列 ADC基本原理

推荐阅读

据报道,2016年夏天,一批智能养老机器人入驻杭州市社会福利中心,这5个身高0.8米、体重15公斤的新“保姆”被老人们亲切地称之为“阿铁”。会唱歌、能跳舞,还可以简单会话,“阿铁”一度成为福利中心老人们的开心果。 近日,记者到杭州市社会福利中心回访,却发现 “阿铁”闲置在阳台上。沈云瑛老人告诉记者,“很久都没有用它了。” “‘阿铁’不...
随着IFA 2019大展的临近,近日有德国记者在场馆附近拍到了不少华为布置的宣传海报。海报中大方确认了两款新配色且预装Android 10系统的P30 Pro手机,以及麒麟990系列芯片。华为海报显示,麒麟990 5G将是全球第一款基于7nm FinFET Plus EUV工艺的5G处理器芯片,同时这款5G芯片是在一颗芯片中同时封装了AP(应用处理器)和BP(基带处理器),也就是集...
企查查 App 显示,今日,小米科技有限责任公司公开一项名为 “屏蔽来电的方法及装置”的发明专利,申请日为 2014 年 10 月 29 日,申请号为 CN201410594119.6,公开号为 CN105635414B,目前已获得授权。  IT之家了解到,根据描述,这是关于一种屏蔽来电的方法及装置,涉及通信领域。该项专利 “解决了当有被标记的陌生电话呼入时...
具体实现功能具体功能:(1)液晶第一行显示实际湿度,液晶第二行显示当前时间;(2)按键说明:减键、加键、设置键;(3)可以设置湿度上下限报警范围,具有掉电保存功能,上电无需重新设置;(4)当湿度低于下限值时,打开水泵(风扇开始转动)进行抽水且声光报警,当湿度高于上限值时,自动关闭水泵停止抽水。单片机介绍51单片是一种低功耗、高性能CMOS...

史海拾趣

问答坊 | AI 解惑

关于TO-220封装的可控硅引脚之间的距离的困惑

TO-220封装的可控硅,比如:BTA12,很普遍的可控硅,A1,A2两个引脚间的中心距离是2.4—2.7mm,边缘的距离大约是1.8mm,焊到PCB上后,两个焊盘的边缘的距离就更小了,可能只有1mm.当可控硅不导通的时候,两个引脚之间的电压差应该是220V,看到很多讲电气间隙和 ...…

查看全部问答∨

求一份基于51单片机数字钟的论文

有的大大发我个哈 zhanghongfu006@163.com谢谢…

查看全部问答∨

几种PWM控制方法i

采样控制理论中有一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同.PWM控制技术就是以该结论为理论基础,对半导体开关器件的导通和关断进行控制,使输出端得到一系列幅值相等而宽度不相等的脉冲,用这些脉冲来代替正弦 ...…

查看全部问答∨

GPRS模块用AT指令实现打电话,但是耳麦没有声音

我们采用ARM控制GPRS模块,用对应的AT指令实现打电话功能,在插入SIM卡后,如果来电或者打电话,看似接通了,但是就是听不到彼此的声音。目前发短信没有任何问题。 高手帮忙解答下,谢谢!…

查看全部问答∨

底层驱动应该看什么书?

下个月开工,以前没做过底层驱动,想先前做些准备,只知道开发环境为linux+arm,据说还是裸机开发(以前都是在vxworks上开发,对裸机开发是怎样的没概念)。 有熟悉的好心人介绍些书籍或网站看看,正好有个国庆缓冲期。…

查看全部问答∨

模拟电路故障解决

模拟电路故障解决…

查看全部问答∨

F2812烧写问题

F2812烧写问题 请问烧写flash时出现这样的错误是怎么回事?怎么解决?谢谢! flash api error #22 the erase operation failed the erase step first fail address=0x003f6000 程序下到RAM里可运行 四块新板子,有四块出现同样的问题,一块完 ...…

查看全部问答∨

PIC单片机识别按键的程序

本人做一个项目,其中要写一个按键程序,在PIC单片机中, 按键共六个,每个按键要有此功能:短按(<2s)开、关的功能  ,长按(>2s)加、减的功能 我的程序: void read_sw() {             &nbs ...…

查看全部问答∨

DC/DC 24V转5V

有个项目 24V 转 5V  打算用 Ti 的TPS54331  但是客户要求 这个模块要耐3kv AC , 请教这一点如何才能做的到。…

查看全部问答∨

有没有做过6437连接高清网络摄像头的?

车载设备要求体积小并且要进行图像处理,不想用工控机。摄像头距离驾驶室较远,直线距离五米以上,线长估计要7~8米,计划采用IP摄像头,有没有做过这种项目的朋友?…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved