STM32F407VET6单片机的IAP技术---APP部分

背景描述:

假设当前的APP起始地址要修改为0x8010000。

假设依赖F407的串口1进行固件升级(PA9,PA10)

只需要3个步骤

1-NVIC向量表偏移

如果在bootloader中跳转到的APP地址是0x8010000,那么我们只要把VECT_TAB_OFFSET的宏修改为0x10000就可以了;

默认的NVIC地址是 VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET;即: 0x8000000 | 0x000000

修改后的NVIC地址:0x8010000

实现方法通常有2钟:

1)在system_stm32f4xx.c中修改 函数SystemInit();

2)在main函数中初始化之前添加:

SCB->VTOR = 0x8000000 |0x10000 ;

2-配置keil魔术棒

把默认的程序起始地址改为0x8010000,大小依据情况分配

3-业务逻辑中添加RESET功能

注意:

1)复位时直接使用HAL_NVIC_SystemReset();就行;

不能使用Reset_Handler( );//因为Reset_Handler( );会跳转到APP的起始地址0x8010000,不会跳转到bootloader的起始地址。

2)串口1回复boot V\r\n 或者不回复,因为用来测试的上位机是网上找的,不是我开发的。

4.补充:

其他部分不用改,就像平时写APP程序那样就行。

相关推荐
Jerry丶Li1 小时前
二十三、STM32的ADC(三)(ADC多通道)
stm32·单片机·嵌入式硬件
d111111111d2 小时前
STM32外设学习--TIM定时器--编码器接口(程序)
笔记·stm32·嵌入式硬件·学习
辰哥单片机设计2 小时前
STM32项目分享:水质检测系统(升级版)
stm32·单片机·嵌入式硬件
straw_hat.5 小时前
32HAL——RTC时钟
stm32·学习
电子科技圈6 小时前
XMOS与飞腾云联袂以模块化方案大幅加速音频产品落地
经验分享·嵌入式硬件·mcu·自然语言处理·音视频·腾讯会议·游戏机
Tracy9736 小时前
XMSRC4194_VC1:4通道192KHz ASRC音频采样率转换器产品介绍
嵌入式硬件·音视频·智能硬件·xmos模组固件
xiaotianyun887 小时前
NCP13992 CS 分压计算
单片机·嵌入式硬件·ncp13992
偶像你挑的噻8 小时前
Linux应用开发-17-套接字
linux·网络·stm32·嵌入式硬件
Msshu1239 小时前
PD快充诱骗芯片 XSP15 支持获取快充电压可与外部MCU共用D+D-网络与电脑传输数据
单片机·嵌入式硬件
brave and determined9 小时前
MCU学习Day24——STM32G030多路ADC DMA采集深度解析:完全可配置序列器与不完全可配置序列器的陷阱与抉择
stm32·单片机·嵌入式硬件·dma·adc·hal·多通道采集