LED实验

汇编的方式驱动LED

/*
*LED汇编实验
*创建者:Orange
*2021年03月04日
*/
.global _start @全局标号 _start:
/*使能所有外设时钟 */
ldr r0, =0x020c4068 @CCGR0的地址
ldr r1, =0xffffffff @要向CCGR0写入的数据
str r1, [r0] @将0xffffffff写入到CCGR0中 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] /*配置GPIO5_IO3的PIN复用为GPIO,也就是
*设置IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3 = 3
*IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3寄存器地址为0x02290014
*/ ldr r0, =0x02290014 @IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3的地址
ldr r1, =3 @关闭该口的软件输入功能,复用为GPIO,则应赋值0x1010,即3
str r1, [r0] @将0x00101写入IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3寄存器中 /*配置SNVS_TAMPER3的电气属性 也就是寄存器:
*IOMUXC_SNVS_SW_PAD_CTL_PAD_SNVS_TAMPER3
*IOMUXC_SNVS_SW_PAD_CTL_PAD_SNVS_TAMPER3寄存器地址为0x02290058
*
*bit0: 0 为低速率 压摆率设置
*bit5:3 110 R0/6的驱动能力 设置驱动能力(Drive Strength Field)
*bit7:6 10 medium(100MHz) 设置速度
*bit11 0 关闭开漏使能 设置开漏使能
*bit12 1 使能Pull/Keeper
*bit13 0 选择Keeper 选择Pull还是Keeper
*bit15:14 00 100K的下拉电阻 设置上/下拉电阻的大小
*bit16 0 关闭HYS使能 设置HYS磁滞使能
*综上该寄存器的值应设置为0x10b0
*/ ldr r0, =0x02290058 @IOMUXC_SNVS_SW_PAD_CTL_PAD_SNVS_TAMPER3的地址
ldr r1, =0x10b0
str r1, [r0] @将r1中的值 /*设置GPIO 设置是输入还是输出
*GPIO5_GDIR寄存器地址为0x020ac004
*设置GPIO5_GDIR寄存器的bit3为1
*也就是设置GPIO5_IO03为输出
*/
ldr r0, =0x0209c004
ldr r1, =0x8
str r1, [r0] /*打开LED,也就是设置GPIO5_GPIO03为0
*具体要结合开发板原理图上LED的连接方式来操作
*由于此处LED另一端连接的是电源,所以设置为0为点亮
* */
ldr r0, =0x02090000
ldr r1, =1
str r1, [r0] loop :
b loop

汇编驱动LED小结(代码分析):

  1. 全局标号
  2. 使能所有外设时钟(或在芯片手册中)
       ldr r1, =0xffffffff
ldr r0, =CCGR(时钟控制寄存器)的地址
str r1, [r0]
  1. 配置对应的复用IO口为GPIO
    /*配置GPIO5_IO3的PIN复用为GPIO,也就是
*设置IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3 = 3
*IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3寄存器地址为0x02290014
*/
/*配置GPIO5_IO3的PIN复用为GPIO,也就是
*设置IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3 = 3
*IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3寄存器地址为0x02290014
*/ ldr r0, =0x02290014 @IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3的地址
ldr r1, =3 @关闭该口的软件输入功能,复用为GPIO,则应赋值0x1010,即3
str r1, [r0] @将0x00101写入IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3寄存器中
  1. 配置此GPIO口的电气属性,比如压摆率、驱动能力、是否开漏、上下拉电阻的大小、是否使能PULL/Keeper、是否打开HYS磁滞使能等等
   /*配置SNVS_TAMPER3的电气属性 也就是寄存器:
*IOMUXC_SNVS_SW_PAD_CTL_PAD_SNVS_TAMPER3
*IOMUXC_SNVS_SW_PAD_CTL_PAD_SNVS_TAMPER3寄存器地址为0x02290058
*
*bit0: 0 为低速率 压摆率设置
*bit5:3 110 R0/6的驱动能力 设置驱动能力(Drive Strength Field)
*bit7:6 10 medium(100MHz) 设置速度
*bit11 0 关闭开漏使能 设置开漏使能
*bit12 1 使能Pull/Keeper
*bit13 0 选择Keeper 选择Pull还是Keeper
*bit15:14 00 100K的下拉电阻 设置上/下拉电阻的大小
*bit16 0 关闭HYS使能 设置HYS磁滞使能
*综上该寄存器的值应设置为0x10b0
*/ ldr r0, =0x02290058 @IOMUXC_SNVS_SW_PAD_CTL_PAD_SNVS_TAMPER3的地址
ldr r1, =0x10b0
str r1, [r0] @将r1中的值
  1. 设置GPIO是输入还是输出
    /*设置GPIO 设置是输入还是输出
*GPIO5_GDIR寄存器地址为0x020ac004
*设置GPIO5_GDIR寄存器的bit3为1
*也就是设置GPIO5_IO03为输出
*/
ldr r0, =0x0209c004
ldr r1, =0x8
str r1, [r0]
  1. 设置完后便可以对GPIO操作,设置0或1,控制GPIO的动作
   /*打开LED,也就是设置GPIO5_GPIO03为0
*具体要结合开发板原理图上LED的连接方式来操作
*由于此处LED另一端连接的是电源,所以设置为0为点亮
* */
ldr r0, =0x02090000
ldr r1, =1
str r1, [r0]
  1. 最后设置一个循环,使程序持续进行

    loop :

    b loop

一、100ASK_IMX6ULL嵌入式裸板学习_LED实验(上)的更多相关文章

  1. 讯为iTop4412嵌入式开发板学习之-------前言

    一.linux 工作的分类以及培养时间 Linux 作为一个庞大的体系,有很多相关的研究领域,总结起来大致有五个方向: 1.服务器维护:需要了解 Linux 服务,熟练使用 Shell,了解网络配置. ...

  2. 【4412嵌入式开发板学习笔记】认识uboot

    转自迅为讨论群:http://www.topeetboard.com 重要说明:这份笔记不是4412开发配套的,是我在网上看视频的时候下载上课老师的笔记后修改的.所以我试了一下笔记上的uboot命令, ...

  3. 嵌入式开发板iTOP4412学习开发板

    网站:http://www.topeetboard.com 淘宝:https://item.taobao.com/item.htm?_u=okcahs0f42a&id=38712193806 ...

  4. 【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705  参考博客 : [嵌入式开发]嵌入式 开发环境 (远 ...

  5. 【arm学习】我的第一个裸板程序

    初学ARM感觉写个裸板程序还真的不容易,可能是没有用到ADS,keil之类的开发平台的缘故吧.编译,链接过程在linux平台上完成,这样学起来更有实感,还能顺便熟悉linux环境,以及命令,何乐而不为 ...

  6. 学习嵌入式开发板的Android平台体系结构和源码结构

    本文转自迅为论坛资料:http://www.topeetboard.com 推荐学习嵌入式开发板平台:iTOP-4412开发板 下面这张图出自Google官方,展示了Android系统的主要组成部分. ...

  7. 嵌入式 hi3518c裸板uboot烧写、kernel烧写、fs烧写小结

    1.在uboot中我可以添加自己的命令,添加的方法是找到一个uboot的命令,然后模仿着去增加属于自己的命令代码以及实现函数就可以 2.记住在使用printf进行调试的时候,在遇到指针或者字符串的时候 ...

  8. S5PV210裸板驱动:启动

    以往2440和6410的启动方式,只要我们把裸板代码烧写到NAND FLASH的开始位置,当开发板上点启动时,处理器会自动从NAND FLASH上拷贝前面一段的代码到内部的RAM中执行.按照以前的方法 ...

  9. 裸板中中断异常处理,linux中断异常处理 ,linux系统中断处理的API,中断处理函数的要求,内核中登记底半部的方式

    1.linux系统中的中断处理  1.0裸板中中断异常是如何处理的?     以s5p6818+按键为例          1)按键中断的触发        中断源级配置            管脚功 ...

  10. ARM裸板开发:04_MMU 链接地址与运行地址不一致时,(SDRAM)初始化程序地址无关码问题的分析

    ARM裸板开发过程,程序的链接地址设置为为0x30000000,而前期的启动代码以及相关硬件的初始化代码需要在内部iRAM(steppingstone,起始地址0x0)的4K中运行.链接地址与运行地址 ...

随机推荐

  1. Quartz.Net源码Example之Quartz.Examples.AspNetCore

    Quartz.Examples.AspNetCore ​ .NetCore的Web系统,后台主要执行多个触发器任务,前台展示所有触发器信息和正在执行的作业的相关信息,还可以通过访问health-UI来 ...

  2. ubuntu apt 安装最新版 nodejs

    使用最新版本, 当前是 16.x 的版本. 这里我使用了 LTS 版本. curl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E ...

  3. 基于二叉树的高效IP检索格式MMDB

    一.MMDB简介 MMDB(MaxMind Database) 是MaxMind推出的一个数据存储和检索的数据库格式,用于旗下针对IP检索和存储的Geo产品. IP格式由二进制比特数组组成,很容易想到 ...

  4. (二) MdbCluster分布式内存数据库——分布式架构1

    (二) MdbCluster分布式内存数据库--分布式架构1   分布式架构是MdbCluster的核心关键,业界有很多相关的实现,却很少有文章详细的解释每个架构实现背后的细节和这么做的原因.在Mdb ...

  5. 这是一篇乖巧的草稿——vscode上传代码到代码托管平台GitHub

    一.在GitHub上创建一个远程仓库: 以上,就创建好了一个名为pythonStudy的仓库,现在先别把它关掉,先最小化 二.安装版本管理工具git:git属于无脑安装,可以更改安装路径 打开项目文件 ...

  6. 关于opencv3.2的parallel_for_函数不支持bind function的处理(基于ch8代码)

    1.换opencv4 2.修改程序 改程序针对slambook2/ch8/direct_method.cpp #include <opencv2/opencv.hpp> #include ...

  7. Thymeleaf的内置对象、SpringBoot整合Thymeleaf和JDBC

    Thymeleaf的对象 Thymeleaf是直接支持访问Servlet web的原生资源,HttpServletRequest HttpServletResponse HttpSession Ser ...

  8. webpack核心用法,为什么要使用webpack

    一:为什么使用webpack 1. 代码转换.文件优化.代码分割.模块合并.自动刷新.等等 2. webpack上手 <!DOCTYPE html> <html lang=" ...

  9. echarts使用dataset数据集创建单轴散点图

    dataset创建单轴散点图 由于使用echarts作图时,我很喜欢用dataset作为数据源,但是官方案例中,有没有给出相关示例,于是,在翻阅官方文档相关案例之后,结合官方文档使用dataset的示 ...

  10. Slave_IO_Running: Connecting--一种问题的解决方案

    主要有三个原因: 1.网络不同 2.密码不对 3.pos不对 这里只介绍我碰到的问题--不能远程连接数据库.即在从机上对主机进行以下命令 mysql -u**** -p**** -h192.168.* ...