嵌入式stm32蜂鸣器实验报告
嵌入式stm32蜂鸣器实验报告
更多
以下是一份嵌入式STM32蜂鸣器实验报告的中文模板,包含实验目的、硬件、原理、代码及结果分析,可直接用于课程实验报告提交:
STM32蜂鸣器控制实验报告
一、实验目的
- 掌握STM32 GPIO的工作原理
- 学会使用HAL库驱动蜂鸣器
- 实现按键控制蜂鸣器鸣响与停止
- 掌握PWM驱动无源蜂鸣器的方法(扩展)
二、实验硬件
| 组件 | 型号/参数 |
|---|---|
| 主控MCU | STM32F103C8T6 (BluePill) |
| 蜂鸣器类型 | 有源蜂鸣器(5V驱动) |
| 驱动电路 | NPN三极管S8050+1kΩ限流电阻 |
| 按键 | 轻触开关(接GPIO) |
| 调试工具 | ST-Link V2 / USB-TTL |
三、硬件连接
| STM32引脚 | 连接目标 | 功能 |
|---|---|---|
| PB12 | 三极管基极 | 蜂鸣器控制信号 |
| PA0 | 按键 | 触发信号输入 |
| VCC(5V) | 蜂鸣器正极 | 电源 |
| GND | 蜂鸣器负极 | 接地 |
电路说明:因蜂鸣器工作电流较大,需通过三极管放大GPIO驱动能力。
四、实验原理
graph LR
A[STM32 GPIO] --> B[三极管开关电路]
B --> C[蜂鸣器发声]
D[按键输入] --> E[中断检测]
E --> F[改变GPIO状态]
- 有源蜂鸣器:高电平持续发声(本实验采用)
- 无源蜂鸣器:需PWM方波驱动(频率2k-5kHz)
五、关键代码(HAL库实现)
1. GPIO初始化 (main.c)
// 蜂鸣器控制引脚配置
GPIO_InitTypeDef GPIO_InitStruct = {0};
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_12;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽输出
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
// 按键引脚配置(外部中断)
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; // 下降沿触发
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(EXTI0_IRQn);
2. 按键中断回调函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
if(GPIO_Pin == GPIO_PIN_0) {
static uint8_t beep_state = 0;
beep_state = !beep_state;
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, beep_state); // 状态翻转
}
}
六、实验结果
| 操作 | 现象 |
|---|---|
| 按下按键 | 蜂鸣器持续鸣响 |
| 再次按下按键 | 蜂鸣器停止发声 |
| 长按按键 | 无异常,状态稳定 |
七、问题与解决
-
蜂鸣器不发声
- 检查三极管e-b-c极是否接反(应为集电极接蜂鸣器)
- 测量GPIO输出电平(万用表确认PB12电压变化)
-
按键抖动导致误触发
// 添加软件消抖(在回调函数中) HAL_Delay(50); // 延时50ms跳过抖动期 if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)==GPIO_PIN_RESET) // 二次检测
八、实验总结
- 掌握了GPIO输出控制外设的方法
- 理解了通过三极管驱动大电流设备的必要性
- 实现了中断响应与状态切换的编程逻辑
- 扩展思考:无源蜂鸣器需使用TIM定时器输出不同占空比PWM实现音调变化
附:电路示意图
+3.3V
│
├─1kΩ─┬─ PB12 (Control)
│ │
│ B│
│ NPN (S8050)
│ C│
│ ├─蜂鸣器+
│ E│
│ │
GND GND
可根据实际开发板型号(如正点原子/野火)修改引脚定义。完整代码工程及Proteus仿真文件可提供,如有需要可补充。
嵌入式Linux下LED报警灯驱动设计
嵌入式Linux下LED报警灯驱动设计及编程《嵌入式Linux下LED报警灯驱动设计及编程》实验报告学生姓名:学 号:专业班级:指导教师:完成时
2021-11-04 08:18:25
大学计算机实验报五告,大学计算机实验报告二_相关文章专题_写写帮文库 精选资料分享
时间:2019-05-12 01:07:32 作者:admin大学计算机实验报告一 长文档的组织、编辑与排版姓名: 学号: 专业: 年级: 指导教师: 年月日1 实验目的 学会长文档的组织、编辑
2021-09-13 07:41:16
stm32独立看门狗实验报告
stm32独立看门狗实验报告:所有资源均来自于普中STM32F103开发板相关资料,这是自己购买的一款开发板,如果原作者认为侵权,请联系我以便及
2021-07-22 07:33:43
51单片机实验报告总结
51单片机实验报告总结,利用定时器T0的16位不可重加载模式,编制一段程序,只有当INT0(P3.2)引脚输出高电平时,在P1.6输出一个方波控制一个指示灯。设单片机的时钟为12MHz,输出周期为200ms的方波,观察指示灯的变化。
2021-07-21 06:38:06
linux定时器编程实验报告与PLC定时器指令实验报告
《PLC定时器指令实验报告》由会员分享,可在线阅读,更多相关《PLC定时器指令实验报告(4页珍藏版)》请在人人文库网上搜索。1、实验二: 定时器
2021-07-01 07:16:35
7天热门专题
换一换
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 如何进行编码器的正确接线?接线方法介绍
- 什么是场效应管?它的作用是什么?
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- amoled屏幕和oled区别
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 苹果笔记本macbookpro18款与19款区别
- 通讯隔离作用
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机