各位: 用的是f103,结构为boot+app。 现在由于升级时要保持io电平,所以从app跳到boot,而不是重启。 跳转时我对每个模块都重新复位然后时钟禁止了,但是跳到boot后can不能用!因为flash有保存标志,重启后进入boot就没问题,所以跳转前还需要做哪些事情?如下是复位外设代码: /* 把所有外设复位,先使能时钟,不然不能进行外设复位. */ RCC->APB1ENR = 0x3FFFFFFF; RCC->APB2ENR = 0x3FFFFF; RCC->AHBENR = 0x5F; /* 然后复位. */ jump_addr = 0x3FFFFFFF; RCC->APB1RSTR |= jump_addr; RCC->APB1RSTR &= ~jump_addr; /* 如果从app跳入boot,则IO PB7不能复位. */ jump_addr = 0x3FFFFF; if(addr==FLASH_BASE){ jump_addr &= ~RCC_APB2Periph_GPIOB; } RCC->APB2RSTR |= jump_addr; RCC->APB2RSTR &= ~jump_addr; #ifdef STM32F10X_CL jump_addr = RCC_AHBPeriph_OTG_FS|RCC_AHBPeriph_ETH_MAC; RCC->AHBRSTR |= jump_addr; RCC->AHBRSTR &= ~jump_addr; #endif /* 最后,时钟全部停掉. */ jump_addr = 0x3FFFFFFF; RCC->APB1ENR &= ~jump_addr; jump_addr = 0x3FFFFF; if(addr==FLASH_BASE){ jump_addr &= ~RCC_APB2Periph_GPIOB; } RCC->APB2ENR &= ~jump_addr; RCC->AHBENR &= ~0x5F; |
RE:求高手解救:app跳转到boot后can无法通信
RE:求高手解救:app跳转到boot后can无法通信
需求是要求升级过程业务不中断吗?? 业务不中断其业务可靠吗??
回复:求高手解救:app跳转到boot后can无法通信