#ifndef PWM_H
#define PWM_H

/* Includes ----------------------------------------------------------------- */
#include <stdint.h>
#include "bsp\bsp.h"
#include <stdbool.h>

/* Exported constants ------------------------------------------------------- */
/* Exported macro ----------------------------------------------------------- */
/* Exported types ----------------------------------------------------------- */

/* PWM通道 */
typedef enum {
  BSP_PWM_IMU_HEAT,
	BSP_PWM_BUZZER,
} BSP_PWM_Channel_t;

typedef struct {
    uint32_t timer;
    bool state;
    uint16_t beep_duration;    // 蜂鸣持续时间(ms)
    uint16_t silent_duration;  // 静默间隔时间(ms)
    float duty_cycle;          // 占空比(0-1)
} Buzzer_t;

/* Exported functions prototypes -------------------------------------------- */
int8_t BSP_PWM_Start(BSP_PWM_Channel_t ch);
int8_t BSP_PWM_Set(BSP_PWM_Channel_t ch, float duty_cycle);
int8_t BSP_PWM_Stop(BSP_PWM_Channel_t ch);

void Buzzer_Init(Buzzer_t* ctrl,uint16_t beep_duration,uint16_t silent_duration,float duty_cycle);
void Buzzer_Control(Buzzer_t* ctrl, bool condition);
#endif