//基于NUC120学习套件-蜂鸣器- 四音警报声
//作者:hzy41y
//最后更新日期2012年06月14日15:00
#include <stdio.h>
#include <string.h>
#include "NUC1xx.h"
#include "Driver\DrvSYS.h"
#include "Driver\DrvGPIO.h"
#include "DrvTimer.h"
#include "hzy.h"
#define Buzzer_set DrvGPIO_SetBit(E_GPB,10)
#define Buzzer_clr DrvGPIO_ClrBit(E_GPB,10)
//***************IO初始化*****************************
void init()
{DrvGPIO_Open( E_GPB, 10, E_IO_OUTPUT );
Buzzer_clr;
}
// ***********由1.9K--3.4K--1.9k时长0.2S
void Sound1()
{ uint16_t c_sta;
uint8_t b;
b=10; //循环次数
while(b--)
{ c_sta=262;
do{
DrvSYS_Delay(c_sta);
if(DrvGPIO_GetBit(E_GPB, 10))Buzzer_clr;
else Buzzer_set;
}while(147<--c_sta);
c_sta=147;
do{
DrvSYS_Delay(c_sta);
if(DrvGPIO_GetBit(E_GPB, 10))Buzzer_clr;
else Buzzer_set;
}while(526 > ++c_sta);
DrvSYS_Delay(40000); //延时0.4s
}Buzzer_clr;
}
// *** 上半波高低频统一为250US;由最高频114us向最低频333us
void Sound2()
{ uint16_t c_sta;
uint8_t b;
b=10; //循环次数
while(b--)
{ c_sta=114;
do{
Buzzer_set;
DrvSYS_Delay(250);
Buzzer_clr;
DrvSYS_Delay(c_sta);
}while(++c_sta<333) ;
DrvSYS_Delay(850);
}Buzzer_clr;
}
// * ** 上半波高低频统一为250US;由最高频333us向最低频540us
void Sound3()
{ uint16_t c_sta;
uint8_t b;
b=10; //循环次数
while(b--)
{ c_sta=333;
do{
Buzzer_set;
DrvSYS_Delay(250);
Buzzer_clr;
DrvSYS_Delay(c_sta);
}while(++c_sta<540) ;
DrvSYS_Delay(850);
}Buzzer_clr;
}
// *** 上半波高低频统一为300US;由最低频2180us向最高频700us
void Sound4()
{ uint16_t c_sta;
c_sta=2180;
do{
Buzzer_set;
DrvSYS_Delay(300);
Buzzer_clr;
DrvSYS_Delay(c_sta);
}while(--c_sta>700) ;
Buzzer_clr;
}
/*----------------------------------------------------------------------------
MAIN function
----------------------------------------------------------------------------*/
int32_t main (void)
{
//uint8_t c_sta,i,b;
//---------------------------------------------------------
UNLOCKREG();
SYSCLK->PWRCON.XTL12M_EN = 1;
LOCKREG();
init();
//---------------------------------------------------------
while(1)
{Sound1();
DrvSYS_Delay(180000);
Sound2();
DrvSYS_Delay(180000);
Sound3();
DrvSYS_Delay(180000);
Sound4();
}
}
基于NUC120学习套件-蜂鸣器- 四音警报声 |