[STM32F3] 高手看看那里错了?

[复制链接]
1433|6
 楼主| gzzcq 发表于 2015-1-6 17:54 | 显示全部楼层 |阅读模式
本帖最后由 gzzcq 于 2015-1-7 10:31 编辑

PUSH        {R0,R1}
LDR                R0,=0x08000190
LDR                R1,[R0]
PUSH        {R1}
POP                {R0,R1,PC}
注:0x08000190地址出存放了另一个函数的入口地址,但跳不过去,是什么原因?
 楼主| gzzcq 发表于 2015-1-6 22:12 | 显示全部楼层
这段程序在堆栈是r0,r1,r1这样存放吗?
出栈数据是否对应到了r0,r1,pc中?
zh113214 发表于 2015-1-6 23:07 | 显示全部楼层
额 ,对微机原理现在都忘得差不多了。。。
pattywu 发表于 2015-1-7 00:15 | 显示全部楼层
最低位是为什么1,不是0.
 楼主| gzzcq 发表于 2015-1-7 10:25 | 显示全部楼层
我把代码改成如下:
PUSH        {R0,R1,LR}
                                LDR                R0,=0x08000190
                                LDR                R1,[R0]
                                STR                R1,[SP,#8]
                                POP                {R0,R1,PC}
现在可以调用函数了,但现在又有个新问题,上面这段调用语句和地址0x08000190
存放的函数地址是在同一个工程的,通过上面这段语句可以调用函数,
但如果我在B工程里面也写上面同样的语句,又调用不了函数了,是什么原因?
SLHSu37 发表于 2015-1-7 10:40 | 显示全部楼层
太复杂····
airwill 发表于 2015-1-7 10:56 | 显示全部楼层
PUSH        {R0,R1}
LDR                R0,=0x08000190
LDR                R1,[R0]
BLX                 R1
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

34

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部