|
最近產(chǎn)品需要根據(jù)運(yùn)行狀態(tài),蜂鳴器 發(fā)出1聲到6聲的鳴叫,用的是有源蜂鳴器,也可以用無源蜂鳴器,修改宏定義即可,F(xiàn)把代碼共享出來,不管怎么優(yōu)化也沒有大神的代碼少;測試可用
uint8_t Buzzer_Enable; //蜂鳴器驅(qū)動函數(shù)使能
uint8_t on_time,off_time; //鳴叫時間,停止時間
uint8_t Buzzer_cnt; //鳴叫次數(shù)
//調(diào)用一次Buzzer_Set_int,蜂鳴器驅(qū)動函數(shù)就會執(zhí)行一次,
//例如想讓蜂鳴器鳴叫,調(diào)用Buzzer_Set_int(蜂鳴次數(shù),蜂鳴時長,蜂鳴關(guān)時長)一次,蜂鳴器就會按照設(shè)定參數(shù)鳴叫。
void Buzzer_Set_int(uint8_t cnt,uint8_t oncnt,uint8_t offcnt)
{
on_time=oncnt;
off_time=offcnt;
on_count = cnt;
Buzzer_Enable = 1;
}
//蜂鳴器驅(qū)動函數(shù),放在定時器中斷函數(shù)里面,100ms執(zhí)行一次
void Buzzer_Output(void)
{
static uint8_t oncnt,offcnt, buzzercnt = 0;
if(buzzercnt < on_count && offcnt == 0)
{
oncnt = on_time;
offcnt = off_time;
buzzercnt++;
}
else if(buzzercnt>=on_count && offcnt == 0)
{
Buzzer_Enable = 0;
buzzercnt = 0;
oncnt = 0;
offcnt = 0;
BEEPOFF();
}
if(Buzzer_Enable)
{
if(oncnt)
{
oncnt--;
BEEPON();//蜂鳴器響
}
else if(offcnt)
{
offcnt--;
BEEPOFF();//蜂鳴器關(guān)
}
else
{
if(on_count>0)
{
BEEPOFF();
}
}
}
}
|
|