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,即3str 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, =0x10b0str r1, [r0]           @将r1中的值/*设置GPIO 设置是输入还是输出 *GPIO5_GDIR寄存器地址为0x020ac004*设置GPIO5_GDIR寄存器的bit3为1*也就是设置GPIO5_IO03为输出*/ldr r0, =0x0209c004ldr r1, =0x8str r1, [r0]/*打开LED,也就是设置GPIO5_GPIO03为0*具体要结合开发板原理图上LED的连接方式来操作*由于此处LED另一端连接的是电源,所以设置为0为点亮* */ldr r0, =0x02090000ldr r1, =1str 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,即3str 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, =0x10b0str r1, [r0]           @将r1中的值
  1. 设置GPIO是输入还是输出
/*设置GPIO 设置是输入还是输出 *GPIO5_GDIR寄存器地址为0x020ac004*设置GPIO5_GDIR寄存器的bit3为1*也就是设置GPIO5_IO03为输出*/ldr r0, =0x0209c004ldr r1, =0x8str r1, [r0]
  1. 设置完后便可以对GPIO操作,设置0或1,控制GPIO的动作
/*打开LED,也就是设置GPIO5_GPIO03为0*具体要结合开发板原理图上LED的连接方式来操作*由于此处LED另一端连接的是电源,所以设置为0为点亮* */ldr r0, =0x02090000ldr r1, =1str r1, [r0]
  1. 最后设置一个循环,使程序持续进行
    loop :
    b loop

一、100ASK_IMX6ULL嵌入式裸板学习_LED实验(上)相关推荐

  1. ARM嵌入式开发板学习路线指引

    如何入门嵌入式?嵌入式开发学习方法步骤  如何入门嵌入式?嵌入式开发学习路线指引  嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有linux,android.  平台:Cortex-A9 ...

  2. 【4412嵌入式开发板学习笔记】认识uboot -迅为电子资料分享

    重要说明:这份笔记不是4412开发配套的,是我在网上看视频的时候下载上课老师的笔记后修改的.所以我试了一下笔记上的uboot命令,有些无法使用,可能是uboot版本问题或者文件系统问题.具体原因我目前 ...

  3. 方案|嵌入式核心板在AGV小车上的应用

    在科技日新月异的当今社会,5G和AI都是非常火爆的概念.随着5G的商用,5G技术在社会的普及程度逐步提高.那AI又是什么呢?AI应用又会给人们带来哪些改变? AI是Artificial Intelli ...

  4. linux cached释放_正点原子Linux第四十一章嵌入式Linux LED驱动开发实验

    1)资料下载:点击资料即可下载 2)对正点原子Linux感兴趣的同学可以加群讨论:935446741 3)关注正点原子公众号,获取最新资料更新 第四十一章嵌入式Linux LED驱动开发实验 上一章我 ...

  5. 【正点原子Linux连载】第四十一章 嵌入式Linux LED驱动开发实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  6. 【正点原子MP157连载】第二十一章 嵌入式Linux LED驱动开发实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  7. 裸板烧写linux内核,嵌入式linux学习(二):烧写裸板进程

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 用了两种方式烧写裸板 1.使用J-link烧写uboot,然后再使用uboot烧写其他进程1)J-link只能烧写Nor ...

  8. 嵌入式开发板硬件操作入门学习9——集成电路芯片手册术语词汇表(中英文对照)

    原创链接:集成电路芯片半导体中英文对照术语词汇表 英语 中文 1-9 10 gigabit 10 Gb 1st Nyquist zone 第一奈奎斯特区域 3D full‑wave electroma ...

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

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

最新文章

  1. 杂题 NOIP2016蚯蚓
  2. ThinkPHP实现定时执行任务的两种方法 - 博客频道 - CSDN.NET
  3. python量化投资培训清华大学深研院_GitHub - CatsJuice/quantitative-investment-learning: 使用Python进行量化投资的学习报告...
  4. GAN的理解与TensorFlow的实现
  5. 2020-07-01 CVPR2020 表示学习论文讨论(2) 笔记
  6. 博文视点 OpenParty第11期:世界黑客大会那些事
  7. linux 远程调试
  8. JAVA String类特点
  9. edxp显示未安装_智能水表安装使用注意事项
  10. iOS底层探索之类的结构—cache分析(下)
  11. 通过JDBC连接Oracle数据库中的十大技巧
  12. android自定义popwindow,Android应用开发Android 自定义PopWindow的简单使用
  13. 【论文阅读】显著性检测 EGNet
  14. Hpool哈池靠谱吗?-Hpool矿池的罪与罚-除了hpool还有什么矿池?
  15. Confluence 6 后台中的默认空间模板设置
  16. 2018 ICPC SouthEastern European 【Fishermen】
  17. 在R语言中进行局部多项式回归拟合(LOESS)
  18. VUE前端开发环境版本查看命令
  19. JAVA面试八股文宝典(黑马学习随笔)-- 基础篇
  20. Openfire 用户密码加密

热门文章

  1. 李宏毅机器学习作业6-使用GAN生成动漫人物脸
  2. 无极性电容和有极性电容的爆炸
  3. 什么是Alpha和Beta测试?
  4. python怎么表白源码_Python浪漫表白源码(附带详细教程)-Go语言中文社区
  5. 华科学子连续三年入选华为 “天才少年” !毕业生获201万最高档年薪!
  6. 解决 Maven工程运行报错Failed to clean project: Failed to delete
  7. 1758 生成交替二进制字符串的最少操作数
  8. java中的LinkedList(链表)与ArrayList(动态数组):(1)简单辨析
  9. 钱多多软件冲刺第一阶段典型用户和场景
  10. 【C51开发应用】基于C51单片机开发的循迹灭火机器人