McuOTA
前言
先从最简单的无校验跳转开始:1
2
3
4
5
6
7
8
9
10
11
12
13
14//1.定义APP地址
uint32_t APP_ADDRESS=0x08008000;
typedef void (*pFunction) (void);
void JumpToApplication(void) {
if (((*(__IO uint32_t*)APP_ADDRESS) & 0x2FFE0000) == 0x20000000) {
//2.将中断向量长重定向到应用程序地址
SCB->VTOR=APP_ADDRESS;
//3.获取应用程序的栈顶地址和复位处理函数地址
pFunction app_reset_handler =(pFunction) (*(__IO uint32_t*)(APP_ADDRESS + 4));
__set_MSP(*(__IO uint32_t*)APP_ADDRESS);
//4.跳转到应用程序
app_reset_handler();
}
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 DIKLE | 记录!




