stm32 在線升級(jí) 總結(jié)
一、前兩篇博客實(shí)現(xiàn)的功能是在APP和IAP之間進(jìn)行程序跳轉(zhuǎn);
二、這里面有以下需要注意的地方;
1、程序跳轉(zhuǎn)函數(shù)切記不要在定時(shí)器中斷里編寫(xiě),否則程序可以正常跳轉(zhuǎn)但是中斷功能卻不能執(zhí)行。原因,可以參考以下鏈接;
http://xzq1019.blog.163.com/blog/static/5996566520100181146689/
就是,在中斷里進(jìn)行跳轉(zhuǎn)的話,stm32會(huì)認(rèn)為跳轉(zhuǎn)函數(shù)只是中斷處理函數(shù)的一部分,所以會(huì)出現(xiàn)掛起,不能再響應(yīng)中斷。一般的做法是在中斷里設(shè)標(biāo)志位,在主函數(shù)里進(jìn)行跳轉(zhuǎn)。
2、在IAP程序跳轉(zhuǎn)前關(guān)閉總中斷,在跳轉(zhuǎn)到APP程序后,打開(kāi)總中斷。
3、中斷的打開(kāi)和關(guān)閉可以利用下面的函數(shù)
__disable_irq();
__enable_irq();
4、有些時(shí)候?yàn)榱蓑?yàn)證IAP程序有沒(méi)有成功跳轉(zhuǎn)到APP模式下,可以直接進(jìn)行APP程序的調(diào)試。在APP程序的第一行代碼設(shè)置斷點(diǎn),如果IAP程序跳轉(zhuǎn)成功,則會(huì)在端點(diǎn)處停下來(lái)。