|
本帖最后由 闪客 于 2019-8-9 14:53 编辑
一、STM32 512KB Flash划分
二、BOOT工程设置与基本代码
BOOT区只划分了128KB
- void app_close_irq(void) /* 关闭所有已经初始化的中断和外设 */
- {
- SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;
- USART_ITConfig(USART2, USART_IT_RXNE, DISABLE);
- USART_ITConfig(USART2, USART_IT_TXE, DISABLE);
- USART_ITConfig(USART2, USART_IT_IDLE, DISABLE);
- USART_DeInit(USART2);
- USART_ITConfig(USART3, USART_IT_RXNE, DISABLE);
- USART_ITConfig(USART3, USART_IT_TXE, DISABLE);
- USART_ITConfig(USART3, USART_IT_IDLE, DISABLE);
- USART_DeInit(USART2);
-
- USART_ITConfig(UART4, USART_IT_RXNE, DISABLE);
- USART_ITConfig(UART4, USART_IT_TXE, DISABLE);
- USART_ITConfig(UART4, USART_IT_IDLE, DISABLE);
- USART_DeInit(UART4);
-
- USART_ITConfig(UART5, USART_IT_RXNE, DISABLE);
- USART_ITConfig(UART5, USART_IT_TXE, DISABLE);
- USART_ITConfig(UART5, USART_IT_IDLE, DISABLE);
- USART_DeInit(UART5);
- TIM_ITConfig(TIM2, TIM_IT_Update, DISABLE);
- TIM_DeInit(TIM2);
- TIM_ITConfig(TIM3, TIM_IT_Update, DISABLE);
- TIM_DeInit(TIM3);
-
-
- }
- app_close_irq(); /* 在程序跳转前,必须把初始化的外设和中断关闭 */
- ef_erase_bak_app(128*1024); /* 擦除128K的备份区 ,这个备份区的起始位置是:0x08000000+256KB+6KB(ENV)+ 20KB(LOG)之后的128KB*/
- ef_write_data_to_bak((uint8_t *)program, 1608, ¤t, 1608); /* 把BIN文件写入备份区,为了简化,program是一个BIN文件的数组,附件有转换小软件 */
- ef_erase_user_app(ApplicationAddress, 128*1024); /* 擦除128K的用户APP区 */
- ef_copy_app_from_bak(ApplicationAddress,128*1024); /* 从备份区中拷贝bin文件到用户APP区 */
- if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
- {
- ef_print("booting...\n");
- JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
- Jump_To_Application = (pFunction) JumpAddress;
- __set_MSP(*(__IO uint32_t*) ApplicationAddress);
- Jump_To_Application();
- }
复制代码
二、APP工程设置
APP划分了384KB的区域,且地址是从0x08020000开始的。
APP中MAIN函数的第一句就是要把NVIC偏移一下。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
你所害怕的每一个鬼,都是别人朝思暮想却再也见不到的人。
|