登录站点

用户名

密码

ARM从零开始学--点灯

已有 109 次阅读  2013-04-16 10:47   标签从零开始 
首先,我也是个初学者,刚学会点灯^_^,就先把这灯点起来,和同样的或者还在迷茫着点灯的初学者一起学习^_^



介绍下我用的环境:ads1.2 proteus7.1 PLC2124
哈哈 虚拟着玩 好更容易的参与

PLC2124片内有256KB的FLASH和16K的RAM,直接先当单片机使。
随便建立个后缀.S的文档,把下面的代码copy过去。

    AREA SAMPLE,CODE,READONLY

    ENTRY

START

    LDR   R0,=0X00000000        ;将P0口全部配置为GPIO口
    LDR   R1,=0XE002C000        ;PINSEL0地址
    STR   R0,[R1]
        
    LDR   R0,=0xffffffff        ;IO口全部设置为输出
    LDR   R1,=0xe0028008               ;IO0DIR地址 
    STR   R0,[R1]               ;

LOOP
    LDR   R0,=0x55555555        ;间隔高电平输出
    LDR   R1,=0xe0028004               ;IO0SET地址 
    STR   R0,[R1] 
    
    LDR   R0,=0XAAAAAAAA
    LDR   R1,=0XE002800C         ;IO0CLR地址
    STR   R0,[R1]
    
    BL    DELAY
    
    LDR   R0,=0X55555555
    LDR   R1,=0XE002800C         ;IO0CLR地址
    STR   R0,[R1]
    
    LDR   R0,=0xAAAAAAAA        ;间隔高电平输出
    LDR   R1,=0xe0028004               ;IO0SET地址 
    STR   R0,[R1]
    
    BL    DELAY
    
    B    LOOP                 ;跳回去START,一个死循环:)
    
DELAY    
    MOV R0,#100
0
    MOV R1,#1000
1
    SUBS R1,R1,#1
    BNE %B1
    SUBS R0,R0,#1
    BNE %B0
    
    MOV PC,LR

    END

设置编译选项并编译:
1.在ADS1.2环境里新建一个可执行镜像项目文件,将上面的.s文件添加到项目。
2.在Edit->DebugRel Settings..->Target Settings->Post-linker里选择 ARM fromELF
                             ->ARM Linker->Output->RO Base里填0x00
                                         ->Options->Image entry point里填0x00
                             ->ARM fromELF->Output format里选择Inetl 32 bit Hex
                                          ->Output file name里填led.hex,这个反正后缀是hex就行,生成proteus能仿真的hex文件
3.点击OK,编译。

在proteus里建立硬件电路,也就拉几个灯出来就可以了,把执行文件选到led.hex,运行,灯就该点着了。


 (原文件名:未命名.jpg) 




一般上电复位后,PC都是指到0x0000这个地址的,单片机也是这样,如果不考虑中断什么的,要执行的代码从0地址一直往下放就是,这个点灯的程序也是这样的,后面的编译选项就是把代码和入口地址都设置到0地址,也就是系统一复位,就跟着程序执行了,点灯的程序也简单,先IO口设置为通用IO口,交错高低电平,延时,反过来,再延时,死循环,灯就闪了。


test2124IO.rar(42 KB)

上一篇: stm32应用例程 下一篇: ARM开发经典学习网站推荐

分享 举报