【STM32单片机-库函数】蜂鸣器——beep

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNjA1MzAw,size_16,color_FFFFFF,t_70

有源蜂鸣器,高电平触发

测试使用的蜂鸣器如上图。

beep.h

#ifndef __BEEP_H
#define __BEEP_H	 
/************************************************************
**> File Name: 			beep.h																	
**> Description:		beep GPIO - hardware driver
**> Author: 				xinso
**> blog:  					xinso.blog.csdn.net
**> Created Time: 	2021.04.05
**--------------------------------------------------------
**> 本程序只供学习使用,未经作者许可,不得用于其它任何用途
*************************************************************/

#ifdef __cplusplus
extern "c"{
#endif
	
#include "sys.h"

/* 直接操作寄存器的方法控制IO */
#define	digitalHi(p,i)		 {p->BSRR=i;}	 //输出为高电平		
#define digitalLo(p,i)		 {p->BRR=i;}	 //输出低电平
#define digitalToggle(p,i) {p->ODR ^=i;} //输出反转状态

/* 蜂鸣器端口引脚定义*/
#define BEEP_GPIO_PORT    	GPIOB			              
#define BEEP_GPIO_CLK 	    RCC_APB2Periph_GPIOB		
#define BEEP_GPIO_PIN		  	GPIO_Pin_8  


/* 我买的蜂鸣器模块是高电平有效的,所以digitalHi可以让蜂鸣器响*/
#define BEEP_ON							digitalHi(BEEP_GPIO_PORT, BEEP_GPIO_PIN)		//开启蜂鸣器
#define BEEP_OFF		 				digitalLo(BEEP_GPIO_PORT, BEEP_GPIO_PIN)		//关闭蜂鸣器

void BEEP_GPIO_Init(void);	//初始化

#ifdef __cplusplus 
}
#endif

#endif

有问题需要请教的同学,添加Q裙(群: 470804974)

beep.c

#include "beep.h"

/************************************************************
**> File Name: 			beep.c																	
**> Description:		beep GPIO - hardware driver
**> Author: 				xinso
**> blog:  					xinso.blog.csdn.net
**> Created Time: 	2021.04.05
**--------------------------------------------------------
**> 本程序只供学习使用,未经作者许可,不得用于其它任何用途
*************************************************************/

//蜂鸣器GPIO初始化, 无需改动 
void BEEP_GPIO_Init(void)
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(BEEP_GPIO_CLK, ENABLE);	 				//使能GPIO端口时钟
 
 GPIO_InitStructure.GPIO_Pin = BEEP_GPIO_PIN;                //引脚配置
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;            //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;            //速度为50MHz
 GPIO_Init(BEEP_GPIO_PORT, &GPIO_InitStructure);            //根据配置的参数,初始化GPIO
 
 BEEP_OFF					//关闭蜂鸣器输出
}

Test程序测试示例:

#include "sys.h"	
#include "delay.h"	

#include "beep.h" //加入头文件

int main(void)
{
	delay_init();	    	 	//延时函数初始化	  

	BEEP_GPIO_Init(); 		    //初始化蜂鸣器端口

	while(1)
	{
		BEEP_ON		  
		delay_ms(300);//延时300ms
		BEEP_OFF  
		delay_ms(300);//延时300ms
	}
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜半少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值