本帖最后由 2012CMD 于 2013-4-23 22:24 编辑
如图,一个原来已经编译好的运行正常的程序,为了好看,我将汇编启动代码中的每一步写成标号,然后在主程序中进行调用,使用BX lr返回,可是不知为什么:仿真是OK,但实际运行时却不对啦,不知怎么回事,
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
比如我修改后有这样一段:
bl disable_watch_dog
bl disable_intterrupt
bl cpu_clock_init
bl memsetup
bl initstacks
bl boot_flash_select;检查启动方式并进行相应操作
bl IRQ_setup ;调用宏定义安装中断向量表
b Main ;跳转到Main函数,此处可修改为除main外任何名称
;===========初始化:包括看门狗.中断.时钟.内存.堆栈=======================
disable_watch_dog
ldr r0,=WTCON
ldr r1,=0x0
str r1,[r0]
BX lr ;返回
disable_intterrupt
ldr r0,=INTMSK
ldr r1,=0xffffffff
str r1,[r0]
ldr r0,=INTSUBMSK
ldr r1,=0x7fff
str r1,[r0]
BX lr ;返回
cpu_clock_init
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
汇编就懂几句,求各位大神看看这个究竟是什么问题,不这样调用直接顺序写下去是可以的,不知为啥这样调用就不行啦
|