6.4.1 键控蜂鸣器设计

更新于 2026年10月10日 版权声明
6.4.1 键控蜂鸣器设计

1.任务要求

已知PB8和PB9外接两个开关KEY0和KEY1,PB12外接一只LED,PC13外接一个蜂鸣器。当按下KEY0时,蜂鸣器发出声音;当按下KEY1时,LED闪烁。请利用EXTI中断模式实现该设计,完成硬件和软件设计,并通过Proteus完成仿真和调试。

2.硬件设计

根据题目要求,键控蜂鸣器硬件电路图如图6.4所示。按键KEY0和KEY1与PB8和PB9引脚相连,蜂鸣器通过三极管Q1连接在PC13引脚,LED1与PB12引脚相连。

图示

图6.4 键控蜂鸣器硬件电路图

3.软件设计

本例通过STM32CubeMX进行配置,将PB8、PB9设置为中断,并配置成下降沿触发,将NVIC配置成NVIC_PRIORITYGROUP_2,设置EXTI9~EXTI5的抢占优先级为2、次优先级为1。将PB12、PC13设置为推挽输出,系统时钟设为HSI、PLL倍频、64 MHz。(https://www.daowen.com)

由STM32 CubeMX生成MDK工程文件,在用户文件夹中生成“main.c”“stm32f1 xx_it.c”“stm32f1 xx_hal_msp.c”文件。

“main.c”文件中的MX_GPIO_Init()函数采用自动生成的代码,其他程序如下。

图示

“stm32f1 xx_it.c”文件中的程序如下。

图示

STM32F1系列MCU中的中断采用回调函数的形式,通过STM32CubeMX产生的工程,用户可以不必关心中断的服务函数设置,主要完成中断产生的回调函数中的中断服务即可。在发生EXTI中断后,CPU先执行HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0)函数,该函数的原型如下。

图示

该函数首先完成对中断信号的判断图示HAL_GPIO_EXTI_GET_IT(GPIO_Pin)!=0x00u,再清除标志图示HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin),CPU最后调用回调函数HAL_GPIO_EXTI_Callback(GPIO_Pin),回调函数即处理中断的服务。多个EXTI中断可以只对应一个回调函数,也可以对应多个回调函数。

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)