stm32f429 bootloader(IAP_Ymodem+app)

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在链接中

你可能感兴趣的:(Ymodem,bootloader,stm32f429)