mirror of
https://github.com/goldenfishs/MRobot.git
synced 2025-09-14 21:04:32 +08:00
45 lines
1.1 KiB
C
45 lines
1.1 KiB
C
#include "device/buzzer.h"
|
|
|
|
|
|
int8_t BUZZER_Init(BUZZER_t *buzzer, BSP_PWM_Channel_t channel) {
|
|
if (buzzer == NULL) return DEVICE_ERR;
|
|
|
|
buzzer->channel = channel;
|
|
buzzer->header.online = true;
|
|
|
|
BUZZER_Stop(buzzer);
|
|
|
|
return DEVICE_OK ;
|
|
}
|
|
|
|
int8_t BUZZER_Start(BUZZER_t *buzzer) {
|
|
if (buzzer == NULL || !buzzer->header.online)
|
|
return DEVICE_ERR;
|
|
|
|
return (BSP_PWM_Start(buzzer->channel) == BSP_OK) ?
|
|
DEVICE_OK : DEVICE_ERR;
|
|
}
|
|
|
|
int8_t BUZZER_Stop(BUZZER_t *buzzer) {
|
|
if (buzzer == NULL || !buzzer->header.online)
|
|
return DEVICE_ERR;
|
|
|
|
return (BSP_PWM_Stop(buzzer->channel) == BSP_OK) ?
|
|
DEVICE_OK : DEVICE_ERR;
|
|
}
|
|
|
|
int8_t BUZZER_Set(BUZZER_t *buzzer, float freq, float duty_cycle) {
|
|
if (buzzer == NULL || !buzzer->header.online)
|
|
return DEVICE_ERR;
|
|
|
|
int result = DEVICE_OK ;
|
|
|
|
if (BSP_PWM_SetFreq(buzzer->channel, freq) != BSP_OK)
|
|
result = DEVICE_ERR;
|
|
|
|
if (BSP_PWM_SetComp(buzzer->channel, duty_cycle) != BSP_OK)
|
|
result = DEVICE_ERR;
|
|
|
|
return result;
|
|
}
|