#include "beep_drivers.h"
#if APP_BEEP_ENABLE
static uint8_t beep_delay;
#if BEEP_ADC
uint8_t ntc_delay;
#endif
/********************************************************
**	函数名	void BEEP_Init(void)
**	描述	：蜂鸣器GPIO初始化
**	传入	：无
**	返回	：无
*********************************************************/
void BEEP_Init(void)
{
#if (BEEP_ADC == 0)
    GPIO_Init(BEEP_GPIO, OUTPUT | PUSHPULL);
#endif
#if BEEP_GPIO_TYPE
    GPIO_ClearBit(BEEP_GPIO);
#else
    GPIO_SetBit(BEEP_GPIO);
#endif
}
/********************************************************
**	函数名	void BEEP_On(uint8_t timeout)
**	描述	：打开蜂鸣器
**	传入	：timeout 开启时间ms
**	返回	：无
*********************************************************/
void BEEP_On(uint8_t timeout)
{
    beep_delay = timeout;
#if BEEP_ADC
#if APP_ADC_ENABLE
	while(adc_state == 1)		//复用状态下如果ADC在采集中，等待采集完成
	{
		__WFI();
	}
#endif
    ntc_delay = 5;
    GPIO_Init(BEEP_GPIO, OUTPUT | PUSHPULL);
#elif BEEP_TYPE
	GPIO_Init(BEEP_GPIO, OUTPUT | PUSHPULL);
#endif
#if BEEP_GPIO_TYPE
    GPIO_SetBit(BEEP_GPIO);
#else
    GPIO_ClearBit(BEEP_GPIO);
#endif
}
/********************************************************
**	函数名	void BEEP_Timeout(void)
**	描述	：延时关闭蜂鸣器，系统定时器中断调用，调用周期1ms
**	传入	：t无
**	返回	：无
*********************************************************/
void BEEP_Timeout(void)
{
    if (beep_delay)
    {
        beep_delay--;
        if (beep_delay == 0)
        {
#if BEEP_GPIO_TYPE
            GPIO_ClearBit(BEEP_GPIO);
#else
            GPIO_SetBit(BEEP_GPIO);
#endif
#if (BEEP_ADC || BEEP_TYPE)
			GPIO_Init(BEEP_GPIO, ANALOG);
#endif
        }
    }
#if BEEP_ADC
    else if (ntc_delay)
    {
        ntc_delay--;
    }
#endif
}
/********************************************************
**	函数名	void BEEP_Toggle(void)
**	描述	：无源蜂鸣器驱动
**	传入	：t无
**	返回	：无
*********************************************************/
void BEEP_Toggle(void)
{
#if BEEP_TYPE
	if (beep_delay)
    {
		GPIO_ToggleBit(BEEP_GPIO);
	}
#endif
}
#endif
