蜂鳴器是一個(gè)比較常見的電子器件,主要作用是喲關(guān)于報(bào)警,提醒。
蜂鳴器有兩中類型,一種是無源蜂鳴器,沒有驅(qū)動(dòng)源,需要使用PWM控制蜂鳴器響,可以通過修改PWM的占空比或者頻率來達(dá)到調(diào)整蜂鳴器聲音音調(diào)的目的;還有一種是有源蜂鳴器,有驅(qū)動(dòng)源,上電接高電平就會(huì)響。
本文就將以AB32VG1作為主控,RT-thread作為操作系統(tǒng)來操作無源蜂鳴器。
一、創(chuàng)建工程
使用RT-Thread Studio來創(chuàng)建工程。
1. 新增加兩個(gè)文件app_beep.c和app_beep.h
![poYBAGGsPhuAZr4CAAA2gKRcqmE599.png](http://file.elecfans.com/web2/M00/23/4E/poYBAGGsPhuAZr4CAAA2gKRcqmE599.png)
2. 打開RT-Thread Settings,使能PWM2
![pYYBAGGsPkyAR116AABbqQMsVs8663.png](http://file.elecfans.com/web2/M00/23/54/pYYBAGGsPkyAR116AABbqQMsVs8663.png)
二、電路連接
蜂鳴器驅(qū)動(dòng)引腳連接:PE0 → Beep驅(qū)動(dòng)引腳
三、無源蜂鳴器操作原理
無源蜂鳴器需要自己提供驅(qū)動(dòng)源,也就是PWM信號(hào),通過控制PWM驅(qū)動(dòng)頻率可以控制蜂鳴器輸出音符。
本程序通過period來控制PWM頻率,頻率為1MHz/period KHz
人耳能夠聽到的聲音頻率為20Hz~20KHz,所以操作20KHz頻率是聽不見的。
驅(qū)動(dòng)程序控制PWM循環(huán)輸出1KHz~20KHz,當(dāng)聲音越接近20KHz,我們能聽到的聲音越小,占空比為50%,相對(duì)而言聲音最大。占空比大小可以自己調(diào)節(jié)輸出聲音的大小。
四、操作代碼
1. 創(chuàng)建Beep線程
static int Pwm_Thread_Init(void)
{
rt_thread_t beep_thread;
beep_thread = rt_thread_create("Beep_thread",
PWM_Thread_Entry,
RT_NULL,
512,
10,
10);
rt_thread_startup(beep_thread);
return 0;
}
2. 初始化PWM,初始化函數(shù)在main中while循環(huán)之前調(diào)用
#define PWM_DEV_NAME "lpwm2" /* PWM 設(shè)備名稱 */
#define PWM_DEV_CHANNEL 1 /* PWM 通道 */
#define PWM_PERIOD (1000000u) // 1000000u
struct rt_device_pwm *pwm_dev; /* PWM 設(shè)備句柄 */
rt_uint32_t period, pulse;
void Pwm_Init(void)
{
period = PWM_PERIOD; /* 周期 = 1M/period kHz */
pulse = 0; /* PWM 脈沖寬度值(0 - period) */
pwm_dev = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME);
RT_ASSERT(pwm_dev != RT_NULL);
/* 設(shè)置 PWM 周期和脈沖寬度 */
rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period, 0);
/* 使能設(shè)備 */
rt_pwm_enable(pwm_dev, PWM_DEV_CHANNEL);
Pwm_Thread_Init();
}
3. PWM Beep驅(qū)動(dòng)函數(shù)
static void PWM_Thread_Entry(void *para)
{
uint8_t i = 1;
while(1)
{
period = (uint32_t)(1000000/i);
rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period, period-1);
i++;
if(i > 20)
i = 1;
rt_thread_mdelay(1000);
}
}
-
PWM
+關(guān)注
關(guān)注
114文章
5198瀏覽量
214900 -
蜂鳴器
+關(guān)注
關(guān)注
12文章
893瀏覽量
46100 -
線程
+關(guān)注
關(guān)注
0文章
505瀏覽量
19758 -
RT-Thread
+關(guān)注
關(guān)注
31文章
1305瀏覽量
40391
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
【RTT大賽作品連載】AB32VG1評(píng)估板到貨控制彩燈測(cè)試
![【<b class='flag-5'>RTT</b><b class='flag-5'>大賽</b><b class='flag-5'>作品</b><b class='flag-5'>連載</b>】AB32VG1評(píng)估板到貨控制彩燈測(cè)試](https://file.elecfans.com//web2/M00/1B/B6/poYBAGGHqjGAZgd_AAQ5JxBMxnU803.jpg)
【RTT大賽作品連載】CH32V103開發(fā)板資料及上電首測(cè)
![【<b class='flag-5'>RTT</b><b class='flag-5'>大賽</b><b class='flag-5'>作品</b><b class='flag-5'>連載</b>】CH32V103開發(fā)板資料及上電首測(cè)](https://file.elecfans.com//web2/M00/1D/1C/pYYBAGGRJM-AZ2EhABT6b9TfTC4677.jpg)
【RTT大賽作品連載】中科藍(lán)訊AB32VG1開發(fā)板開箱篇
![【<b class='flag-5'>RTT</b><b class='flag-5'>大賽</b><b class='flag-5'>作品</b><b class='flag-5'>連載</b>】中科藍(lán)訊AB32VG1開發(fā)板開箱篇](https://file.elecfans.com//web2/M00/1C/FD/pYYBAGGOg5-AaQa2AA-J9MBxhQg611.png)
【RTT大賽作品連載】linkboy面向WCH移植(1)
![【<b class='flag-5'>RTT</b><b class='flag-5'>大賽</b><b class='flag-5'>作品</b><b class='flag-5'>連載</b>】linkboy面向WCH移植(1)](https://file.elecfans.com//web2/M00/26/BC/pYYBAGG9mruAZYvQAAHNA1ULnac505.png)
評(píng)論