一、原理图分析
STM32默认低电平
蜂鸣器高电平开启
二、代码实现
MAIN.C
#include "led.h"
#include "beep.h"
void delay(void);
int main(void){
led_init();
beep_init();
//3.开始I/O口的操作
while(1){
LED1_ON;
LED2_OFF;
BEEP_ON ;
delay();
LED2_ON;
LED1_OFF;
BEEP_OFF;
delay();
}
}
void delay(void){
int i,j;
for(i=0;i<5000;i++)
for(j=0;j<4000;j++);
}
beep.C
#include "beep.h"
void beep_init(void){
GPIO_InitTypeDef GPIO_InitStruct;
//1.使能端口时钟
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOH, ENABLE);
//2.端口寄存器初始化
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_6;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_OType=GPIO_OType_PP;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_25MHz;
GPIO_Init(GPIOH, &GPIO_InitStruct);
}
beep.h
#ifndef _BEEP_H
#define _BEEP_H
#include "stm32f4xx.h" // Device header
#define BEEP_ON GPIO_SetBits(GPIOH, GPIO_Pin_6)
#define BEEP_OFF GPIO_ResetBits(GPIOH, GPIO_Pin_6)
void beep_init(void);
#endif