ARM学习笔记(未整理版)--day06

芯片手册看的方法
找到对应管脚后,要找到对应的寄存器,这个就是外设的寄存器,每个外设都有很多寄存器
通过某一个寄存器来控制相应的管脚从而控制相对应的硬件
现在要明确以下三点:
1.LED的GPC1_3的寄存器是哪个寄存器;
2.向寄存器写什么数代表是什么样的操作;
3.怎么写数据(向对应的内存地址写数据);
GPIO的操作是分组的,一组寄存器控制一个管脚
GPC1寄存器组是有6个寄存器
GPC1CON:控制寄存器,表示管理的管脚的个数,和管理哪些管脚,控制这个管脚是输入/输出/等的功能
GPC1DAT:寄存器数据寄存器,这个寄存器是想里边写数据
GPC1PUD:控制上拉电阻
通过原理图找到芯片手册的管脚,这些管脚都是芯片的管脚,输入输出都是针对CPU的,而编程也是针对CPU的,所以代码中把芯片手册中的功能写输出就是CPU输出给外设
上拉电阻,电阻接电源的,就是CPU不输出的时候,默认输出1
下拉电阻,电阻接地的,就是CPU不输出的时候,默认输出0
start:
    mov r1,#(1<<12)//这个立即数给到r1
    ldr r0,=0xE0200080 //带=好是伪指令,是把0xE0200080这个值给到r0,这是把GPC1_3的控制寄存器地址给到r0
    str r1,[r0]//把r1存储到r0中

    mov r1,#(1<<12)//这个立即数给到r1
    ldr r0,=0xE0200088 //带=好是伪指令,是把0xE0200089这个值给到r0,这是把GPC1_3的上下拉电阻的地址给到r0
    str r1,[r0]//把r1存储到r0中
以上是配置,控制寄存器,与上拉电阻的配置
loop:
    mov r1,#(1<<12)//这个立即数给到r1;
    ldr r0,=0xE020008C //带=好是伪指令,是把0xE020008C这个值给到r0,这是把GPC1_3的地址给到r0
    str r1,[r0]//把r1存储到r0中
delay:    
    mov r0,#0xff000000//延时时间
    sub r0,r0,#1
    cmp r0,#0
    bne delay
    b loop
死循环    
先编成.o文件,然后加上不要启动文件,不要库的编译选项
编译加参数:-Ttext 0x20008000(运行程序,必须加),任何程序都在内存中,0x20008000是运行的地址,程序在编译的时候就确定这个地址
内存范围:0x20000000~0x400000000
动态库是与运行地址无关的???
代码修改(读出,修改,写入)
start:
    mov r1,#(1<<12)//这个立即数给到r1
    ldr r0,=0xE0200080 //带=好是伪指令,是把0xE0200080这个值给到r0,这是把GPC1_3的控制寄存器地址给到r0
    ldr r1,[r0],把0xE0200080地址上的值(立即数)读给r1上
    orr r1,r1,(1<<12)
    bic r1,r1,#(7<<13) @清0操作,把13位的三位全部清0,这么做是为了防止改变其他位的东西
    str r1,[r0,#0]//把r1存储到r0中

    mov r1,#(1<<12)//这个立即数给到r1
    ldr r0,=0xE0200088 //带=好是伪指令,是把0xE0200089这个值给到r0,这是把GPC1_3的上下拉电阻的地址给到r0
    等价于,ldr r1,[r0,#8]
    str r1,[r0]//把r1存储到r0中
以上是配置,控制寄存器,与上拉电阻的配置
loop:
    mov r1,#(1<<12)//这个立即数给到r1;
    ldr r0,=0xE020008C //带=好是伪指令,是把0xE020008C这个值给到r0,这是把GPC1_3的地址给到r0
    str r1,[r0]//把r1存储到r0中
delay:    
    mov r0,#0xff000000//延时时间
    sub r0,r0,#1
    cmp r0,#0
    bne delay
    b loop

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值