#include "buzzer.h" #include "sw_timer.h" static bool isBuzzerOn; static uint32_t BuzzerStartTick; static uint32_t BuzzerOnTimeCount; static void Buzzer_Output_Process(void); void Buzzer_Initialization(void) { HAL_GPIO_ConfigOutput(GPIO_BUZZER_PORT, GPIO_BUZZER_PIN_NUM, PUSH_PULL_OUTPUT); HAL_GPIO_ConfigPullup(GPIO_BUZZER_PORT, GPIO_BUZZER_PIN_NUM, PUPDx_EnablePU); SW_Timer_Callback_Register(SW_TIMER_RUN_CONTINUE, 1, Buzzer_Output_Process); } void Buzzer_On(uint32_t BuzzerOnTime) { isBuzzerOn = true; BuzzerStartTick = millis(); BuzzerOnTimeCount = BuzzerOnTime; } static void Buzzer_Output_Process(void) { if(isBuzzerOn == true) { if((millis() - BuzzerStartTick) <= BuzzerOnTimeCount) { GPIO_BUZZER_ON; } else { isBuzzerOn = false; GPIO_BUZZER_OFF; } } else { GPIO_BUZZER_OFF;; } }