一、100ASK_IMX6ULL嵌入式裸板学习_LED实验(上)
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小结(代码分析):
- 全局标号
- 使能所有外设时钟(或在芯片手册中)
ldr r1, =0xffffffff ldr r0, =CCGR(时钟控制寄存器)的地址str r1, [r0]
- 配置对应的复用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寄存器中
- 配置此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中的值
- 设置GPIO是输入还是输出
/*设置GPIO 设置是输入还是输出 *GPIO5_GDIR寄存器地址为0x020ac004*设置GPIO5_GDIR寄存器的bit3为1*也就是设置GPIO5_IO03为输出*/ldr r0, =0x0209c004ldr r1, =0x8str r1, [r0]
- 设置完后便可以对GPIO操作,设置0或1,控制GPIO的动作
/*打开LED,也就是设置GPIO5_GPIO03为0*具体要结合开发板原理图上LED的连接方式来操作*由于此处LED另一端连接的是电源,所以设置为0为点亮* */ldr r0, =0x02090000ldr r1, =1str r1, [r0]
- 最后设置一个循环,使程序持续进行
loop :
b loop
一、100ASK_IMX6ULL嵌入式裸板学习_LED实验(上)相关推荐
- ARM嵌入式开发板学习路线指引
如何入门嵌入式?嵌入式开发学习方法步骤 如何入门嵌入式?嵌入式开发学习路线指引 嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有linux,android. 平台:Cortex-A9 ...
- 【4412嵌入式开发板学习笔记】认识uboot -迅为电子资料分享
重要说明:这份笔记不是4412开发配套的,是我在网上看视频的时候下载上课老师的笔记后修改的.所以我试了一下笔记上的uboot命令,有些无法使用,可能是uboot版本问题或者文件系统问题.具体原因我目前 ...
- 方案|嵌入式核心板在AGV小车上的应用
在科技日新月异的当今社会,5G和AI都是非常火爆的概念.随着5G的商用,5G技术在社会的普及程度逐步提高.那AI又是什么呢?AI应用又会给人们带来哪些改变? AI是Artificial Intelli ...
- linux cached释放_正点原子Linux第四十一章嵌入式Linux LED驱动开发实验
1)资料下载:点击资料即可下载 2)对正点原子Linux感兴趣的同学可以加群讨论:935446741 3)关注正点原子公众号,获取最新资料更新 第四十一章嵌入式Linux LED驱动开发实验 上一章我 ...
- 【正点原子Linux连载】第四十一章 嵌入式Linux LED驱动开发实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...
- 【正点原子MP157连载】第二十一章 嵌入式Linux LED驱动开发实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...
- 裸板烧写linux内核,嵌入式linux学习(二):烧写裸板进程
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 用了两种方式烧写裸板 1.使用J-link烧写uboot,然后再使用uboot烧写其他进程1)J-link只能烧写Nor ...
- 嵌入式开发板硬件操作入门学习9——集成电路芯片手册术语词汇表(中英文对照)
原创链接:集成电路芯片半导体中英文对照术语词汇表 英语 中文 1-9 10 gigabit 10 Gb 1st Nyquist zone 第一奈奎斯特区域 3D full‑wave electroma ...
- 【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705 参考博客 : [嵌入式开发]嵌入式 开发环境 (远程 ...
最新文章
- 杂题 NOIP2016蚯蚓
- ThinkPHP实现定时执行任务的两种方法 - 博客频道 - CSDN.NET
- python量化投资培训清华大学深研院_GitHub - CatsJuice/quantitative-investment-learning: 使用Python进行量化投资的学习报告...
- GAN的理解与TensorFlow的实现
- 2020-07-01 CVPR2020 表示学习论文讨论(2) 笔记
- 博文视点 OpenParty第11期:世界黑客大会那些事
- linux 远程调试
- JAVA String类特点
- edxp显示未安装_智能水表安装使用注意事项
- iOS底层探索之类的结构—cache分析(下)
- 通过JDBC连接Oracle数据库中的十大技巧
- android自定义popwindow,Android应用开发Android 自定义PopWindow的简单使用
- 【论文阅读】显著性检测 EGNet
- Hpool哈池靠谱吗?-Hpool矿池的罪与罚-除了hpool还有什么矿池?
- Confluence 6 后台中的默认空间模板设置
- 2018 ICPC SouthEastern European 【Fishermen】
- 在R语言中进行局部多项式回归拟合(LOESS)
- VUE前端开发环境版本查看命令
- JAVA面试八股文宝典(黑马学习随笔)-- 基础篇
- Openfire 用户密码加密
热门文章
- 李宏毅机器学习作业6-使用GAN生成动漫人物脸
- 无极性电容和有极性电容的爆炸
- 什么是Alpha和Beta测试?
- python怎么表白源码_Python浪漫表白源码(附带详细教程)-Go语言中文社区
- 华科学子连续三年入选华为 “天才少年” !毕业生获201万最高档年薪!
- 解决 Maven工程运行报错Failed to clean project: Failed to delete
- 1758 生成交替二进制字符串的最少操作数
- java中的LinkedList(链表)与ArrayList(动态数组):(1)简单辨析
- 钱多多软件冲刺第一阶段典型用户和场景
- 【C51开发应用】基于C51单片机开发的循迹灭火机器人