加入大疆C板例程bsp
This commit is contained in:
46
bsp/boards/bsp_buzzer.c
Normal file
46
bsp/boards/bsp_buzzer.c
Normal file
@@ -0,0 +1,46 @@
|
||||
#include "bsp_buzzer.h"
|
||||
#include "main.h"
|
||||
extern TIM_HandleTypeDef htim4;
|
||||
void buzzer_on(uint16_t psc, uint16_t pwm)
|
||||
{
|
||||
__HAL_TIM_PRESCALER(&htim4, psc);
|
||||
__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_3, pwm);
|
||||
|
||||
}
|
||||
void buzzer_off(void)
|
||||
{
|
||||
__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_3, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 用蜂鸣器发出音符
|
||||
* @param note note
|
||||
* @param volume 音量,范围[0.0\\~1.0],用百分比表示
|
||||
*/
|
||||
void buzzer_note(uint16_t note,float volume)
|
||||
{
|
||||
if(volume > 1.0f)
|
||||
{
|
||||
volume = 1.0f;
|
||||
}else if(volume < 0.0f)
|
||||
{
|
||||
volume = 0.0f;
|
||||
}
|
||||
// 禁用定时器
|
||||
__HAL_TIM_DISABLE(&htim4);
|
||||
|
||||
// 重置定时器计数器
|
||||
htim4.Instance->CNT = 0;
|
||||
|
||||
// 设置自动重装载寄存器(ARR),以控制PWM信号的频率
|
||||
htim4.Instance->ARR = (8*21000 / note - 1) * 1u;
|
||||
|
||||
// 设置比较寄存器(CCR3),以控制PWM信号的占空比
|
||||
htim4.Instance->CCR3 = (8*10500 / note - 1) * volume * 1u;
|
||||
|
||||
// 重新启用定时器
|
||||
__HAL_TIM_ENABLE(&htim4);
|
||||
|
||||
// 启动PWM信号
|
||||
HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3);
|
||||
}
|
||||
Reference in New Issue
Block a user