2026/3/10 9:35:02
网站建设
项目流程
做海报兼职网站,东风地区网站建设价格,室内设计要学哪些科目,网站建设方案书模板下载本次内容总共要使用到两程序bootloader和app的工程#xff0c;使用HAL库实现。以下是原理图。在明白bootloader的目的后#xff0c;只需要在对应的项目中开启对应的地址跳转#xff0c;并烧写到对应的地址区中。#define APP_START_ADDR 0x08004000
#define FLASH_BASE_…本次内容总共要使用到两程序bootloader和app的工程使用HAL库实现。以下是原理图。在明白bootloader的目的后只需要在对应的项目中开启对应的地址跳转并烧写到对应的地址区中。#define APP_START_ADDR 0x08004000 #define FLASH_BASE_ADDR 0x08000000 #define RAM_BASE_ADDR 0x20000000 #define RAM_SIZE 0x5000 void Bootloader_JumpToApp(void) { //判断跳转是否是合格地址并进行相对于的跳转操作 uint32_t App_StackAddr *(uint32_t *)APP_START_ADDR; if ((App_StackAddr RAM_BASE_ADDR) (App_StackAddr (RAM_BASE_ADDR RAM_SIZE))) { __disable_irq(); SysTick-CTRL0; SysTick-LOAD0; SysTick-VAL0; __set_MSP(App_StackAddr); void (*App_ResetHandle)(void)(void (*)(void))(*(uint32_t *)(APP_START_ADDR 4)); App_ResetHandle(); } else { while (1) { printf(App Address Invalid!\r\n); HAL_Delay(1000); } } }在对应的工程文件中烧录到对应位置将两个程序烧录到单片机中app代码要有如下SCB-VTOR 0x08004000; __enable_irq();用来进行中断向量表的重指定同时重新使能中断其他代码随意只要可以实现对应的效果就行。