STM32 cubeMX下配置STM32单片机使无源蜂鸣器输出PWM波并放音乐 |
您所在的位置:网站首页 › stm32f103蜂鸣器音乐生成曲谱 › STM32 cubeMX下配置STM32单片机使无源蜂鸣器输出PWM波并放音乐 |
1.首先我们要了解定时器(timer) timer分为三种:高级定时器(tim1,tim8),基本定时器(tim6,tim7),通用定时器(tim2,tim3,tim4,tim5)。 基本定时器:它有两个功能。第一就是生成时基,第二就是专门用于驱动数模转换器(DAC),我们这里要产生PWM波,这与它无关,所以不用过多了解它。 通用的定时器:可以输出四路PWM信号互不影响,它就是普通的调节PWM的占空比和频率。 高级定时器:可以输出三对互补PWM信号外加CH4通道,一共七路,它还带有互补输出功能,同时互补信号可以插入死区,也有使能刹车功能。 由于我做的单片机只用到了通用定时器。因此我对高级定时器也没有过多的了解。 2.PWM 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,PWM输出最基本的调节就是频率和占空比,接下来我们将了解PWM是如何产生的。 PWM的频率和占空比分别通过TIMX_ARR和TIMX_CCRX这两个寄存器控制,ARR寄存器就是自动重装寄存器(计数器记到这个数后清零在开始计数),在计数是会不停的和CCRX寄存器中的数据进行比较,如果小于的话就是高电平或者低电平(这取决于你设的PWM输出是高电平还是低电平有效如下图(是高电平有效)),计数值大于CCRX值这电平极性相反,这就控制了占空比。 下图是PWM原理图: 3.STM32 cubeMX配置蜂鸣器 首先要使外部时钟使能,因为内部时钟频率不稳定 配置PWM的参数 输出频率=系统频率(80M)/[(PSC+1)*(ARR+1)] 由于一会要改变频率,所以可以先不设脉冲宽度
接下来就在tim.c中的/* USER CODE BEGIN 1 / / USER CODE END 1 */之间加入自己的代码,以下是我的《两只老虎》的代码,如果你想放其他歌你把频率变一下就可以了。 链接:https://mp.csdn.net/mdeditor/88737012 然后在tim.h中声明你定义的变量及函数,不然会报错
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |