stm32f429 bootloader(IAP_Ymodem+app)

本文详细介绍STM32F429 BootLoader的实现方式,包括IAP_Ymodem+app的使用,以及如何在野火STM32F429挑战者V1上进行测试。文章深入探讨了在系统启动时调用SystemInit函数初始化时钟系统和设置中断向量表的过程,提供了修改中断向量表起始地址的具体方法。

stm32f429 bootloader(IAP_Ymodem+app) 可用,在野火STM32F429挑战者V1上测试

注意事项:
1.在用超级终端下载BIN文件时,数据流控制要选择:无,与我程序中的串口配置要一样。

2.

在系统启动的时候,会首先调用SystemInit函数初始化时钟系统,同时SystemInit还完成了中断向量表的设置,我们可以打开SystemInit函数,看看函数体的结尾处有这样几行代码:

#ifdef VECT_TAB_SRAM

SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET;

 /* Vector Table Relocation in Internal SRAM. */

#else

SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET;

/* Vector Table Relocation in Internal FLASH. */

#endif

从代码可以理解,VTOR寄存器存放的是中断向量表的起始地址。默认的情况VECT_TAB_SRAM是没有定义,所以执行SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; 

对于FLASH APP,我们设置为FLASH_BASE+偏移量0x10000,所以我们可以在SystemInit函数里面修改SCB->VTOR的值。当然为了尽可能不修改系统级别文件,我们可以也可以在FLASH APP的main函数最开头处添加如下代码实现中断向量表的起始地址的重设:

SCB->VTOR = FLASH_BASE | 0x10000;

       以上是FLASH APP的情况,当使用SRAM APP的时候,我们设置起始地址为:SRAM_BASE+0x1000,同样的方法,我们在SRAM APP的main函数最开始处,添加下面代码:

SCB->VTOR = SRAM_BASE | 0x1000;

       这样,我们就完成了中断向量表偏移量的设置。

测试用的 iap+app在链接中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值