网站开发国内外研究,羽毛球赛事级别分类,北京餐饮设计公司,常用的html编辑器有哪些STM32_驱动蜂鸣器自定义库 功能说明#xff1a; 1、可以实现设置蜂鸣器的音调 2、可以设置蜂鸣器连续鸣响次数 3、设置连续鸣响时间间隔 main.c
#include mymain.h
#include dev_control.hint main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_…STM32_驱动蜂鸣器自定义库 功能说明 1、可以实现设置蜂鸣器的音调 2、可以设置蜂鸣器连续鸣响次数 3、设置连续鸣响时间间隔 main.c
#include mymain.h
#include dev_control.hint main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_TIM2_Init();devInit();devBuzzerSetNum(3); //设置鸣响次数3devBuzzerSetLevel(unsigned char level); //设置音调等级while (1){devTask();HAL_Delay(1);}
}buzzer.c
#include dev_control.h#define DEV_TASK_PERIOD 1 //调用devTask的周期
devBuzzer_t devBuzzer {0};void devInit(void)
{/*************************蜂鸣器************************/devBuzzer.devBuzzerEnable STATE_ENABLE;devBuzzer.devBuzzerPeriod 200; //周期200msdevBuzzer.devBuzzerDuty 100; //鸣响100ms
}void devTask(void)
{if(devBuzzer.devBuzzerEnable STATE_ENABLE){if(devBuzzer.devBuzzerNumber 0){devBuzzer.devBuzzerCount DEV_TASK_PERIOD;if(devBuzzer.devBuzzerCount devBuzzer.devBuzzerDuty){HAL_TIM_PWM_Start(htim2,TIM_CHANNEL_3);}else {HAL_TIM_PWM_Stop(htim2,TIM_CHANNEL_3);}if(devBuzzer.devBuzzerCount devBuzzer.devBuzzerPeriod){devBuzzer.devBuzzerCount 0;devBuzzer.devBuzzerNumber--;}}}
}void devBuzzerSetLevel(unsigned char level)
{switch(level){case BUZZER_LEVEL_0:devBuzzer.devBuzzerLevel level;__HAL_TIM_SET_PRESCALER(htim2, 144-1);//设置时钟频率0.5Khzbreak;case BUZZER_LEVEL_1:devBuzzer.devBuzzerLevel level;__HAL_TIM_SET_PRESCALER(htim2, 72-1);//1Khzbreak;case BUZZER_LEVEL_2:devBuzzer.devBuzzerLevel level;__HAL_TIM_SET_PRESCALER(htim2, 36-1);//2Khzbreak;default:break;}
}buzzer.h
#ifndef __DEV_CONTROL_H
#define __DEV_CONTROL_H
#include main.h
#include gpio.henum{STATE_DISABLE,STATE_ENABLE
};enum{BUZZER_LEVEL_0,BUZZER_LEVEL_1,BUZZER_LEVEL_2
};//蜂鸣器控制结构体
typedef struct
{unsigned char devBuzzerEnable; //使能unsigned char devBuzzerLevel; //音调水平unsigned char devBuzzerNumber; //连续鸣响次数unsigned int devBuzzerDuty; //单次鸣响时长unsigned int devBuzzerPeriod; //单次鸣响控制周期unsigned int devBuzzerCount; //计数用于控制
} devBuzzer_t;void devBuzzerSetNum(unsigned char num); //设置鸣响次数
void devBuzzerSetLevel(unsigned char level); //设置音调等级#endif