刚买了开发板不久,看了许多资料。终于用汇编着手写第一个程序:点亮LED灯并闪烁 程序代码如下: BIT14 EQU (1<<14) ;定义BIT14为0x00004000 AREA LED_ON,CODE,READONLY ;声明代码段LED_ON ENTRY ;标示程序入口 CODE32 ;声明32位ARM指令 START LDR R0,=0x56000050 ;R0 设为 GPFCON 寄存器。此寄存器 ;用于选择端口F各引脚的功能: ;是输出、是输入、还是其他 MOV R1,#BIT14 ; STR R1,[R0] ;设置GPF7为输出,其他脚为输入 LDR R0,=0x56000058 ;R0设为GPFUP寄存器。 MOV R1,#0xFF STR R1,[R0] ;禁能上拉 LEDON LDR R0,=0x56000054 ;R0设为GPFDAT寄存器 MOV R1,#0 STR R1,[R0] ;GPF7为输出0灯亮 MOV R2,#0 ;x=0; DELAY CMP R2,#2000 ;while(x<2000) BHS LEDOFF ;{ x++; ADD R2,R2,#1 ;} B DELAY
LEDOFF LDR R0,=0x56000054 ;R0设为GPFDAT寄存器 MOV R1,#0x80 STR R1,[R0] ;GPF7为输出1灯灭 B LEDON END 问题出在程序下载到开发板上。 1、通过软件调试,能正确实现功能! 2、在开发板的BIOS环境下,通过串口下载后运行,程序能运行实现预期功能,GPF7的LED闪烁。 3、把程序固化到FLASH上运行,我把程序烧写到NAND FLASH 并从NAND FLASH 启动的。ADS1.2中的关键设置如下:Ro_Base为0x30000000,Rw_Base为0x30003000.下载完后,上电复位。有如下现象:GPF7的LED点亮了,但没有闪烁。 4、把程序固化到FLASH上运行,我把程序烧写到NAND FLASH 并从NAND FLASH 启动的。ADS1.2中的关键设置如下:Ro_Base为0x0,Rw_Base为0x30003000(我知道这样设置是不对,NOR FLASH烧写和启动才这样设置)。下载完后,上电复位。也有如下现象:GPF7的LED点亮了,但没有闪烁! 请大家帮看看,从中指教下小弟!为什么我总不能高高兴兴编程呢?编程应该是种享受啊! |