ARM逻辑——点亮LED
2018-02-08 09:35
267 查看
一.LED的工作特性及原理图
D26为电源指示灯
其他LED正极接到vdd3.3v 负极接到4个io口
要点亮LED要将负极所接到额IO口为低电平
发现gpio(通用输入输出)口之后需要去找到控制响应IO的寄存器
GPIO就是芯片的引脚 作为GPIO的这类引脚,功能和特点是可以被编程控制它的工作模式 也可以控制电压的高低
将LED接到FGPIO 就可以通过编程控制LED的亮灭
GPIO寄存器相关
通过设置控制GPIO的寄存器的值来控制GPIO
GPJO相关的寄存器
GPJ0CON(GPJO Control)控制寄存器 用来配置工作模式
GPJ0DAT (GPJO data)当配置为input output模式时 相应位对应引脚的电平高低
GPJ0PUD 控制引脚上拉 下拉
GPJ0DRV, 配置GPIO的驱动能力 电流大小
GPJ0CONPDN 低功耗模式下的控制寄存器
GPJ0PUDPDN 低功耗模式下的上下拉寄存器
主要的是GPJ0CON, GPJ0DAT二.汇编点亮LED1.操作控制寄存器 用来配置工作模式为输出模式
2.GPJ0DAT寄存器 设置引脚输出电平
GPJO有8个引脚 GPJO_0~7,相关重要寄存器为GPJ0CON和GPJ0DAT
GPJ0CON控制8个引脚的工作模式(32/8=4 每个引脚有4位 工作的方法就是给相应的位给相应的值 则可以设置相应引脚的工作模式 0001为输出模式)
写代码操作寄存器
1.查硬件接法和引脚:GPJ0_3 GPJ0_4 GPJ0_5
2.查寄存器的地址 GPJ0CON(0xE0200240) GPJ0DAT(0xE0200244)
3.工程管理 makefile等
遇到问题:
1.未找到命令 编码格式问题 设置为GB2312格式
2.make: Warning: File 'led.S' has modification time 43 s in the future windows的时间比虚拟机中的时间快 则文件时间快于make 调整系统时间
.global _start 将_start链接属性设置为外部 消除start警告
汇编中调用函数使用bl 子函数中使用mov pc,lr来返回
编程操作硬件的步骤:
1.分析硬件的工作原理
2.分析原理图
3.分析数据手册
4.找到相关的SFR
5.写代码设置寄存器三.用到的汇编指令
1.ldr 将值写入到对应的寄存器中
2.str 将寄存器中的值写入到内存中
3.sub 减运算
4.cmp 比较是否相等 会影响Z标志
5.bne 条件跳转,“不相等(或不为0)跳转指令”。如果不为0就跳转到后面指定的地址,继续执行
6.bl 跳转前把返回地址放入lr中 以便于返回 以便于函数调用
7.b 直接跳转 不打算返回
D26为电源指示灯
其他LED正极接到vdd3.3v 负极接到4个io口
要点亮LED要将负极所接到额IO口为低电平
发现gpio(通用输入输出)口之后需要去找到控制响应IO的寄存器
GPIO就是芯片的引脚 作为GPIO的这类引脚,功能和特点是可以被编程控制它的工作模式 也可以控制电压的高低
将LED接到FGPIO 就可以通过编程控制LED的亮灭
GPIO寄存器相关
通过设置控制GPIO的寄存器的值来控制GPIO
GPJO相关的寄存器
GPJ0CON(GPJO Control)控制寄存器 用来配置工作模式
GPJ0DAT (GPJO data)当配置为input output模式时 相应位对应引脚的电平高低
GPJ0PUD 控制引脚上拉 下拉
GPJ0DRV, 配置GPIO的驱动能力 电流大小
GPJ0CONPDN 低功耗模式下的控制寄存器
GPJ0PUDPDN 低功耗模式下的上下拉寄存器
主要的是GPJ0CON, GPJ0DAT二.汇编点亮LED1.操作控制寄存器 用来配置工作模式为输出模式
2.GPJ0DAT寄存器 设置引脚输出电平
GPJO有8个引脚 GPJO_0~7,相关重要寄存器为GPJ0CON和GPJ0DAT
GPJ0CON控制8个引脚的工作模式(32/8=4 每个引脚有4位 工作的方法就是给相应的位给相应的值 则可以设置相应引脚的工作模式 0001为输出模式)
写代码操作寄存器
1.查硬件接法和引脚:GPJ0_3 GPJ0_4 GPJ0_5
2.查寄存器的地址 GPJ0CON(0xE0200240) GPJ0DAT(0xE0200244)
3.工程管理 makefile等
遇到问题:
1.未找到命令 编码格式问题 设置为GB2312格式
2.make: Warning: File 'led.S' has modification time 43 s in the future windows的时间比虚拟机中的时间快 则文件时间快于make 调整系统时间
.global _start 将_start链接属性设置为外部 消除start警告
汇编中调用函数使用bl 子函数中使用mov pc,lr来返回
编程操作硬件的步骤:
1.分析硬件的工作原理
2.分析原理图
3.分析数据手册
4.找到相关的SFR
5.写代码设置寄存器三.用到的汇编指令
1.ldr 将值写入到对应的寄存器中
2.str 将寄存器中的值写入到内存中
3.sub 减运算
4.cmp 比较是否相等 会影响Z标志
5.bne 条件跳转,“不相等(或不为0)跳转指令”。如果不为0就跳转到后面指定的地址,继续执行
6.bl 跳转前把返回地址放入lr中 以便于返回 以便于函数调用
7.b 直接跳转 不打算返回
相关文章推荐
- ARM嵌入式编程(无操作系统、基于MDK)之最简单的程序:点亮一个LED灯
- ARM体系结构之点亮LED灯
- 【iCore1S 双核心板_ARM】例程七:通用定时器实验——定时点亮LED
- [ARM]第01次作业_建立Keil工程__点亮LED灯
- ARM 裸机程序学习 01 - 点亮LED
- [ARM]第01次作业_建立Keil工程__点亮LED灯
- 【iCore4 双核心板_ARM】例程五:SYSTICK定时器 实验——定时点亮LED
- ARM裸机程序-点亮LED
- 【iCore4 双核心板_ARM】例程十二:通用定时器实验——定时点亮LED
- ARM裸板程序的开发和编译(以点亮LED灯为例)
- arm wince 如何点亮ep9315的两个led灯
- 基于ARM 的led循环点亮C程序
- 第008课 第1个ARM裸板程序及引申(点亮LED灯)
- ARM+Linux驱动----点亮开发板的LED
- ARM学习篇一 点亮LED
- 1.点亮一盏LED(ARM汇编实现)
- arm-点亮led灯
- 终于点亮ARM的第一个LED了。。。
- 2.点亮一盏LED(Thumb和ARM语言实现)
- gcc编译编写ARM最简单的c程序_S3C2440点亮LED