stm32 bootloader跳转程序设计

文章目录

1、bootloader跳转程序设计

(1)跳转程序

pFunction JumpToApplication;
uint32_t JumpAddress;
void BootLoad_Jump(void)
{
/* Check Vector Table: Test if user code is programmed starting from address
"APPLICATION_ADDRESS" */
if (((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0x2FFE0000 ) == 0x20000000)
{   
JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS+4); // 取中断向量表中的复位中断地址
HAL_Delay(100);
   __disable_irq();  //关闭所有中断,在跳转后使能中断
//    SCB->VTOR = FLASH_BASE |VECT_TAB_OFFSET;
JumpToApplication = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
__set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
JumpToApplication();
 }
}

(2)、app程序中需要注意

<1>、在keil中ROM起始地址和分配的空间大小

<2>、在system_stm32f4xx.c中设置VECT_TAB_OFFSET为需要偏移的地址

<3>、main函数中使能中断

总结:

Bootloader里面主要是

1、设置bootloader和app的空间

2、接收编译好的app的bin文件,写入flash

3、实现跳转

App里面主要修改的地方是

1、 ROM起始地址和分配的空间大小

2、 重定向中断向量

3、 生成bin文件

这里就是整个程序执行的流程

相关推荐
V: yingjun100525 分钟前
FT8440A高速风筒电源芯片12V300mA,18V250mA
科技·单片机·嵌入式硬件·智能家居·集成学习
智控工作室3 小时前
STM32+PWM+DMA驱动WS2812 —— 2024年9月24日
stm32·单片机·嵌入式硬件
玄奕子5 小时前
GPT对话知识库——编写IIC驱动的过程
stm32·单片机·gpt·嵌入式·iic
eSIM物联工厂6 小时前
物联网系统中声音拾取音频方案_咪头
驱动开发·嵌入式硬件·物联网·音视频·智能家居
OH五星上将6 小时前
OpenHarmony(鸿蒙南向)——平台驱动开发【Regulator】
驱动开发·嵌入式硬件·硬件工程·harmonyos·openharmony·鸿蒙开发·鸿蒙嵌入式
智控工作室8 小时前
STM32-HAL库驱动DHT11温湿度传感器 --2024.9.28
stm32·单片机·嵌入式硬件
昵称p8 小时前
KQM6600空气质量传感器
单片机·嵌入式硬件·kqm6600
Projectsauron8 小时前
STM32 时钟树(基于 STM32F407)
stm32·单片机·时钟树
MikelSun9 小时前
梳理一下C语言中的格式说明符
c语言·开发语言·c++·单片机·物联网·算法