当前位置: 首页 > news >正文

正点原子[第二期]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寄存器”的方法是相同的。分为以下几步:

  1. 复用 GPIO5_IO01  为 GPIO 模式
  2. 设置 GPIO5_IO01 接口电气特性
  3. 设置 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 动画来实现这个效果。下面是一个简单的示例代码&#xff0c;展示了如何使用 CSS 中的关键帧动画来放大然后缩小一张图片&#xff0c;并使动画循环播放&#xff1a; html <!DOCTYPE html> <html lang"en"><head><meta charset&qu…...

创作纪念日(一周年)

机缘 我进入CSDN成为创作者是去年2023年的五月份&#xff0c;当时是在学校报名了蓝桥杯单片机组的比赛&#xff0c;觉得单片机方面有许多精妙之处&#xff0c;并且自学初学单片机实在有许多奇巧的设计点&#xff0c;有许多编程与硬件实际运行需要磨合的地方&#xff0c;这些惊…...

Oracle 数据库全面升级为 23ai

从 11g 到 12c 再到 19c&#xff0c;今天&#xff0c;我们迎来了 23ai &#xff01; “ 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.先说解决方案&#xff1a; // 允许执行JavaScriptbinding.webView.getSettings().setJavaScriptEnabled(true);// 启用硬件加速binding.webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);// 允许混合内容。即使是通过HTTPS加载的页面也可以显示通过HTTP加载的资源。bin…...

软件测试之 接口测试 Postman使用

接口测试 URL HTTP协议 HTTP 请求部分 HTTP响应部分 Postman使用 界面介绍 这里 注意 如果你无法访问 那么 captchaImage这个打错了&#xff0c;给的资料中是错误的地址 https://kdtx-test.itheima.net/api/captchaImage登录接口 科大天下 第一个接口的登录设置 https://kd…...

惠海 H4012 同步降压芯片IC 30V降压3.3V5V12V方案 支持EN使能控制

大家好&#xff0c;今天给大家介绍惠海H4012同步降压芯片IC是一款降压恒压芯片&#xff0c;适用于多种电压转换需求。以下是对该芯片及其30V降压至3.3V、5V、12V方案和支持EN使能控制功能的具体介绍&#xff1a; 首先&#xff0c;H4012是一款内置30V耐压MOS的同步降压型DC-DC转…...

Android Studio查看xml文件的修改时间和记录

Android Studio查看xml文件的修改时间和记录 Android Studio里面如果是Java/Kotlin编写界面&#xff0c;可以点击函数开头上面的提交在直接&#xff0c;然后在编辑界面的左侧查看历史时间上的修改记录&#xff0c;但是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入门和开发的专题课&#x1f469;&#x1f3fb;‍&#x1f4bb;&#xff0c;主要面向对网络安全技术感兴趣的小伙伴。这是视频版内容对应的文字版材料&#xff0c;内容里面的每一个环境我都亲自测试实操过的记录&#xff0c;有需要的小伙伴可以参考…...

在Ubuntu上安装Anaconda并配置远程访问Jupyter

安装 下载Anaconda的.sh文件后&#xff0c;上传到服务器&#xff0c;然后进行安装&#xff1a; chmod x anaconda.sh ./anaconda.sh创建虚拟环境 可以指定Python版本创建虚拟环境&#xff1a; conda create --name langchain python3.11.7 conda activate langchain conda …...

格雷希尔GripSeal:E10系列低压信号电测试连接器,应用于新能源汽车的DCR测试和EOL测试

新能源车的电驱动、电池包等都有一些信号接口&#xff0c;从几针到几十针不等&#xff0c;而且每种接口都有独特的电性能要求&#xff0c;这些接口在电池包进DCR测试或是EOL测试时&#xff0c;为了满足这些信号接口的需求&#xff0c;我们设计了E10系列信号针快速接头&#xff…...

飞跨电容型的三电平(FC-NPC)逆变器simulink仿真模型

本人搭建了飞跨电容型的三电平逆变器simulink仿真模型&#xff0c;相较于二极管钳位型三电平逆变器而言&#xff0c;钳位二极管变为飞跨的电容。采用SPWM调制和均流均压控制&#xff0c;通过搭建仿真模型得到三电平波形。 三电平拓扑中的飞跨电容是指在电路的输出端使用电容来实…...

前端Sass使用详解,看这篇就够了

Sass&#xff08;Syntactically Awesome Style Sheets&#xff09;是一种CSS预处理器&#xff0c;它被设计为改善CSS的可读性和实用性。Sass使用类似于CSS的语法&#xff0c;但增加了变量、嵌套、混合&#xff08;mixins&#xff09;、函数等功能&#xff0c;使得编写CSS更加高…...

用js操作dom节点的一些方法

一、获取节点 document.getElementById(id); 返回拥有指定 id 的第一个节点 document.getElementsByName(name); 返回带有指定名称的节点集合 document.getElementsByTagName(tagname); 返回带有指定标签名的节点集合 document.getElementsByClassName(classname); 返回带有…...

electron 中拦截内嵌页面 beforeunload 的弹窗提示

window 的 beforeunload 事件提示在electron 不兼容&#xff0c;弹窗提示不出来&#xff0c;还会导致莫名其妙的假死问题&#xff0c;下面记录一下解决方法。 1. 如果仅需要拦截弹窗&#xff1a; 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…...

什么是新能源汽车热管理?

前言 新能源汽车热管理是指针对电动汽车等新型动力系统所涉及的热量控制和调节技术&#xff0c;其包括散热、冷却、加热、温度控制等方面。在新能源汽车中&#xff0c;电池、电动机、控制器等部件都会产生一定的热量&#xff0c;如果不进行有效的热管理&#xff0c;将会影响汽…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...

基于鸿蒙(HarmonyOS5)的打车小程序

1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...

rknn toolkit2搭建和推理

安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 &#xff0c;不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源&#xff08;最常用&#xff09; conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...

2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案

一、延迟敏感行业面临的DDoS攻击新挑战 2025年&#xff0c;金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征&#xff1a; AI驱动的自适应攻击&#xff1a;攻击流量模拟真实用户行为&#xff0c;差异率低至0.5%&#xff0c;传统规则引…...

网页端 js 读取发票里的二维码信息(图片和PDF格式)

起因 为了实现在报销流程中&#xff0c;发票不能重用的限制&#xff0c;发票上传后&#xff0c;希望能读出发票号&#xff0c;并记录发票号已用&#xff0c;下次不再可用于报销。 基于上面的需求&#xff0c;研究了OCR 的方式和读PDF的方式&#xff0c;实际是可行的&#xff…...