This commit is contained in:
刘正航
2026-04-16 16:55:01 +08:00
commit 609eb878d1
624 changed files with 214375 additions and 0 deletions

View File

@@ -0,0 +1,74 @@
/*
*********************************************************************************************************
*
* 【安富莱】STM32-V4 开发板-例程功能说明
*
* 例程名称 : V4-005_无源蜂鸣器例程硬件PWM
*
* 推荐将编辑器的缩进参数和TAB设置为4 来阅读本文件
*
*********************************************************************************************************
*/
【1】例程简介
本例子演示如何驱动蜂鸣器。STM32-V4开发板安装的蜂鸣器为无源蜂鸣器使用PA8引脚。
主程序实现功能:
1 按K1K2K3键分别发出不同的蜂鸣音
2 通过摇杆左右键可以调节蜂鸣器频率。
操作提示:
1. K1键 - 按键提示音(固定频率1.5KHz)
2. K2键 - 急促鸣叫10次
3. K3键 - 长鸣3次
4. 摇杆左键 - 蜂鸣器频率 - 100Hz
5. 摇杆右键 - 蜂鸣器频率 + 100Hz
源代码说明:
1bsp_beep.c 是蜂鸣器驱动文件。通过宏切换是有源蜂鸣器还是无源蜂鸣器。 无源蜂鸣器需要使用TIM硬件输出
PWM波形来驱动。
//#define BEEP_HAVE_POWER /* 定义此行表示有源蜂鸣器直接通过GPIO驱动, 无需PWM */
2bsp_tim_pwm.c 是定时器PWM驱动文件。SetTIMOutPWM()函数配置GPIO为输出PWM状态。
void bsp_SetTIMOutPWM(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, TIM_TypeDef* TIMx, uint8_t _ucChannel,
uint32_t _ulFreq, uint32_t _ulDutyCycle);
3bsp.c 中需要每隔10ms调用一次BEEP_Pro()函数,该函数用来控制蜂鸣次数和时长。
void bsp_RunPer10ms(void)
{
bsp_KeyScan(); /* 每10ms扫描按键一次 */
BEEP_Pro(); /* 蜂鸣器定时处理 */
}
4 BEEP_KeyTone(); 是发按键提示音的函数频率固定1.5KHz。
BEEP_Start()启动蜂鸣器开始鸣叫。该函数是非阻塞的10ms定时中断服务程序会控制PWM的启动和停止。
BEEP_Stop() 立即终止鸣叫。
【2】执行结果
使用USB转RS232线连接开发板的RS232接口到计算机的USB接口。运行 SecureCRT 软件。
下面是串口界面执行结果:
*************************************************************
* 例程名称 : V4-005_无源蜂鸣器例程硬件PWM
* 例程版本 : 1.0
* 发布日期 : 2015-08-30
* 固件库版本 : 3.6.1
* CMSIS版本 : 3.01
*
* QQ : 1295744630
* Email : armfly@qq.com
* Copyright www.armfly.com 安富莱电子
*************************************************************
操作提示:
1. K1键 - 按键提示音(固定频率1.5KHz)
2. K2键 - 急促鸣叫10次
3. K3键 - 长鸣3次
4. 摇杆左键 - 蜂鸣器频率 - 100Hz
5. 摇杆右键 - 蜂鸣器频率 + 100Hz
蜂鸣器频率 = 1500Hz
【3】修改记录
2015-08-30 V1.0 首版