bootloader跳转app卡死(IAP卡死)

1、时钟不匹配问题

我遇到的情况是由于bootload和APP两个代码的时钟源不匹配导致app不运行。bootload用了内部时钟,APP用了外部8M时钟。导致跳转到APP代码时运行到时钟配置就卡死,而时钟没配置成功就无法初始化IO口,也没法发出信号做出提示,看着像app区的代码不运行,但其实还是运行了的。时钟初始化不成功卡死,设置了看门狗,这个时候就会复位。

处理方式:将bootload和APP的时钟源配置成相同的。

2、跳转APP后中断卡死

        现象:运行之后发现能正常跳转至APP程序中,并且没有跑飞,只是无法进入中断,其他可以正常运行。

       解决办法1:程序下载完毕后 先关闭总中断,__set_FAULTMASK(1);然后软件复位,复位完后只初始化所需要的设备,判断标志位,关闭已经打开的对应中断,跳转APP程序。

        解决办法2:程序下载完毕后 先关闭总中断,__set_FAULTMASK(1);然后软件复位,复位完后判断标志位,关闭总中断__set_FAULTMASK(1),跳转APP程序,打开总中断__set_FAULTMASK(0),开始运行代码。

原因:FAULTMASK是一个中断屏蔽寄存器,当它置1时,只有NMI能响应,其他的中断或者fault都无法响应,为0的时候表示没有异常,才能正常响应中断,属于特权级。 因此,在进入APP程序中,应该使用__set_FAULTMASK(0);打开FAULTMASK全局中断,可以加在SystemInit()函数开始部分或者main()函数中。

软件复位:强制整个系统复位,包括CPU内核、外设、时钟等,等效于硬件复位

地址跳转:仅改变程序执行流,不重置硬件状态(如外设寄存器、中断标志位)

3、跳转APP卡死问

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梁善被人欺

求打赏一杯蜜雪冰城

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值