超简单4行代码-STM32F103的HAL实现有源蜂鸣器报警

news2024/11/23 12:51:58
1、概述

在嵌入式项目开发中,使用蜂鸣器作为简单的报警或提示装置非常常见。根据不同的应用场景,我们可能会选择有源蜂鸣器或无源蜂鸣器。本文将重点介绍如何通过STM32F103系列单片机,利用HAL库,仅通过4行代码实现对有源蜂鸣器的控制,实现基本的报警功能。

2、无源蜂鸣器与有源蜂鸣器的区别

我们需要明确无源蜂鸣器和有源蜂鸣器的区别。有源蜂鸣器内部集成了震荡电路,只需提供直流电源即可发声,声音频率和音调通常由蜂鸣器内部电路决定,难以调整。而无源蜂鸣器则没有内置震荡电路,需要外部电路(如微控制器)提供一定频率的方波信号才能发声,因此声音频率和音调可以通过调整方波信号的频率来控制。

3、硬件连接

为了控制有源蜂鸣器,我们通常需要将其一端连接到STM32F103的一个GPIO引脚(假设为PB8),另一端通过一个三极管连接到地(或电源,取决于电路设计,但通常连接到地以简化电路)。三极管的作用是放大电流,这样,通过控制GPIO引脚的电平高低,可以控制三极管的导通与截止,进而控制有源蜂鸣器的发声。

4、软件实现

确保你已经在STM32CubeMX配置好PB8引脚为输出,并生成代码,编写下面4行代码实现“嘀嘀”的报警声。

  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET);
      HAL_Delay(1000);
	  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);
      HAL_Delay(1000);
  }
  /* USER CODE END 3 */
}

通过以上介绍,我们了解了如何在STM32F103上通过简单的4行代码实现有源蜂鸣器的报警功能。希望这对你的嵌入式开发之旅有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2039836.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

django学习入门系列之第九点《初识MySQL》

文章目录 9.1 初识网站9.2 初识MySQL下载安装创建配置文件初始化启动MySQL服务进入mysql查看已有文件夹退出(关闭连接)忘记密码 往期回顾 9.1 初识网站 Python相关:基础、函数、数据类型、面向、模块。前端开发直观:HTML、CSS、JavaScript、jQuery:[静态…

【运维】JetBrains Gateway (Pycharm) SSH免密连接,改为免密连接

一直要求输入密码,很烦人: 如何免密连接? 1 重新打开gateway,来到这个界面点新建连接: 2 点这里设置: 3 在这一页,你可以改你的所有配置,只要设置为password并且保存密码&…

详解Redis 高可用的方式 Redis Cluster

Redis 高可用方式 Redis 提供了多种高可用性方案,主要包括以下几种方式: 主从复制(Replication) 主从复制是最基本的高可用性方案,通过将数据从一个主节点复制到多个从节点来实现数据的冗余和读写分离。主节点负责所…

数据结构--数据结构概述

一、数据结构三要素 1. 数据的逻辑结构 数据的逻辑结构是指数据元素之间的关系和组织方式,通常分为线性结构和非线性结构。 线性结构:例如线性表,其中数据元素按照顺序排列,彼此之间存在一对一的关系。 非线性结构:…

android车载手机互联投屏新专题-实战作业布置

背景: 学习了马哥的投屏实战开发课程后,大家都可以实现如下图一样的手机车机多端互联的投屏场景。 即已经实现了手机和车机投屏互动,车机上手机画面屏幕可以与手机实体屏幕一样就是常见的Mirror模式,如果不一样就是课程里面讲的扩…

解析网络流量管理方案:简化基于云的DNS负载均衡

数字化时代,网络规模和流量需求的增长,催生了用户对可用性的需求、管理员对更好的访问和管理等需求。在大型的网络应用中,为保障站点的稳定性,会为服务或站点提供多台服务器,以平均分配每台服务器上的压力,…

上门做饭小程序项目源码功能介绍

上门做饭小程序通常包含以下功能,以便用户方便地享受到上门做饭的服务: 用户注册与登录:允许用户创建账户并登录,管理个人信息和偏好。 菜品浏览与选择:提供各种菜品的列表或菜单,用户可以浏览菜品详情、价…

C++STL详解(五)——list类的具体实现

一.本次所需实现的三个类及其成员函数接口 链表首先要有结点,因此我们需要实现一个结点类。 链表要有管理结点的结构,因此我们要有list类来管理结点。 链表中还要有迭代器,而迭代器的底层其实是指针。但是我们现有的结点类无法完成迭代器的…

在VB.net中,对数据排名次,用LINQ、SortedSet,还是用SortedList速度快

标题 在VB.net中,对数据排名次,用LINQ、SortedSet,还是用SortedList速度快 正文 在VB.NET中,选择最适合你需求的排序和索引方法时,需要考虑到数据的规模、是否需要频繁地更新数据结构、以及是否只需要排序结果或还需要…

【Hadoop】建立圈内组件的宏观认识

01存储02计算03调度04其他05回忆 众多组件们构建了大规模分布式计算和存储平台。本文介绍Hadoop生态圈中各个组件的主要功能和作用,辅助学者理解每个组件的定位和用途,从而建立对圈内组件的宏观认识。梳理清楚HDFS、MapReduce、YARN、Hive、HBase、Spark…

【大模型系列篇】Transformers综述--邱锡鹏

论文标题:A Survey of Transformers 论文作者:Tianyang Lin, Yuxin Wang, Xiangyang Liu, Xipeng Qiu 论文链接:https://arxiv.org/abs/2106.04554 Transformer 在许多人工智能领域(如自然语言处理、计算机视觉和音频处理&#…

【区块链+金融服务】山西省信易贷平台 | FISCO BCOS应用案例

2022 年 8 月 8 日,山西省发展改革委按照国家的顶层设计,指导山西股权交易中心建设山西省信易贷平台,包 括三个子平台:一是建设集金融产品超市、融资需求精准匹配、融资监测等于一体的山西省融资综合信用服务平台; 二是…

微信小程序--25(WXSS模板样式了解)

一、WXSS和CSS关系 大部分特性相同 1.wxss独有 rpx尺寸单位import 样式导入 二、rpx 1.原理 rpx将所有屏幕宽度等分为750份,自动换成像素实现屏幕适配 2.rpx与px之间换算 约分计算不同设备比例不同 三、样式导入 1.语法 importt”相对路径“;…

Qt 0814作业

一、思维导图 二、登录窗口界面 自由发挥登录窗口的应用场景,实现一个登录窗口界面 要求:每行代码都有注释 【需要用到的图片或者动图,自己去网上找】 #include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(par…

Grok-2的Beta版发布

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

高阶数据结构(Java):AVL树插入机制的探索

目录 1、概念 1.1 什么是AVL树 2.1 平衡因子 3、AVL树节点的定义 4、AVL树的插入机制 4.1 初步插入节点 4.2 更新平衡因子 4.3 提升右树高度 4.3.1 右单旋 4.3.2 左右双旋 4.4 提升左树高度 4.4.1 左单旋 4.4.2 右左双旋 5、AVL树的验证 6、AVL树的删除 1、概念 …

uni-app 使用九宫格(uni-grid)布局组件

1、运行环境 开发工具为 HBuilder X 4.23, 操作系统为 Windows 11。Vue.js 版本为 3. 2、操作步骤 首先,登录 HBuilder X。然后用桌面浏览器,访问官网组件网址。 https://ext.dcloud.net.cn/plugin?nameuni-grid 在组件网址右上角、点击“下载插…

出差学习笔记(1)汽车智能大灯一键标定功能

出差学习笔记(1)汽车智能大灯一键标定功能 今天看到了某公司制作的汽车智能大灯的一键标定功能,好奇,遂问之。 车前的两个大灯如何标定,我们可以将车辆开到一片墙前,将一些动态/静态图形打到墙上&#xff0…

Sublime Text常用快捷键大全

Sublime Text 是一款功能强大且广受欢迎的文本编辑器,其丰富的快捷键支持使得开发者能够更高效地编写和编辑代码。以下是 Sublime Text 中一些常用的快捷键,帮助你更加高效地使用这款工具: 功能分类快捷键 (Windows)快捷键 (Mac)新建文件Ctr…

Unity Shader变体优化与故障排除技巧

在 Unity 中编写着色器时,我们可以方便地在一个源文件中包含多个特性、通道和分支逻辑。在构建时,着色器源文件会被编译成着色器程序,这些程序包含一个或多个变体。变体是该着色器在满足一组条件后生成的版本,这通常会导致线性执行…