STM32 bootload 跳转到 app 方法记录_裸机版

调试环境:STM32G474RBT6  +  Keil

说明:本文介绍如何从  bootload 跳转到 app 的方法

1:bootload 的跳转代码
在 app 代码接收完成并成功写入片内flash后,可调用以下代码实现跳转到 app;

#define OTA_CODE_START_ADD     (0x08007800)   /* app 区域储存的首地址 */
 
void jump_to_app(void)
{
    typedef void (*app_func_t)(void);
    u32 app_addr = OTA_CODE_START_ADD;
    u32 stk_addr = *((__IO uint32_t *)app_addr);
    app_func_t app_func = (app_func_t)(*((__IO uint32_t *)(app_addr + 4)));
 
    if ((((u32)app_func & 0xff000000) != 0x08000000) || ((stk_addr & 0x2ff00000) != 0x20000000))
    {
        return;
    }
 
    //rt_kprintf("Jump to application running ... \n");
    rt_thread_mdelay(200);
 
    __disable_irq();  /*关闭总中断*/
    HAL_DeInit(); /*函数通过写复位寄存器,将所有模块复位。*/
 
    for(int i=0; i<128; i++)
    {
        HAL_NVIC_DisableIRQ(i);  /*失能中断*/
        HAL_NVIC_ClearPendingIRQ(i);/*清除中断标志位*/
    }
 
    /* 关闭滴答定时器,复位到默认值 */
    SysTick->CTRL = 0;
    SysTick->LOAD = 0;
    SysTick->VAL = 0;
 
    HAL_RCC_DeInit();    /*将RCC时钟配置重置为默认重置状态。*/
 
    __set_CONTROL(0);    /*设置CONTROL寄存器的值。在RTOS工程,这条语句很重要,设置为特权级模式,使用MSP指针*/
    __set_MSP(stk_addr); /* 设置MSP跳转的地址;设置主堆栈指针 */
    app_func();          /* Jump to application running */
}
2:APP 代码设置
1.在 app 的 main()函数的第一段添加如下代码

SCB->VTOR = FLASH_BASE | OTA_CODE_START_ADD; /* 跳转到APP地址 */
__enable_irq();
3.修改KEIL 配置
点击魔术棒,打开设置界面,按如下图示设置。

4.完成配置
完成以上设置后 就能成功从 bootload 跳转到 app
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/yutian0606/article/details/134953478

相关推荐

  1. STM32 bootload app 方法记录_裸机

    2024-03-22 06:50:01       22 阅读
  2. 合并STM32bootloaderapp程序的hex文件的方法

    2024-03-22 06:50:01       16 阅读
  3. uni-app 路由方式

    2024-03-22 06:50:01       16 阅读
  4. uniapp app应用商店

    2024-03-22 06:50:01       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-22 06:50:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-22 06:50:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-22 06:50:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-22 06:50:01       20 阅读

热门阅读

  1. ADO.NET封装个单例异步类类

    2024-03-22 06:50:01       22 阅读
  2. 【Jenkins】Spark on Yarn 部署脚本

    2024-03-22 06:50:01       19 阅读
  3. AUTOSAR XML(通常称为ARXML)

    2024-03-22 06:50:01       19 阅读