当前位置:网站首页>STM32F103有源蜂鸣器驱动程序
STM32F103有源蜂鸣器驱动程序
2022-07-26 19:18:00 【卖身买镜头】
有源蜂鸣器连接在 GPIOB 的第5脚
buzzer.h文件
#ifndef __BUZZER_H
#define __BUZZER_H
#include "sys.h"
#define BUZZERPORT GPIOB //定义IO接口
#define BUZZER GPIO_Pin_5 //定义IO接口
void BUZZER_Init(void);//初始化
void BUZZER_BEEP1(void);//响一声
#endif
buzzer.c文件
#include "buzzer.h"
#include "delay.h"
void BUZZER_Init(void){
//蜂鸣器的接口初始化
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = BUZZER; //选择端口号
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //选择IO接口工作方式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置IO接口速度(2/10/50MHz)
GPIO_Init(BUZZERPORT, &GPIO_InitStructure);
GPIO_WriteBit(BUZZERPORT,BUZZER,(BitAction)(1)); //蜂鸣器接口输出高电平1
}
void BUZZER_BEEP1(void){
//蜂鸣器响一声
u16 i;
for(i=0;i<200;i++){
GPIO_WriteBit(BUZZERPORT,BUZZER,(BitAction)(0)); //蜂鸣器接口输出0
delay_us(500); //延时
GPIO_WriteBit(BUZZERPORT,BUZZER,(BitAction)(1)); //蜂鸣器接口输出高电平1
delay_us(500); //延时
}
}
/* 选择IO接口工作方式: GPIO_Mode_AIN 模拟输入 GPIO_Mode_IN_FLOATING 浮空输入 GPIO_Mode_IPD 下拉输入 GPIO_Mode_IPU 上拉输入 GPIO_Mode_Out_PP 推挽输出 GPIO_Mode_Out_OD 开漏输出 GPIO_Mode_AF_PP 复用推挽输出 GPIO_Mode_AF_OD 复用开漏输出 */
main.c
/********************************************************************************************* 程序名: 蜂鸣器驱动程序(在按键控制LED基础上加入提示音) 硬件支持: STM32F103C8 外部晶振8MHz RCC函数设置主频72MHz *********************************************************************************************/
#include "stm32f10x.h" //STM32头文件
#include "sys.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "flash.h"
#include "buzzer.h"
#define FLASH_START_ADDR 0x0801f000 //写入的起始地址
int main (void){
//主程序
u16 a; //定义变量
//初始化程序
RCC_Configuration(); //时钟设置
LED_Init();//LED初始化
KEY_Init();//按键初始化
BUZZER_Init();//蜂鸣器初始化
BUZZER_BEEP1();//蜂鸣器音1
a = FLASH_R(FLASH_START_ADDR);//从指定页的地址读FLASH
GPIO_Write(LEDPORT,a|0xfffc&GPIO_ReadOutputData(LEDPORT)); //直接数值操作将变量值写入LED(LED在GPIOB组的PB0和PB1上)
//主循环
while(1){
//示例4:有锁存
if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){
//读按键接口的电平
delay_ms(20); //延时20ms去抖动
if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){
//读按键接口的电平
//在2个LED上显示二进制加法
a++; //变量加1
if(a>3){
//当变量大于3时清0
a=0;
}
GPIO_Write(LEDPORT,a|0xfffc&GPIO_ReadOutputData(LEDPORT)); //直接数值操作将变量值写入LED(LED在GPIOB组的PB0和PB1上)
BUZZER_BEEP1();//蜂鸣器音1
FLASH_W(FLASH_START_ADDR,a); //从指定页的地址写入FLASH
while(!GPIO_ReadInputDataBit(KEYPORT,KEY1)); //等待按键松开
}
}
}
}
/* 【变量定义】 u32 a; //定义32位无符号变量a u16 a; //定义16位无符号变量a u8 a; //定义8位无符号变量a vu32 a; //定义易变的32位无符号变量a vu16 a; //定义易变的 16位无符号变量a vu8 a; //定义易变的 8位无符号变量a uc32 a; //定义只读的32位无符号变量a uc16 a; //定义只读 的16位无符号变量a uc8 a; //定义只读 的8位无符号变量a #define ONE 1 //宏定义 delay_us(1); //延时1微秒 delay_ms(1); //延时1毫秒 delay_s(1); //延时1秒 */
边栏推荐
- go+mysql+redis+vue3简单聊室,第5弹:使用消息队列和定时任务同步消息到mysql
- IM即时通讯开发如何压缩移动网络下APP的流量消耗
- 【OBS】Dropped Frames And General Connection Issues
- 试用了多款报表工具,终于找到了基于.Net 6开发的一个了
- Zhongtian steel uses tdengine in GPS and AIS scheduling
- Kingbases SQL language reference manual of Jincang database (16. SQL statement: create sequence to delete)
- 一文看懂中国的金融体系
- 金仓数据库 KingbaseES SQL 语言参考手册 (14. SQL语句:COMMIT 到 CREATE LANGUAGE)
- Kingbases SQL language reference manual of Jincang database (13. SQL statement: alter synonym to comment)
- 金仓数据库 KingbaseES SQL 语言参考手册 (16. SQL语句: CREATE SEQUENCE 到 DELETE)
猜你喜欢

u盘损坏怎么恢复原来数据,u盘损坏数据如何恢复
![Design of intelligent weighing system based on Huawei cloud IOT (STM32) [i]](/img/e4/4ebce448debf4bae308e2d5972a2a2.png)
Design of intelligent weighing system based on Huawei cloud IOT (STM32) [i]

3万脱发人,撑起一个IPO

MySQL 子查询使用方式

How to compress the traffic consumption of APP under mobile network in IM development

Ten sorting details

go+mysql+redis+vue3简单聊室,第6弹:使用vue3和element-plus调用接口

银行业概览

N圆最密堆积、最小外接正方形的matlab求解(二维、三维等圆Packing 问题)

kvm虚拟化
随机推荐
Excel-VBA 快速上手(十一、字符串常用操作)
Bug feedback: synchronization failed
[internship experience] exception handling and URL result response data processing
Detailed explanation of Yolo v1
Linux 定时备份数据库并删除 N 天以前的数据
Jincang database kingbasees SQL language reference manual (21. Kes regular expression support)
2022/07/26 learning notes (day16) abstraction and interface
numpy.newaxis
DOM case: 10 second countdown - write jump page related knowledge
[PHP] MySQL native PHP operation - Tianlong eight steps
直播预约有奖| 高级咨询顾问徐雁斐:效能度量如何助力高效精细的外包管理
福建争抢VC/PE
Digital transformation of enterprises has become a general trend, and it is important to choose the right online collaboration tools
How to uninstall win11 edge? The method tutorial of completely uninstalling win11 edge browser
Leetcode daily practice - 27. Remove elements
如何同步等待多个异步 task 的返回结果 ?
数据库笔记(来自老社)
企业数字化转型成大趋势,选对在线协作工具很重要
cv2.resize()
The authentication type 10 is not supported