正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-12-蜂鸣器
前言:
本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。
引用:
正点原子IMX6U仓库 (GuangzhouXingyi) - Gitee.com
《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.5.2.pdf》
正点原子资料下载中心 — 正点原子资料下载中心 1.0.0 文档
正文:
本文是 “正点原子[第二期]Linux之ARM(MX6U)裸机篇--第12讲” 的读书笔记。第12讲介绍如何使用通过GPIO操作蜂鸣器(beep),通过GPIO控制蜂鸣器的方法和前几讲中通过GPIO控制LED灯的方式是相似的。
1. 查看电路原理图中蜂鸣器(Beep)使用的GPIO管脚
查看电路原理图中蜂鸣器(Beep)使用的GPIO管脚,我购买的是正点原子I.MX6ULL Mini开发板,所以参考《IMX6ULL_MINI_V2.2(Mini底板原理图).pdf》,看到正点原子I.MX6ULL Mini开发板蜂鸣器在底板上使用 “BEEP”引脚控制,BEEP 引脚连接到I.MX6ULL 芯片的的 “SNVS_TAMPER1” 。分析下电路原理图中 “BEEP”引脚如何通过高低电平控制下蜂鸣器的开启关闭:
- BEEP引脚接在 S8550 PNP 三极管的基极,当beep引脚输出低电平时 S8550 PNP 三极管导通蜂鸣器发出响声;当beep引脚输出高电平时 S8550 PNP 三极管关闭,蜂鸣器关闭发生。
- BEEP引脚接在I.MX6ULL 芯片的的 “SNVS_TAMPER1”的IO引脚,将“SNVS_TAMPER1”复用为GPIO模式,并控制GPIO输出高电平或者低电平来控制蜂鸣器是否发出响声。

查看《IMX6ULL参考手册.pdf》,“SNVS_TAMPER1” 引脚在I.MX6ULL芯片参考手册中寄存器 IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER1 定义的复用模式如下,当SNVS_TAMPER1 寄存器值 'MUX_MODE=0x5' 时,该IO复用为 GPIO5_IO01。


GPIO5_IO01 IO接口复用配置为GPIO模式,和GPIO5_IO01 IO接口的电气特性配置方式和在前面几节中分析过来的“通过汇编语言来配置 LED 灯驱动程序GPIO寄存器”的方法是相同的。分为以下几步:
- 复用 GPIO5_IO01 为 GPIO 模式
- 设置 GPIO5_IO01 接口电气特性
- 设置 GPIO 的 GPIO5->GDIR,和 GPIO5->DR 寄存器来控制输出高低电平
2. 在上一节实验的基础上增加蜂鸣器 bsp_beep 源码
在上一节实验的基础上增加蜂鸣器 bsp_beep 源码。创建 '6_beep'目录,并拷贝上一节的‘5_led_c_bsp’ 程序源码到 '6_beep'目录。
mkdir 6_beep
cp -r 5_led_c_bsp/* 6_beep/
现在 '6_beep' 程序的框架已经具备,只需要在新的'6_beep' 项目里加上 'bsp_beep' 来操作蜂鸣器的GPIO引脚输出高低电平就可以控制蜂鸣器发声。
在VSCode目录里增加 'beep/bsp_beep.c' 和 'beep/bsp_beep.h' 两个源文件,在 'beep/bsp_beep.c' 中调用 NXP SDK 提供的API ‘IOMUXC_SetPinMux()’, 'IOMUXC_SetPinConfig()' 来设置IO的引脚复用为GPIO模式和设置IO的电气特性。

设置方法和上一节“LED驱动程序 BSP”中分析过得一样,通过在 NXP SDK 'fsl_iomuxc.h' 头文件中搜索 "GPIO5_IO01" 关键字找到需要的IO复用参数,并在传递给api接口函数 ‘IOMUXC_SetPinMux()’, 'IOMUXC_SetPinConfig()' 。
3. 修改 main.c 调用新增的 bsp_beep 接口
修改 main.c 调用新增的 bsp_beep 接口,不要忘记在 main.c 函数的起始处先调用 “beep_init()” 初始化蜂鸣器使用的GPIO引脚。

4. 修改Makefile并编译
修改Makefile,把新增加的 'beep/' 目录加到 makefile 文件中的 'INCLUDEDIRS' 和 'SRCDIRS',如上一节分析过的,通用Makefile就自动将新增加的 .c 源文件加入到makefile编译依赖列表中,并自动编译。
dimon@dimon-VirtualBox:~/Gitee/imx6ull_mini/6_beep$ make clean
dimon@dimon-VirtualBox:~/Gitee/imx6ull_mini/6_beep$ make
5. 烧录SD卡验证蜂鸣器是否可以正常鸣叫
烧录SD卡验证LED灯,使用正点原子提供的 'imxdownload' 烧录SD卡,然后把SD卡查到正点原子 I.MX6U APLHA/Mini 开发板上验证移植的 NXP SDK 蜂鸣器驱动程序是否运行正常,LED灯正常闪烁,蜂鸣器是否正常鸣叫。我本地实验验证结果是 LED 正常闪烁,蜂鸣器鸣叫正常。

相关文章:
正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-12-蜂鸣器
前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…...
H5 css动画效果
你可以使用 CSS 动画来实现这个效果。下面是一个简单的示例代码,展示了如何使用 CSS 中的关键帧动画来放大然后缩小一张图片,并使动画循环播放: html <!DOCTYPE html> <html lang"en"><head><meta charset&qu…...
创作纪念日(一周年)
机缘 我进入CSDN成为创作者是去年2023年的五月份,当时是在学校报名了蓝桥杯单片机组的比赛,觉得单片机方面有许多精妙之处,并且自学初学单片机实在有许多奇巧的设计点,有许多编程与硬件实际运行需要磨合的地方,这些惊…...
Oracle 数据库全面升级为 23ai
从 11g 到 12c 再到 19c,今天,我们迎来了 23ai ! “ Oracle AI Vector Search allows documents, images, and relational data that are stored in mission-critical databases to be easily searched based on their conceptual content Ge…...
Android WebView打开网址黑屏
1.先说解决方案: // 允许执行JavaScriptbinding.webView.getSettings().setJavaScriptEnabled(true);// 启用硬件加速binding.webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);// 允许混合内容。即使是通过HTTPS加载的页面也可以显示通过HTTP加载的资源。bin…...
软件测试之 接口测试 Postman使用
接口测试 URL HTTP协议 HTTP 请求部分 HTTP响应部分 Postman使用 界面介绍 这里 注意 如果你无法访问 那么 captchaImage这个打错了,给的资料中是错误的地址 https://kdtx-test.itheima.net/api/captchaImage登录接口 科大天下 第一个接口的登录设置 https://kd…...
惠海 H4012 同步降压芯片IC 30V降压3.3V5V12V方案 支持EN使能控制
大家好,今天给大家介绍惠海H4012同步降压芯片IC是一款降压恒压芯片,适用于多种电压转换需求。以下是对该芯片及其30V降压至3.3V、5V、12V方案和支持EN使能控制功能的具体介绍: 首先,H4012是一款内置30V耐压MOS的同步降压型DC-DC转…...
Android Studio查看xml文件的修改时间和记录
Android Studio查看xml文件的修改时间和记录 Android Studio里面如果是Java/Kotlin编写界面,可以点击函数开头上面的提交在直接,然后在编辑界面的左侧查看历史时间上的修改记录,但是xml文件里面没有直观的这样操作方式。 但xml里面可以通过快…...
源码拾贝三则
目录 一 一种枚举类型的新型使用方式 二 Eigen库中的LDLT分解 三 Eigen中的访问者模式 一 一种枚举类型的新型使用方式 ///D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\xiosbase enum _Iostate { // consta…...
nginx配置文件和配置命令详解案例
一.nginx.conf配置结构 1.1配置结构图 1.2 nginx中配置nginx.conf配置内容 #user nobody; user root; # 表示worker进程是有root用户去执行的 worker_processes 2; events {# 默认使用epolluse epoll;# 每个worker链接最大数据worker_connections 1024; } http {include …...
服务网关GateWay原理
文章目录 自动装配核心类GatewayAutoConfigurationDispatcherHandler请求处理阶段apply方法httpHandler#handle方法WebHandler#handle方法DispatchHanlder#handle方法第一步 getHandler获取请求映射第二步 invokeHandler 请求适配第三步 handleResult请求处理总结 上一篇博文我…...
第12节 第二种shellcode编写实战(1)
我最近在做一个关于shellcode入门和开发的专题课👩🏻💻,主要面向对网络安全技术感兴趣的小伙伴。这是视频版内容对应的文字版材料,内容里面的每一个环境我都亲自测试实操过的记录,有需要的小伙伴可以参考…...
在Ubuntu上安装Anaconda并配置远程访问Jupyter
安装 下载Anaconda的.sh文件后,上传到服务器,然后进行安装: chmod x anaconda.sh ./anaconda.sh创建虚拟环境 可以指定Python版本创建虚拟环境: conda create --name langchain python3.11.7 conda activate langchain conda …...
格雷希尔GripSeal:E10系列低压信号电测试连接器,应用于新能源汽车的DCR测试和EOL测试
新能源车的电驱动、电池包等都有一些信号接口,从几针到几十针不等,而且每种接口都有独特的电性能要求,这些接口在电池包进DCR测试或是EOL测试时,为了满足这些信号接口的需求,我们设计了E10系列信号针快速接头ÿ…...
飞跨电容型的三电平(FC-NPC)逆变器simulink仿真模型
本人搭建了飞跨电容型的三电平逆变器simulink仿真模型,相较于二极管钳位型三电平逆变器而言,钳位二极管变为飞跨的电容。采用SPWM调制和均流均压控制,通过搭建仿真模型得到三电平波形。 三电平拓扑中的飞跨电容是指在电路的输出端使用电容来实…...
前端Sass使用详解,看这篇就够了
Sass(Syntactically Awesome Style Sheets)是一种CSS预处理器,它被设计为改善CSS的可读性和实用性。Sass使用类似于CSS的语法,但增加了变量、嵌套、混合(mixins)、函数等功能,使得编写CSS更加高…...
用js操作dom节点的一些方法
一、获取节点 document.getElementById(id); 返回拥有指定 id 的第一个节点 document.getElementsByName(name); 返回带有指定名称的节点集合 document.getElementsByTagName(tagname); 返回带有指定标签名的节点集合 document.getElementsByClassName(classname); 返回带有…...
electron 中拦截内嵌页面 beforeunload 的弹窗提示
window 的 beforeunload 事件提示在electron 不兼容,弹窗提示不出来,还会导致莫名其妙的假死问题,下面记录一下解决方法。 1. 如果仅需要拦截弹窗: win.webContents.on(will-prevent-unload, (event) > {event.preventDefault(…...
hcip-datacom英文词汇积累简述3
序号 词汇 中文 1 port link-type access 端口链路类型为接入 2 batch 批量 3 vlan batch 2 3 虚拟局域网批量2和3 4 Default 默认 5 port default vlan 2 端口默认虚拟局域网2 6 trunk 主干 7 port link-type trunk 端口链路类型为主干 8 allow-pass 全部过关 9 port trunk al…...
什么是新能源汽车热管理?
前言 新能源汽车热管理是指针对电动汽车等新型动力系统所涉及的热量控制和调节技术,其包括散热、冷却、加热、温度控制等方面。在新能源汽车中,电池、电动机、控制器等部件都会产生一定的热量,如果不进行有效的热管理,将会影响汽…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...
