#include "bsp_gpio.h"
/***************GPIO_init***************/
USERSTR LedStr;
struct BEEP_STR UserBeep;
void bsp_gpio_init(void)
{
      //LED灯初始化
//      GPIOB->DDR = 0x02;
//      GPIOB->CR1 = 0x02;
//      GPIOB->CR2 = 0x02;
//      GPIOB->ODR = 0x02;

      GPIO_Init(LED_GPIO,LED1_PIN,GPIO_Mode_Out_PP_Low_Fast);
      GPIO_Init(LED_GPIO,LED2_PIN,GPIO_Mode_Out_PP_Low_Fast);
      //蜂鸣器pin初始化
      GPIO_Init(LIMIT_GPIO,LIMIT_PIN,GPIO_Mode_In_FL_No_IT);
      GPIO_Init(BEEP_GPIO,BEEP_PIN,GPIO_Mode_Out_PP_Low_Slow);
}

void LedTest(void)
{
     if(!LEDTEST)return;
     if(LedStr.Cnt>0)return;
     LedStr.Cnt = 1000;
     GPIO_ToggleBits(LED_GPIO,LED1_PIN);
}
/*
if(time_count4==0)
          {
              time_count4 = 4000;
          }
          else if(time_count4<=10)
          {
              GPIO_WriteBit(GPIOB,GPIO_Pin_3,SET);
          }
          else
          {
              GPIO_WriteBit(GPIOB,GPIO_Pin_3,RESET);
          }
*/
void bsp_beep_one(void)
{
      GPIO_WriteBit(BEEP_GPIO,BEEP_PIN,SET);
      bsp_DelayMS(50);
      GPIO_WriteBit(BEEP_GPIO,BEEP_PIN,RESET);
}

void bsp_beep_two(void)
{
      GPIO_WriteBit(BEEP_GPIO,BEEP_PIN,SET);
      bsp_DelayMS(BEEPTIMR);
      GPIO_WriteBit(BEEP_GPIO,BEEP_PIN,RESET);
      bsp_DelayMS(BEEPTIMR*2);
      GPIO_WriteBit(BEEP_GPIO,BEEP_PIN,SET);
      bsp_DelayMS(BEEPTIMR);
      GPIO_WriteBit(BEEP_GPIO,BEEP_PIN,RESET);
}


void BeepCheck(void)
{
    static uint32_t tim_cnt = 0;
    if(UserBeep.BeepFlag==1)
    {
        if(UserBeep.times==0)
        {
          UserBeep.BeepFlag = 0;
          tim_cnt = 0;
          GPIO_WriteBit(BEEP_GPIO,BEEP_PIN,RESET);
          return ;
        }
        tim_cnt++;
        if(UserBeep.Model==0)
        {
          if(tim_cnt>=10)
          {
            if(UserBeep.times--);
            tim_cnt = 0;
            GPIO_ToggleBits(BEEP_GPIO,BEEP_PIN);
          }
        }
        else if(UserBeep.Model==1)
        {
          if(tim_cnt==50)
          {
            if(UserBeep.times--);
            GPIO_WriteBit(BEEP_GPIO,BEEP_PIN,SET);
          }
          else if(tim_cnt==200)
          {
            tim_cnt = 0;
            if(UserBeep.times--);
            GPIO_WriteBit(BEEP_GPIO,BEEP_PIN,RESET);
          }

        }
    }
}
void BeepStart(uint32_t times,bool Model)
{
    UserBeep.BeepFlag = 1;
    UserBeep.Model = Model;
    UserBeep.times = 2*times;
}

void BeepStop(void)
{
    UserBeep.BeepFlag = 0;
    GPIO_WriteBit(BEEP_GPIO,BEEP_PIN,RESET);
}