推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

获得赏金
10.00元
无源蜂鸣器驱动发声(非有源蜂鸣器) keil开发 易上手 stm32cubemx

更新时间:2024-06-06 20:55:36 大小:24M 上传用户:mulanhk查看TA发布的资源 标签:无源蜂鸣器keilstm32cubemx 下载积分:4分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

项目内容:

包含无源蜂鸣器的配置

STM32cubemx工程的详细的一步步的配置

整个工程易上手,教程详细


实现思路:

无源蜂鸣器的发声原理:

无源蜂鸣器内部没有激励源,只有给它一定频率的方波信号,才能让蜂鸣器的振动装置起振,从而实现发声

image.png

频率计算方法:

        频率 = 周期的倒数,即 f = 1/T,也可以说二者互为倒数 。


 频率 f 的单位是赫兹Hz,周期T的单位是秒s。


 一般我们通过频率来求得周期,比如1KHz的频率对应的周期就是1s/1000Hz=0.001s=1ms


 我们通过延时函数在一个周期内输出相同时间的高电平和低电平模拟方波信号,将信号输送给 无源蜂鸣器驱动蜂鸣器发出声音。


本项目使用72MHz/720/1000 = 100Hz,在1- 100范围内改变方波占空比,从而实现音调变换


STM32CUBEMX工程配置

image.png


引脚配置

开启高低速时钟

image.png

开启IIC引脚,并配置为高速模式


image.png

打开为中断模式

image.png


开启TIM2的CH2,启用内部时钟


image.png


具体参数设置

psc,ccr,arr


image.png


时钟树配置

image.png


存储路径选择

image.png

源代码


对tim.c的PSC,ARR,CCR参数配置

  htim2.Instance = TIM2;

  htim2.Init.Prescaler = 720-1;

  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;

  htim2.Init.Period = 100-1;

  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;

  htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;

注意这里的PSC,ARR,CCR的配置

人耳可以听到的范围20-10000HZ,要注意要把频率设置到这个范围内,否则听不到



主函数实现程序

for(int i=0;i<100;i++)

  {

  __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_2,i);//这是实现从1-100的占空比变化

  HAL_Delay(10);

  

  }

  for(int i=100;i>0;i--)

  {

  __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_2,i);

  HAL_Delay(10);

  

  }

}




部分文件列表

文件名大小
无源蜂鸣器用PWM驱动,发出声音/
无源蜂鸣器用PWM驱动,发出声音/PWM_DUOJI/
无源蜂鸣器用PWM驱动,发出声音/PWM_DUOJI/.mxproject8KB
无源蜂鸣器用PWM驱动,发出声音/PWM_DUOJI/Core/
无源蜂鸣器用PWM驱动,发出声音/PWM_DUOJI/Core/Inc/
无源蜂鸣器用PWM驱动,发出声音/PWM_DUOJI/Core/Inc/font.h1KB
无源蜂鸣器用PWM驱动,发出声音/PWM_DUOJI/Core/Inc/gpio.h1KB
无源蜂鸣器用PWM驱动,发出声音/PWM_DUOJI/Core/Inc/i2c.h1KB
无源蜂鸣器用PWM驱动,发出声音/PWM_DUOJI/Core/Inc/main.h2KB
无源蜂鸣器用PWM驱动,发出声音/PWM_DUOJI/Core/Inc/oled.h2KB
无源蜂鸣器用PWM驱动,发出声音/PWM_DUOJI/Core/Inc/stm32f1xx_hal_conf.h
...
  • 21ic小能手打赏了10.00

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载