当前位置: 首页 > 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;将会影响汽…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...