前言:需要用到OTA固件升级,必须借助Bootloader搬运新固件到旧固件的Flash区,从而完成程序升级

  1. 制作Bootloader程序

    • 使用cubeMX工具,新建Bootloader工程,其中需要打开时钟,打开UART1进行调试信息输出

      1.1、打开RCC

      1.2、打开看门狗

      1.3、打开jlink调试口

      1.4、 打开USART1输出调试信息

      1.4、设置输出工程文件名,最后点击【GENERATE CODE】

    1. keil配置

      1. 配置代码区域
      2. 配置输出hex和bin文件
    2. 编写代码
      1. 跳转到APP代码,跳转前一定要关总中断__disable_irq();
      2. __asm void MSR_MSP (uint32_t ulAddr)
        {MSR MSP, r0 //set Main Stack value                            BX r14
        }typedef void (*Jump_Fun)(void);
        void IAP_ExecuteApp(uint32_t App_Addr)
        {Jump_Fun JumpToApp;if (((*(__IO uint32_t *)App_Addr) & 0x2FFE0000) == 0x20000000)    {JumpToApp = (Jump_Fun) * (__IO uint32_t *)(App_Addr + 4);MSR_MSP( * (__IO uint32_t *) App_Addr);JumpToApp();}else{printf("There is None APP to jump,ERROR!!!\r\n");}
        }int main()
        {__disable_irq();    //很重要,跳转之前必须关总中断,否则APP中重新设置中断向量表会出错printf("> Start Running APP1 ......\r\n\r\n");   IAP_ExecuteApp(OTA_FLASH_APP1_ADDR);
        }
  2. 制作APP程序
    1. 使用cubeMX生成工程,可参考Bootloader生成过程,此处不再重复
    2. 代码中修改APP中断向量表,APP程序从0x3000开始
    3. keil配置
      1. 配置代码区域

    如果对您有帮助,麻烦动一下您发财的小手,帮忙点个赞,谢谢!!! 

STM32之HAL库的Bootloader跳转到APP相关推荐

  1. 正点原子STM32(基于HAL库)0

    目录 开发环境搭建与使用 常用开发工具简介 MDK 安装 仿真器驱动安装 CH340 USB 虚拟串口驱动安装 使用MDK5 编译例程 使用串口下载程序 使用DAP 下载与调试程序 使用DAP 下载程 ...

  2. 【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(二)

    前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 上一讲我们说了CubeMX配置SDRAM的一些基本配置,还有FMC跟SDRAM的讲解,这一讲我们 ...

  3. 【STM32】HAL库 STM32CubeMX教程十四---SPI

    前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 在我们的HAL库中,对硬件SPI函数做了很好的集成,使得之前SPI几百行代码,在HAL库中,只需 ...

  4. STM32的HAL库及其使用

    随着时代的逐步发展,联网.USB.文件系统.加密算法.RTOS.GUI等第三方组件变得越来越重要,简陋的标准库已经很难满足当代单片机开发需求了. 事实上,单片机开发在走PC.手机等以CPU为核心的产品 ...

  5. STM32的HAL库分析及使用

    STM32的三种开发方式 通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的.一般大多数都会选用标准库和HAL库,而极少部分人会通过直接配 ...

  6. STM32之HAL库详解 及 手动移植

    转载出处:http://blog.csdn.net/zcshoucsdn/article/details/55213616 HAL库结构   说到STM32的HAL库,就不得不提STM32CubeMX ...

  7. STM32系列(HAL库)——F103C8T6通过MFRC522、RFID射频卡、门禁卡模块读取卡片ID(二)

    本文继上一篇:STM32系列(HAL库)--F103C8T6通过MFRC522.RFID射频卡.门禁卡模块读取卡片ID 本文介绍在运用RC522模块时,运用链表结构存储数据的操作 Let's go! ...

  8. 【STM32】HAL库 STM32CubeMX教程十二---IIC(读取AT24C02 )

    前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 在之前的标准库中,STM32的硬件IIC非常复杂,更重要的是它并不稳定,所以都不推荐使用. 但是 ...

  9. 【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(一)

    前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 本文 1首先讲解什么是FMC及SDRAM,W9825G6KH芯片原理,2基于CubeMx创建工程 ...

最新文章

  1. 用GAN来做图像生成,这是最好的方法
  2. 1%学者拥有21%引用量,全球学术圈两极分化扩大
  3. 微软2011 Build大会:Windows 8盛大出场(转)
  4. Unable to lock JVM Memory: error=12--elasticsearch
  5. html php滚动代码,html中滚动条的代码是什么?如何设置html滚动条?
  6. 逐行对比两个文件内容的好用软件
  7. drupal ajax 分页,在drupal中使用Ajax时要保持一个404
  8. SentinelResource注解配置上_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0045
  9. C++设计模式--观察员
  10. 全球闪存供应紧张 新iPhone涨价只是开始
  11. Android 经常使用设计模式(一)
  12. 汉字转换为拼音 第一篇
  13. Linux PCI和PCIe总线
  14. 理一理Maven的phase, goal, surefire, failsafe
  15. Python中的六种基本数据类型
  16. ZYNQ PS使用中遇到问题
  17. 微信8.0.3:做重了群公告,再也不能@所有人了!
  18. 苏州银行信息技术面试
  19. 问答间了解ISO27701隐私信息管理体系
  20. 普通话测试app怎么样可以不交钱_普通话水平测试攻略(西安)

热门文章

  1. Slasher Flick
  2. python中init外面的属性_Python mock属性在\uyu init中定义和设置__
  3. PLSA概率潜在语义分析数学推导
  4. SAP BP最佳业务实践
  5. [讨论]去掉office正版提醒
  6. textarea回车符问题
  7. 简约不简单 细说专票电子化的“四个新”
  8. 电信光猫百兆端口(iTv)联网设置
  9. [改善脑力的23条方法]
  10. 如何用六年成为一个全能的机器人工程师