OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 12475|回复: 5

stm32怎么从一个程序跳转到另一个程序呢

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2015-3-18
在线时间
0 小时
发表于 2015-4-8 21:04:32 | 显示全部楼层 |阅读模式
5金钱
小弟由于毕业设计的需要最近在学stm32,许多不懂的地方希望各位朋友能多多指教。
我现在能写一个程序,用电脑通过串口把另一个程序的hex文件发送给stm32并保存在flash的0x0801 0000的地方。现在想启动这个程序要用什么命令呢?
如果我想让系统保持第一个程序设置寄存器不变(比如时钟和串口的设置),那第二个程序的启动文件xxx.s是不是还要做相应的改动呢?堆栈什么的还需要设置吗?
由于第一次用stm32,感觉好多不懂的地方,感谢各位的帮助。

最佳答案

查看完整内容[请看2#楼]

第一个问题,参考我们的IAP例程,问题不大。 第二个问题,没戏。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-4-8 21:04:33 | 显示全部楼层
第一个问题,参考我们的IAP例程,问题不大。
第二个问题,没戏。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2015-3-18
在线时间
0 小时
 楼主| 发表于 2015-4-8 21:04:33 | 显示全部楼层
我把一个keil写的程序烧写到0x08060000的位置,通过以下代码可以运行这段代码:
__ASM void jmp(void){
LDR R0, =0x08060004
LDR C, [R0]
NOP
}

int main(void)
{
delay_init(168);
LED_Init();
KEY_Init();
。。。。。。。。
jmp();
}
回复

使用道具 举报

`

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2015-4-10
在线时间
0 小时
发表于 2015-4-10 13:03:51 | 显示全部楼层
第一个问题就是定义函数指针,赋值0x0801 0000,再执行吧。
void (*pfn)(void);
pfn = (void (*)(void))0x0801 0000;
pfn();
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2015-3-18
在线时间
0 小时
 楼主| 发表于 2015-4-12 13:11:25 | 显示全部楼层
回复【3楼】`:
---------------------------------
谢谢你的回答。我用下面的代码测试了一下:
void (*func)(void);
func = (void (*)(void))0x08000000;
        if(KEY_Scan())
        func();
希望按下按键之后,程序从0x08000000启动,即实现程序的重启。但是程序停在了void HardFault_Handler(void)的死循环。
我想插入汇编 __ASM
{
MOV C, #8060000H
}
但编译提示:identifier "PC" is undefined
回复

使用道具 举报

`

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2015-4-10
在线时间
0 小时
发表于 2015-4-20 09:59:06 | 显示全部楼层
回复【4楼】MrAc:
---------------------------------
大意了,我写错了,应该是:

第一个问题就是定义函数指针,赋值0x0801 0000,再执行吧。 
void (*pfn)(void); 
pfn = (void (*)(void))(0x0801 0000 | 0x1); 
pfn();
 
因为CM0用最后1 bit标识Thumb指令。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 12:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表