标题:
ARM从零开始学--点灯
[打印本页]
作者:
m1_ljp
时间:
2013-4-16 10:48
标题:
ARM从零开始学--点灯
首先,我也是个初学者,刚学会点灯^_^,就先把这灯点起来,和同样的或者还在迷茫着点灯的初学者一起学习^_^
介绍下我用的环境: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
INSEL0地址
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->
ost-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)
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0