使用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 }
运行结果