linuxARM裸机学习笔记(2)----汇编LED灯实验

news2024/11/15 0:04:54

MX6ULL IO 

IO的复用功能

 这里的只使用了低五位,用来配置io口,其中bit0~bit3(MUX_MODE)就是设置 GPIO1_IO00 的复用功能的,GPIO1_IO00 一共可以复用为 9种功能 IO,分别对应 ALT0~ALT8。每种对应了不同的功能

io的属性配置

 HYS(bit16)用来使能迟滞比较器,当 IO 作为输入功能的时候有 效,用于设置输入接收器的施密特触发器是否使能。如果需要对输入波形进行整形的话可以使 能此位。此位为 0 的时候禁止迟滞比较器,为 1 的时候使能迟滞比较器。

 PUS(bit15:14)用来设置上下拉电阻的,一共有四种选项可以选择,如下所示:

位设置 含义

00     100K 下拉

01     47K 上拉

10     100K 上拉

11      22K 上拉

PUE(bit13) IO 作为输入的时候,这个位用来设置 IO 使用上下
拉还是状态保持器。当为 0 的时候使用状态保持器,当为 1 的时候使用上下拉。状态保持器在
IO 作为输入的时候才有用,顾名思义,就是当外部电路断电以后此 IO 口可以保持住以前的状
态。
PKE(bit12) 此位用来使能或者禁止上下拉 / 状态保持器功能,为
0 时禁止上下拉 / 状态保持器,为 1 时使能上下拉和状态保持器。
SPEED(bit7:6) IO 用作输出的时候,此位用来设置 IO
度,设置如表 8.1.4.2 所示:
位设置 速度
00         低速 50M
01         中速 100M
10         中速 100M
11         最大速度 200M
DSE(bit5:3) IO 用作输出的时候用来设置 IO 的驱动能力,
总共有 8 个可选选项,如表 8.1.4.3 所示:
位设置 速度
000 输出驱动关闭
001         R0(3.3V 下 R0 260 Ω, 1.8V R0 150 Ω,接 DDR 的时候是 240 Ω )
010         R0/2
011         R0/3
100         R0/4
101         R0/5
110         R0/6
111         R0/7
SRE(bit0) 设置压摆率,当此位为 0 的时候是低压摆率,当为 1
的时候是高压摆率。这里的压摆率就是 IO 电平跳变所需要的时间,比如从 0 1 需要多少时
间,时间越小波形就越陡,说明压摆率越高;反之,时间越多波形就越缓,压摆率就越低。如
果你的产品要过 EMC 的话那就可以使用小的压摆率,因为波形缓和,如果你当前所使用的 IO
做高速通信的话就可以使用高压摆率。

GPIO的功能配置

前面配置了当前的IO口为GPIO口,这一步将配置GPIO的功能配置。

 配置GPIO的功能看的是上面的8个寄存器。

GPIOx_DR

GPIO 被配置为输出功能以后,向指定的位写入数据那么相应的 IO 就会输出相应的高低电平。

GPIOx_GDIR 

 用来设置io口的方向

GPIOx_PSR

PSR 寄存器也是一个 GPIO 对应一个位,读取相应的位即可获取对应的 GPIO 的状态,也就是 GPIO 的高低电平值

GPIOx_ICR1和GPIOx_ICR2 

 

 ICR1 用于 IO0~15 的配置,ICR2 用于 IO16~31 的配置。ICR1 寄存器中一个 GPIO 用两个位

00   低电平触发
01   高电平触发
10   上升沿触发 
11   下降沿触发

GPIOx_ISR

 ISR 寄存器也是 32 位寄存器,一个 GPIO 对应一个位,只要某个 GPIO 的中断发生,那么  

ISR 中相应的位就会被置 1

GPIOx_EDGE_SEL

 EDGE_SEL 寄存器用来设置边沿中断,这个寄存器会覆盖 ICR1 ICR2 的设置,同样是一 个 GPIO 对应一个位。如果相应的位被置 1,那么就相当与设置了对应的 GPIO 是上升沿和下降 沿(双边沿)触发

时钟设置

和stm32一样需要设置时钟

代码如下:

/**************************************************************
Copyright © zuozhongkai Co., Ltd. 1998-2019. All rights reserved.
文件名	: 	 mian.c
作者	   : 左忠凯
版本	   : V1.0
描述	   : 裸机实验1 汇编点灯
			 使用汇编来点亮开发板上的LED灯,学习和掌握如何用汇编语言来
			 完成对I.MX6U处理器的GPIO初始化和控制。
其他	   : 无
论坛 	   : www.wtmembed.com
日志	   : 初版V1.0 2019/1/3 左忠凯创建
**************************************************************/

.global _start  /* 全局标号 */

/*
 * 描述:	_start函数,程序从此函数开始执行此函数完成时钟使能、
 *		  GPIO初始化、最终控制GPIO输出低电平来点亮LED灯。
 */
_start:
	/* 例程代码 */
	/* 1、使能所有时钟 */
	ldr r0, =0X020C4068 	/* CCGR0 */
	ldr r1, =0XFFFFFFFF  
	str r1, [r0]		
	
	ldr r0, =0X020C406C  	/* CCGR1 */
	str r1, [r0]

	ldr r0, =0X020C4070  	/* CCGR2 */
	str r1, [r0]
	
	ldr r0, =0X020C4074  	/* CCGR3 */
	str r1, [r0]
	
	ldr r0, =0X020C4078  	/* CCGR4 */
	str r1, [r0]
	
	ldr r0, =0X020C407C  	/* CCGR5 */
	str r1, [r0]
	
	ldr r0, =0X020C4080  	/* CCGR6 */
	str r1, [r0]
	

	/* 2、设置GPIO1_IO03复用为GPIO1_IO03 */
	ldr r0, =0X020E0068	/* 将寄存器SW_MUX_GPIO1_IO03_BASE加载到r0中 */
	ldr r1, =0X5		/* 设置寄存器SW_MUX_GPIO1_IO03_BASE的MUX_MODE为5 */
	str r1,[r0]

	/* 3、配置GPIO1_IO03的IO属性	
	 *bit 16:0 HYS关闭
	 *bit [15:14]: 00 默认下拉
     *bit [13]: 0 kepper功能
     *bit [12]: 1 pull/keeper使能
     *bit [11]: 0 关闭开路输出
     *bit [7:6]: 10 速度100Mhz
     *bit [5:3]: 110 R0/6驱动能力
     *bit [0]: 0 低转换率
     */
    ldr r0, =0X020E02F4	/*寄存器SW_PAD_GPIO1_IO03_BASE */
    ldr r1, =0X10B0
    str r1,[r0]

	/* 4、设置GPIO1_IO03为输出 */
    ldr r0, =0X0209C004	/*寄存器GPIO1_GDIR */
    ldr r1, =0X0000008		
    str r1,[r0]

	/* 5、打开LED0
	 * 设置GPIO1_IO03输出低电平
	 */
	ldr r0, =0X0209C000	/*寄存器GPIO1_DR */
   ldr r1, =0		
   str r1,[r0]

/*
 * 描述:	loop死循环
 */
loop:
	b loop 				

	

	
	


因为需要LED0亮,所以就只需要配置DR寄存器【控制电平】和GDIR寄存器【控制输入输出】

实验结果如下:

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

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

相关文章

优思学院|精益生产如何真正落地?你要掌握这4个P!

怎样才能让精益生产的方法落地?这是一个经常听到的问题,但对于这个问题很多人有不同的想法和答法,因为大家对“落地”一词有着不同的看法。 “落地”是指整个管理系统的重组,是企业把所学的管理知识和方法,在经营实践…

那些不想骑车的正常理由和十三不骑。

骑友们最热门,也是常常讨论的话题大多是如何骑自行车?但有时候,我们也会思考一些另类的问题。例如,那些不想骑车的理由。 首先,我们可以从科学角度来看待这个问题。骑车虽然有益于健康,但是骑车的姿势也会对…

用msys2安装verilator并用spinal进行仿真

一 参考 SpinalHDL 开发环境搭建一步到位(图文版) - 极术社区 - 连接开发者与智能计算生态 (aijishu.com)https://aijishu.com/a/1060000000255643Setup and installation of Verilator — SpinalHDL documentation

微信认证申请流程(政府/事业单位类型)

第一步:登录微信公众平台->设置->微信认证->开通 第二步:同意协议:签署《微信公众平台认证服务协议》 第三步:验证管理员 第四步:选择认证类型及填写认证资料 选择认证类型及上传申请公函 政府/事业单位资质…

沙箱逃逸复现

当this指向window 原理 1.this直接指向window,拿到window的tostring的constructor来利用构造函数拿到process 是对象且指向沙箱外部,才可以利用 const vm require(vm); const script const process this.toString.constructor(return process)() pr…

vs code 如何配置保存cpolar所建立公共互联网网页的隧道参数?

文章目录 📋 前言1.如何配置保存cpolar所建立的隧道参数?2.本地安装 VS Code并修改隧道参数2.1 Visual studio Code 下载2.2 配置Visual studio Code 相关参数2.3 编辑 cpolar.yml 隧道参数文件2.3 修改website隧道参数 3. 检查 cpolar.yml 文件配置是否…

直播课 | 大橡科技研发总监丁端尘博士“类器官芯片技术在新药研发中的应用”

从类器官到类器官芯片,正在生物科学领域大放异彩。 药物研发需要新方法 众所周知,一款新药是一个风险大、周期长、成本高的艰难历程,国际上有一个传统的“双十”说法——10年时间,10亿美金,才可能成功研发出一款新药…

前期自学Java之Arrays篇及JDK帮助文档的下载

Assays 数组的工具类java.util.Arrays 一. 数组的简介 由于数组对象本身并没有什么方法可以提供给我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数组对象进行一些基本的操作 Arrays类中的方法都是static修饰的静态方法,在…

Spring-1-透彻理解Spring XML的Bean创建--IOC

学习目标 上一篇文章我们介绍了什么是Spring,以及Spring的一些核心概念,并且快速快发一个Spring项目,实现IOC和DI,今天具体来讲解IOC 能够说出IOC的基础配置和Bean作用域 了解Bean的生命周期 能够说出Bean的实例化方式 一、Bean的基础配置 …

jenkins准备

回到目录 jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构…

项目中使用非默认字体

项目场景: 由于开发需要,默认的字体不符合开发需求,有时候我们需要引入某种字体到项目中 解决方案: 首先需要下载或引入字体包 然后创建一个 index.css 文件用于声明引入字体名称 font-face {font-family: "YouSheBiao…

用html+javascript打造公文一键排版系统13:增加半角字符和全角字符的相互转换功能

一、实践发现了bug和不足 今天用了公文一键排版系统对几个PDF文件格式的材料进行文字识别后再重新排版,处理效果还是相当不错的,节约了不少的时间。 但是也发现了三个需要改进的地方: (一)发现了两个bug&#xff1a…

一起学算法(滑动窗口篇)

前言: 对于滑动窗口,有长度固定的窗口,也有长度可变的窗口,一般是基于数组进行求解,对于一个数组中两个相邻的窗口,势必会有一大部分重叠,这部分重叠的内容是不需要重复计算的,所以我…

Nacos适配人大金仓国产数据库

nacos版本2.2.0 人大金仓版本8.6.0 一、相关文件 Nacos官方文档-数据源插件https://nacos.io/zh-cn/docs/v2/plugin/datasource-plugin.html Nacos2.2.0源码https://github.com/alibaba/nacos/archive/refs/tags/2.2.0.zip 人大金仓驱动https://download.csdn.net/download/q…

无人机航测技术有何特点?主要应用在哪些方面?

无人机航测是航空摄影测量的一种,主要面向低空遥感领域,具有成本低、快速高效、适用范围广等特点。目前,无人机航测主要应用于地形测绘、城市数字化建设、工程建设等方面。 无人机航测技术的特点 1、作业成本低 传统的人工测量技术主要利用…

Bigemap如何查看高清影像图

工具 Bigemap gis office地图软件 分享一个可以查看非常高清影像图的软件,平时外出徒步的时候用来查看路线。 首先要去搜索安装bigemap gis office这个软件,打开软件,要提示你去添加地图的。然后去点击选择地图这个按钮,列表中有…

CobaltStirke BOF技术剖析(一)|BOF实现源码级分析

简介 对BOF(Beacon Object File)的支持是在CobaltStrike4.1版本中新引入的功能。BOF文件是由c代码编译而来的可在Beacon进程中动态加载执行的二进制程序。无文件执行与无新进程创建的特性更加符合OPSEC的原则,适用于严苛的终端对抗场景。低开发门槛与便利的内部Bea…

Linux学习之延时计划任务anacontab和锁文件flock

cat /etc/redhat-release看到操作系统的版本是CentOS Linux release 7.6.1810 (Core),uname -r可以看到内核版本是3.10.0-957.21.3.el7.x86_64 参考的博客有: 1.《Linux anacron命令用法详解》 2.《详解anacron 命令》 3.《Anacron的用法》 4.《shell脚…

ip网络广播系统网络音频解码终端公共广播SV-7101

SV-7101V网络音频终端产品简介 网络广播终端SV-7101V,接收网络音频流,实时解码播放。本设备只有网络广播功能,是一款简单的网络广播终端。提供一路线路输出接功放或有源音箱。 产品特点 ■ 提供固件网络远程升级■ 标准RJ45网络接口&…

Android:自己写一个简单记事本

一、前言:我的app是点击加号跳转到另一个界面 那么我遇到的问题的是点击加号是一个从一个Fragment跳转到另一个Fragment跳转失败。 二、解决方案: //相应控件的监听里面实现跳转FragmentManager fragmentManagergetFragmentManager();fragmentManager.b…