STM32/STM8技术论坛
直播中

杨雪

7年用户 1103经验值
私信 关注
[问答]

stm32l4 IAP无法跳转


回帖(12)

折剑青

2018-12-19 09:01:46
跳转前要关全局中断
举报

李悛

2018-12-19 09:19:21
1.别忘了重定位向量表。
2.参考STM32CUBE示例程序,你相信ST官方还是小作坊?
举报

贾飞小

2018-12-19 09:32:10
1、首先要确认是跳转了没成功,还是没跳转?
2、跳转之后要重新设置堆栈
3、跳转之前要关闭中断,同时要检查栈顶地址是否合法
举报

杨雪

2018-12-19 09:47:53
引用: biao66 发表于 2018-12-19 09:49
跳转前要关全局中断

怎么关全局中断?我用的HAL库
举报

杨雪

2018-12-19 10:01:56
引用: 7762642422d 发表于 2018-12-19 10:06
1.别忘了重定位向量表。
2.参考STM32CUBE示例程序,你相信ST官方还是小作坊?

我重新设置了中断向量表的SCB->VTOR = FLASH_BASE | 0x10000;
举报

杨雪

2018-12-19 10:09:17
引用: Green_LJ 发表于 2018-12-19 10:19
1、首先要确认是跳转了没成功,还是没跳转?
2、跳转之后要重新设置堆栈
3、跳转之前要关闭中断,同时要检查栈顶地址是否合法

跳转了,app没运行
举报

杨雪

2018-12-19 10:24:43
引用: Green_LJ 发表于 2018-12-19 10:19
1、首先要确认是跳转了没成功,还是没跳转?
2、跳转之后要重新设置堆栈
3、跳转之前要关闭中断,同时要检查栈顶地址是否合法

__asm void INTX_DISABLE()
{
        CPSID   I
        BX      LR          
}
//开启所有中断
__asm void INTX_ENABLE(void)
{
        CPSIE   I
        BX      LR  
}
这样开关中断对不对?
举报

李悛

2018-12-19 10:31:49
引用: ldd1211_ 发表于 2018-12-19 10:49
我重新设置了中断向量表的SCB->VTOR = FLASH_BASE | 0x10000;

编译出的固件(比如bin文件)没下载对。
对于IAP程序是从flash的第0扇区开始的位置,即是FLASH_BASE;对于APP程序,则需要修改为FLASH_BASE+0x10000。
如果使用MDK-ARM的话配置非常简单,每次配置完成后rebuild再下载或调试。或者添加item区分。
IAP项目时,配置start为flash起始地址,大小为合适的大小(我的大小是0x8000):


APP项目时,配置配置start为flash合适的起始地址(我的是0x800C000),大小为合适的大小(我的大小是0xF4000):
举报

杨雪

2018-12-19 10:40:07
引用: 7762642422d 发表于 2018-12-19 11:19
编译出的固件(比如bin文件)没下载对。
对于IAP程序是从flash的第0扇区开始的位置,即是FLASH_BASE;对于APP程序,则需要修改为FLASH_BASE+0x10000。
如果使用MDK-ARM的话配置非常简单,每次配置完成后rebuild再下载或调试。或者添加item区分。

我设置好了的
举报

周芸

2018-12-19 10:45:24
哥们,请问你解决了吗?我和你遇到同样的问题,只不过我的是F429的,可以扣扣交流下吗?我的是191920965
举报

连涣艺

2018-12-19 11:03:14
持续关注中,我也遇到这个问题了
举报

邹俩珍

2018-12-19 11:09:39
确定几个问题:
1.是否跳转成功
2.是否是因为应用程序产生中断而产生的重启
对于1问题加个打印看看是否跳进去,另外程序写进的格式是否正确,对于问题2如果由于应用程序中断产生重启,要改你代码的中断向量表位置,如图所示
举报

更多回帖

发帖
×
20
完善资料,
赚取积分