Files

48 lines
1.3 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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);
}