使用CH573 CH58x完成的APP代碼很有可能需要進行升級,借助BOOT進行升級的話,可以通過APP跳轉進入BOOT,借助芯片自帶的BOOT和ISP工具,進行升級(支持串口1和USB下載)
跳轉實現的代碼,BOOT中有一段功能,如果APP起始的至少4字節是默認(無main跳轉地址),則認為此芯片無app代碼,停在BOOT中等下載,BOOT超時時間10s
具體代碼實現
while(1) { PRINT("go \n"); mDelaymS(30); if((GPIOB_ReadPortPin(GPIO_Pin_22)) == 0){ //自定義跳轉條件,PB22低電平調用跳轉函數 PRINT("Jump BOOT \n"); APPJumpBoot(); } }
__HIGH_CODE void APPJumpBoot(void) //此段代碼必須運行在RAM中 { while(FLASH_ROM_ERASE(0,EEPROM_BLOCK_SIZE)) { ;//ROM 擦4K1個單位,擦0地址起始 } FLASH_ROM_SW_RESET(); R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1; R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2; SAFEOPERATE; R16_INT32K_TUNE = 0xFFFF; R8_RST_WDOG_CTRL |= RB_SOFTWARE_RESET; R8_SAFE_ACCESS_SIG = 0;//進入后執行復位,復位類型為上電復位 while(1);//營造空片的現象,啟動時就會停在BOOT,等燒寫,超時時間10s }
運行結果