stm32 升級程序方案
BOOT0=1
BOOT1=0
則會進(jìn)入自帶的ISP程序,基本可以滿足程序升級需要。
但是如何進(jìn)入這個模式,是一個問題,網(wǎng)上有人使用串口的握手信號來控制,但是這樣會超過3條線(RXTXGND)。
昨天測試了一個方法,上位機(jī)發(fā)出一個指令,STM32用戶自己的程序解析后,利用自己的IO口,控制一個簡單的延時電路來拉高BOOT0,然后芯片重新啟動,則進(jìn)入ISP。刷新完成后,跳入用戶程序運(yùn)行,控制權(quán)交回用戶程序。
程序中設(shè)置PB8為ISP_DRV,推挽輸出;輸出一定時間后,充滿電容后,可以使用NVIC_SystemReset()重新啟動(3.12庫)。即可進(jìn)入ISP模式。
另外,需要在程序中設(shè)置如下向量表地址,才可以在勾選ISP程序的jumptouserapplicationafterflash后,進(jìn)入用戶程序。
/*SettheVectorTablebaselocationat0x08000000*/
NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);
測試了若干次沒有發(fā)現(xiàn)異常。
評論