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

發佈了2 篇原創文章 · 獲贊 0 · 訪問量 7020
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章