STM32F0 IAP (使用stm32CubeMX)

发布者:dong125612最新更新时间:2019-08-05 来源: eefocus关键字:STM32F0  IAP  stm32CubeMX 手机看文章 扫描二维码
随时随地手机看文章

BootLoader:


main里调用函数跳转到APP地址0x8003000


typedef  void (*pFunction)(void);

#define ApplicationAddress    0x8003000

void UserAppStart(void)

{

  if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)

    { 

      /* Jump to user application */

      JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);

      Jump_To_Application = (pFunction) JumpAddress;

      /* Initialize user application's Stack Pointer */

      __set_MSP(*(__IO uint32_t*) ApplicationAddress);

      Jump_To_Application();

    }

}


APP:


main 函数添加


#define APPLICATION_ADDRESS     ((uint32_t)0x08003000)

#if   (defined ( __CC_ARM ))

  __IO uint32_t VectorTable[48] __attribute__((at(0x20000000)));

#elif (defined (__ICCARM__))

#pragma location = 0x20000000

  __no_init __IO uint32_t VectorTable[48];

#elif defined   (  __GNUC__  )

  __IO uint32_t VectorTable[48] __attribute__((section(".RAMVectorTable")));

#elif defined ( __TASKING__ )

  __IO uint32_t VectorTable[48] __at(0x20000000);

#endif



  /* USER CODE BEGIN 1 */

uint32_t i = 0;

  /* Relocate by software the vector table to the internal SRAM at 0x20000000 ***/  

  /* Copy the vector table from the Flash (mapped at the base of the application

     load address 0x08003000) to the base address of the SRAM at 0x20000000. */

        

  for(i = 0; i < 48; i++)

  {

    VectorTable[i] = *(__IO uint32_t*)(APPLICATION_ADDRESS + (i<<2));

  }

// Enable the SYSCFG peripheral clock

  __HAL_RCC_SYSCFG_CLK_ENABLE();

  // Remap SRAM at 0x00000000 

  __HAL_SYSCFG_REMAPMEMORY_SRAM();



在Keil下设置IROM1:start 0x8003000 IRAM1:Start 0x200000C0



stm32f0 没有中断偏移寄存器,所以将中断向量表读取到RAM中,然后重映射到RAM地址.



参考:


http://bbs.21ic.com/icview-571430-1-1.html (5L&10L)


http://bbs.21ic.com/icview-822770-1


关键字:STM32F0  IAP  stm32CubeMX 引用地址:STM32F0 IAP (使用stm32CubeMX)

上一篇:基于STM32从零写操作系统系列---使用官方固件库
下一篇:STM32+IAP方案 实现网络升级应用固件

推荐阅读最新更新时间:2024-11-08 10:26

STM32F0单片机 PWM + ADC 控制有刷电机介绍
1.有刷电机驱动电路 有刷电机是电机里面最简单,也是历史最悠久的一种,到现在仍然广泛应用于各个领域。他的控制很简单,在电机的两个电极加正向电压,则正向旋转,如果加反向电压,则旋转方向也反过来。电机的转速可以通过控制加在电极上的电压来调节。在电机控制电路中最常用的器件就是 MOS 管了。可以分为两个大的类型:P 沟道 MOS 和 N 沟道 MOS。MOS 管可以简单的理解为一个自来水阀门,Gate 是控制端,调节 Drain 和 Source 端之间流过的电流大小。 下面是两种 MOS 的典型用法。P 沟道的 MOS 一般 S 接电源正极,然后 Vgs 需要一个负电压来打开电流通道,而 N 沟道的 S 极一般接电源的负极,Vgs
[单片机]
STM32CubeMX新建第一个工程
STM32CubeMX的新建工程其实很简单,如果需要有复杂的配置,整个工程就有很多细节的地方需要注意。 一、打开STM32CubeMX软件,点击“新建工程”: 2、选择芯片型号,点选后,双击选中对应型号(点一次是查看其信息,双击直接选择进入): 双击后 3、设置软件工程,Project - Settings弹出设置窗口,设置好参数,点击OK即可 注意:默认是选择最新版本的库,在使用时要选择自己的库,如上图第7步。 接着我们进行自由设置: 四、工程配置 接下的配置才是与我们最终运行代码密切相关的,我们这里以简单的配置IO(PE5引脚)驱动LED为例来讲述。 A、放大芯片图标,找到PE5(可以通过Fin
[单片机]
<font color='red'>STM32CubeMX</font>新建第一个工程
STM8L152C6T6+IAP详解
STM8L152C6T6:Flash 32KB RAM:2KB IDE:IAR for STM8 V3.10.2 IAP原理非常简单,首先在bootloader程序中接收(串口、spi、I2C。。。)第二个程序的代码,并写入Flash中,然后跳转到第二个程序首地址,开始运行第二个程序,也就是说我们需要写两个程序: 1.BootLoader 程序 2.用户APP 一、STM8 中断向量表与中断 我们知道,STM8程序下载都是从0x8000开始存放的(如果icf文件没改,一般不会改的),因为这是Flash的开始地址,那么程序下载到单片机到底下载了什么东西进去呢?没错,下载进去的东西就是Bin文件。 Bin文件包含
[单片机]
STM8L152C6T6+<font color='red'>IAP</font>详解
STM32 | 串口IAP实例分享
什么是IAP? IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。 在重新编程过程中可以使用任意类型的通信协议,如UART、I2S、SPI等。这篇笔记分享的是使用UART方式IAP。 串口IAP实验 先理一理流程(本实验是以STM32F103ZET6为例): 1、实验说明 做这个实验需要准备两个keil工程,一个工程用于编写IAP程序,另一个工程用于编写我们的应用程序(要实现某些功能的程序),这里我们以一个点灯程序为例。最终,两份工程编译出来的可
[单片机]
STM32 | 串口<font color='red'>IAP</font>实例分享
STM32CubeMX简介和安装使用方法
一、STM32CubeMX 简介 1、STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高开发效率。STM32CubeMX几乎覆盖了STM32 全系列芯片。 在CubeMX上,通过傻瓜化的操作便能实现相关配置,最终能够生成C语言代码,支持多种工具链,比如MDK、IAR For ARM、TrueStudio等 省去了我们配置各种外设的时间,大大的节省了时间。 安装CubeMx一共需要三个 JRE(Java Runtime Environment) Java运行环境 运行JAVA程
[单片机]
<font color='red'>STM32CubeMX</font>简介和安装使用方法
STM32CubeMX学习笔记——FreeRTOS_任务创建与删除
Github https://github.com/HaHaHaHaHaGe/Planof2019_half/tree/master/Course_Project/FreeRTOS/Class01_CreateTask 简介 在STM32CubeMX上配置FreeRTOS非常的简单,几乎不需要做任何操作,只需要勾选 移植FreeRTOS就成功了,关于在非Cube上的RTOS配置文件内的相关内容,也在下方的Configuration栏中给好了 所有的配置都可以在这里完成 任务创建 有别于在没有使用Cube下的创建方式,在Cube中它专门提供了可视化的创建方式,并且增加了中间文件cmsis_os.c将freertos中
[单片机]
<font color='red'>STM32CubeMX</font>学习笔记——FreeRTOS_任务创建与删除
片外FIash存储器IAP的n种方案
摘 要:针对嵌入式应用系统片外Flash存储器IAP无现成方案的问题,介绍一种基于代码重入思想的片外存储器IAP解决方案。结合LPC2210及SST39VFl60芯片,简介两款芯片特点,给出应用连接框图;分析IAP实现要点,并给出IAP的实现代码。 关键词:ARM7TDMI 嵌入式应用系统 片外Flash IAP 引 言 以ARM芯片为处理器核的嵌入式应用系统,以其小体积、低功耗、低成本、高性能、丰富的片内资源以及对操作系统的广泛支持,得到了人们越来越多的青睐。包括工业控制领域、无线通信领域、网络应用、消费电子、成像和安全产品等,如今,ARM微处理器及嵌入式技术的应用几乎已经渗透到了各个领域。其中ARM7作为ARM微处理器系
[缓冲存储]
如何通过STM32CubeMX制作外部Flash的烧写驱动 (.stdlr)
前言 目前,越来越多的应用需要扩展外部的Flash来满足存储需求。那么,在调试及批量生产的过程中,需要对外扩的Flash进行烧录操作。由于STM32 ST-LINK Utility以及STM32CubeProgrammer中,对Flash支持的型号有限,只能覆盖一部分MCU和Flash的型号,无法完全满足客户的需求。而且,它提供的external loader的制作模板存在覆盖的芯片型号较少,且无法前期QSPI Flash调试的问题。本文旨在提供一种通过stm32CubeMX制作external Flash loader的方法。客户可以根据自己的型号,进行定制化的生成。本文中,以某客户实际使用的MCU(STM32H750) 和Fl
[单片机]
如何通过<font color='red'>STM32CubeMX</font>制作外部Flash的烧写驱动 (.stdlr)
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved