48 lines
1.3 KiB
C
48 lines
1.3 KiB
C
#include "stm32f10x.h" // Device header
|
||
#include "stdio.h"
|
||
|
||
void Buzzer_Init(void)
|
||
{
|
||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
|
||
|
||
GPIO_InitTypeDef GPIO_InitStruct; //初始化GPIO,定义GPIO结构体,以下设置其参数
|
||
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;//GPIO_Mode_Out_OD 开漏模式,低电平驱动,高电平时为高阻态;GPIO_Mode_Out_PP 推挽模式,高低电平都有驱动
|
||
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12;
|
||
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
|
||
GPIO_Init(GPIOB,&GPIO_InitStruct);
|
||
|
||
GPIO_SetBits(GPIOB,GPIO_Pin_12);//初始化Buzzer
|
||
|
||
}
|
||
|
||
|
||
/*!< Pin x selected ON or OFF
|
||
parameter opt is high or low;表示高低电平
|
||
*/
|
||
|
||
enum V_opt{//高低电压
|
||
high,
|
||
low
|
||
};
|
||
|
||
/* 选择GPIOB外设进行Buzzer控制 ,opt有 high 和 low */
|
||
|
||
void GPIOB_Buzzer(uint16_t GPIO_Pin_x,enum V_opt opt)
|
||
{
|
||
if(opt == high) GPIO_SetBits(GPIOB,GPIO_Pin_x);
|
||
if(opt == low) GPIO_ResetBits(GPIOB,GPIO_Pin_x);
|
||
}
|
||
|
||
/*
|
||
控制GPIOB输出翻转
|
||
GPIO_Pin_x表示为哪个按键引脚,GPIO_Pin_Buzzer表示为哪个灯泡引脚
|
||
*/
|
||
void GPIOB_Buzzer_Turn(uint16_t GPIO_Pin_x)
|
||
{
|
||
if(GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_x) == 0)
|
||
GPIO_SetBits(GPIOB,GPIO_Pin_x);
|
||
else
|
||
GPIO_ResetBits(GPIOB,GPIO_Pin_x);
|
||
}
|
||
|