网站建设功能是什么意思,禅城南庄网站制作,wordpress 媒体库 删除,0基础 网站建设一、问题描述 bootloader跳转到APP时#xff0c;app执行完初始化程序后死机
二、分析问题 第一步#xff0c;执行app时死机死到哪里#xff1f;通过DEBUG调试发现死到hardfault_handler()函数中#xff0c;硬件错误#xff0c;导致硬件错误的原因一般都是中断异常引起的。…一、问题描述 bootloader跳转到APP时app执行完初始化程序后死机
二、分析问题 第一步执行app时死机死到哪里通过DEBUG调试发现死到hardfault_handler()函数中硬件错误导致硬件错误的原因一般都是中断异常引起的。 第二步找到问题然后分析什么原因导致硬件错误一般bootloader跳转到APP时要关闭app中用到的中断那么查看系统中用到的中断串口中断、滴答定时器中断所以跳转之前要关闭这两个中断_disable_irq()和systick。
三、解决问题
1.办法1 关闭中断之后跳转执行app正常。
void iap_load_app(u32 appxaddr)// { SysTick-CTRL 0X00;//禁止SysTick SysTick-LOAD 0; SysTick-VAL 0; __disable_irq(); jump2app(iapfun)*(vu32*)(appxaddr4); //用户代码区第二个字为程序开始地址(复位地址) MSR_MSP(*(vu32*)appxaddr); //初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址) jump2app(); //跳转到APP. }
2.办法2
如下图要打勾不然就无法运行 四结论 1.bootloader跳转到app之前要关闭app中用到的中断不然就会出现硬件错误导致死机 2.对app的内部机制要比较了解比如用到哪些中断、外设这样遇到问题才能更好分析不要停留在会用层面一定要了解透彻这样无论遇到什么问题都能有一个正确的分析思路。