/****************************************************************************** 文 件 名:Buzzer.c 功能描述:蜂鸣器驱动库头文件 作 者:张暄 版 本:V1.0 日 期:2016.5.18 ******************************************************************************/ #ifndef _BUZZER_H_ #define _BUZZER_H_ #include "GPIO.h" #include "r_typedefs.h" /***************************************************************************** 音轨总数 *****************************************************************************/ #define BUZZER_TRACK_CNT ((uint8_t)10) /***************************************************************************** 声音重定义 *****************************************************************************/ #define BUZZER_SOUND_TIC ((uint8_t)0) #define BUZZER_SOUND_TAC ((uint8_t)1) #define BUZZER_SOUND_DONG ((uint8_t)2) #define BUZZER_SOUND_PLING ((uint8_t)3) #define BUZZER_SOUND_PLONG ((uint8_t)4) #define BUZZER_SOUND_PARK_BEEP ((uint8_t)5) #define BUZZER_SOUND_PLING_PLONG ((uint8_t)6) /***************************************************************************** 单音重定义 *****************************************************************************/ #define BUZZER_SINGLE_SOUND_TIC ((uint8_t)0) #define BUZZER_SINGLE_SOUND_TAC ((uint8_t)1) #define BUZZER_SINGLE_SOUND_DONG ((uint8_t)2) #define BUZZER_SINGLE_SOUND_PLING ((uint8_t)3) #define BUZZER_SINGLE_SOUND_PLONG ((uint8_t)4) #define BUZZER_SINGLE_SOUND_PARK_BEEP ((uint8_t)5) typedef enum { BUZZER_Track_Index_Tic = 0x00, BUZZER_Track_Index_Tac , BUZZER_Track_Index_Dong , BUZZER_Track_Index_Pling , BUZZER_Track_Index_Plong , BUZZER_Track_Index_ParkBeep , BUZZER_Track_Index_3900hz_500Dty, BUZZER_Track_Index_2300hz_500Dty, BUZZER_Track_Index_3900hz_280Dty, BUZZER_Track_Index_2300hz_280Dty, BUZZER_Track_Index_3900hz_190Dty, BUZZER_Track_Index_2600hz_167Dty, BUZZER_Track_Index_2000hz_500Dty, BUZZER_Track_Index_0800hz_500Dty, BUZZER_Track_Index_MAX, } BUZZER_Track_Index_en_t; /***************************************************************************** 播放类型 *****************************************************************************/ #define BUZZER_SOUND_PLAY_IDLE ((uint8_t)0) #define BUZZER_SOUND_PLAY_REPEAT ((uint8_t)1) #define BUZZER_SOUND_PLAY_NONSTOP ((uint8_t)2) /****************************************************************************** 信号重定义 ******************************************************************************/ #define LINE_BUZZER BUZZER_ACC_OUT_EN //#define BUZZER_PWM_EN PWME_PWME4 //#define BUZZER_FREQ_CTRL PWMPER4 //蜂鸣器频率 = 100kHz / BUZZER_FREQ_CTRL //#define BUZZER_DUTY_CTRL PWMDTY4 /****************************************************************************** 结构定义 ******************************************************************************/ typedef struct { uint16_t Freq; //频率控制字 设定值 = 100kHz / 单音频率 uint16_t Duty; uint16_t PlayTime; //单音播放时间 设定值 = 单音播放时间 / 64us uint16_t FadeOutTime; //单音淡出时间 设定值 = 单音淡出时间 / 64us } SingleSoundStruct; typedef struct { uint8_t SoundTable[7]; //复合音各单音列表 uint8_t SoundCnt; //复合音包含的单音总数 } ComplexSoundStruct; typedef struct { uint8_t Mode; uint8_t SoundID; uint8_t RepeatNum; uint8_t RepeatCnt; uint8_t RepeatCycle; uint8_t RepeatTimer; } TrackInfoStruct; /****************************************************************************** 函数声明 ******************************************************************************/ void Buzzer_Init ( void ); void Buzzer_Shutdown ( void ); void Buzzer_Play_ISR ( void ); //嵌入到64us中断中 void Warning_Sound_Init ( void ); void Buzzer_Stop_All_Track ( void ); void Buzzer_Track_Play_Service ( void ); //每20ms调用一次 void Buzzer_Track_Play ( uint8_t TrackID ); void Buzzer_Track_Stop ( uint8_t TrackID ); void Buzzer_Track_Pause ( uint8_t TrackID ); void Buzzer_Play_Sound ( uint8_t SoundID ); void Buzzer_Set_Track_Remaining_Repeat_Num ( uint8_t TrackID, uint8_t RepeatNum ); void Buzzer_Track_Init ( uint8_t TrackID, uint8_t SoundID, uint8_t RepeatNum, uint8_t RepeatCycle ); uint8_t Buzzer_Get_All_Track_Status ( void ); uint8_t Buzzer_Get_Track_Status ( uint8_t TrackID ); uint8_t Buzzer_Get_Track_Remaining_Repeat_Num ( uint8_t TrackID ); #endif