【ARM裸机s5pv210 】芯片初始化

发布者:innovator7最新更新时间:2025-01-02 来源: cnblogs关键字:ARM裸机  s5pv210 手机看文章 扫描二维码
随时随地手机看文章

#define GPJ0CON        0xE0200240

#define GPJ0DAT        0xE0200244

#define WTCON        0xE2700000

#define SVC_STACK    0xd0037d80


.global _start

_start:


    // 第1步:关看门狗(向WTCON的bit5写入0即可)

    ldr r0, =WTCON

    ldr r1, =0x0

    str r1, [r0]

    

    // 第2步:设置SVC栈    满减栈,满的意思是入栈先移动指针再填入数据,减的意思是栈从高到低用

    ldr sp, =SVC_STACK

    

    // 第3步:开/关icache

    mrc p15,0,r0,c1,c0,0;            // 读出cp15的c1到r0中  mrc和mcr是协处理器的相关汇编指令

    //bic r0, r0, #(1<<12)            // bit12 置0  关icache

    orr r0, r0, #(1<<12)            // bit12 置1  开icache

    mcr p15,0,r0,c1,c0,0;



blink:

    ldr r0, =0x11111111        //所有引脚设置为输出模式对应的16进制数

    ldr r1, =GPJ0CON        //GPJ0CON  寄存器位置

    str r0, [r1]            //把r0中的数存到r1指向的地方

    

    ldr r0, =~(1<<3)        //3 位拉低,其他位拉高

    ldr r1, =GPJ0DAT        //GPJ0DAT 寄存器位置

    str r0, [r1]                //把r0中的数存到r1指向的地方

    

    bl delay

    

    ldr r0, =~(1<<4)        // 4位拉低,其他位拉高

    ldr r1, =GPJ0DAT        //GPJ0DAT 寄存器位置

    str r0, [r1]                //把r0中的数存到r1指向的地方

    

    bl delay

    

    ldr r0, =~(1<<5)        //5位拉低,其他位拉高

    ldr r1, =GPJ0DAT        //GPJ0DAT 寄存器位置

    str r0, [r1]                //把r0中的数存到r1指向的地方

    

    bl delay

    b blink


    

delay:

    ldr r2, =9000000

    ldr r3, =0x0

delay_loop:

    sub r2, r2, #1        //r2 = r2 -r1

    cmp r2, r3            //cmp影响Z标志位,如果r2等于r3,则Z=1,下一句中eq就会成立

    bne delay_loop      //如果Z等于0,则ne成立,该句执行

    

    mov pc, lr            //如果Z不等于0,则该句执行


关键字:ARM裸机  s5pv210 引用地址:【ARM裸机s5pv210 】芯片初始化

上一篇:【ARM裸机s5pv210 】GPIO
下一篇:【ARM裸机s5pv210 】汇编开栈跳转 C语言

小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved