STM32导通9013三极管驱动4KHZ无源蜂鸣器在按键按下时响一次
时间: 2023-08-10 12:08:05 浏览: 155
无源蜂鸣器发声
您好,可以参考以下代码实现:
```
#include "stm32f10x.h"
#define BUZZER_PIN GPIO_Pin_0
#define BUZZER_PORT GPIOA
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = BUZZER_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(BUZZER_PORT, &GPIO_InitStructure);
}
void delay_us(uint32_t nus)
{
uint32_t i;
while(nus--)
{
for(i=0;i<9;i++);
}
}
void buzzer_beep(void)
{
GPIO_SetBits(BUZZER_PORT, BUZZER_PIN);
delay_us(500);
GPIO_ResetBits(BUZZER_PORT, BUZZER_PIN);
delay_us(500);
}
int main(void)
{
GPIO_Configuration();
while(1)
{
if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0) == 0) // 如果按键按下
{
buzzer_beep();
while(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0) == 0); // 等待按键释放
}
}
}
```
其中,`GPIO_Configuration` 函数用于配置 GPIO 口,`buzzer_beep` 函数用于触发蜂鸣器响一次,`main` 函数中通过判断按键状态来触发蜂鸣器响声。需要注意的是,在 `main` 函数中需要等待按键释放,以免触发多次蜂鸣器响声。
阅读全文