STM32-IAP学习笔记

发布者:雅意盎然最新更新时间:2021-10-18 来源: eefocus关键字:STM32  IAP  学习笔记 手机看文章 扫描二维码
随时随地手机看文章

一、IAP名词解释

所谓的IAP(在应用编程)说白了,功能就是可以实现用户程序的升级。为此实际开发中需要准备两份工程代码,一份工程代码我们称之为BootLoader程序,另一份工程代码我们称之为APP程序。


在实际操作过程中是先通过软件(如keilMDK的download按钮)手动下载第一份BootLoader程序到STM32的FLASH中,该部分代码主要通过某种通信接口(常用USART)接收第二份APP程序,然后写入到FLASH中。


二、STM32运行流程

STM32的FLASH程序运行是从0x08000000开始的!


1、加入IAP前,程序运行流程

在这里插入图片描述

2、加入IAP后,程序运行流程

在这里插入图片描述

三、使用方法

另外需要注意,起始地址偏移量为 0X200的倍数即可


1、BootLoader程序

①、keil魔术棒中的Target配置如下:(不需要动,按照单片机选型就可以)

在这里插入图片描述

②、stmflash.h中需要注意如下内容:

在这里插入图片描述

BootLoader大小为10KB

在这里插入图片描述

2、APP程序

①、keil的魔术棒配置如下:(APP程序在FLASH中的起始地址和大小需要根据实际情况配置下,RAM的话默认即可)

在这里插入图片描述

②、设置APP程序的中断向量表偏移,如下图

在这里插入图片描述

如果不在APP程序里面做一下设置,那么APP程序里面的中断其实会跳进 bootloader 里面(假设bootloader 也使用了一样的中断)。故,需要让APP里面生成自己单独的一套中断。


所以,需要设置下中断向量偏移,一般是APP程序相对于Flash地址偏移了多少,就设置中断向量偏移多少。


SCB->VTOR = FLASH_BASE | 0x4000;


③、设置擦除FLASH方式Erase Sectors


Erase Full Chip:烧写程序之前擦除整个Flash存储器。

Erase Sectors:  烧写程序之前擦除程序要使用的扇区。

Do not Erase:   不进行擦除操作


不然小心把BootLoader也给擦除了。。。。

在这里插入图片描述

最后

BootLoader 程序里面设置的硬件配置,中断配置在跳转到APP程序里面的时候同样有效!除非APP里面重写硬件配置,中断配置,否则,还是默认运行的BootLoader里面配置的!


故,最好的方式是凡是BootLoader里面用到的中断函数,用户程序全部重新写一遍.可以不用,但是必须重写!


像这样:


BootLoader中的滴答定时器中断

在这里插入图片描述

在APP程序中,即使我们没有用到,也要像如下所示写上去!

在这里插入图片描述

关键字:STM32  IAP  学习笔记 引用地址:STM32-IAP学习笔记

上一篇:【STM32小知识】DMA入门
下一篇:STM32驱动四线I2C的OLED例程

推荐阅读最新更新时间:2024-11-11 11:24

STM32独立看门狗详解
本文将介绍STM32的看门狗中的独立看门狗,并通过实例来喂狗、体验喂狗与不喂狗的区别。 ①STM32看门狗介绍之独立看门狗 ②使用STM32CUBEMX来配置工程文件 ③代码实现,按键按下喂狗、按键不按下不喂狗程序复位 ①STM32看门狗介绍之独立看门狗 看门狗定时器本质上是一个计数器、给计数器一个数值,在程序 运行后计数器的值开始递减,当计数器的值减到0是会将程序复位,若在减到0之前给计数器更新一下值“喂狗”则从最新的值开始递减; 用途: 1、这样做的好处就是程序跑飞、死机时,通过复位的方式使得程序又正常运行; 2、用于将系统从休眠或者空闲模式唤醒。 看门狗的种类: 独立看门狗IWDG 特点:专用时钟LSI、低功耗模式仍
[单片机]
<font color='red'>STM32</font>独立看门狗详解
贸泽率先独家备货STMicroelectronics的STM32 LoRaWAN 探索板
最新半导体和电子元件的全球授权分销商贸泽电子(Mouser Electronics) 即日起率先备货STMicroelectronics (ST)的STM32 LoRaWAN™ 探索板。这款新型探索套件与可从贸泽电子订购的Arduino兼容I-NUCLEO-LRWAN1 STM32 LoRa™扩展板一起作为一个平台,用于了解和评估基于LoRa和FSK/OOK 射频 (RF) 通信的解决方案。         贸泽电子独家备货的 ST STM32 LoRaWAN探索套件基于一体化开放式 Murata Type ABZ模块,支持低功率广域网(LPWAN) 和LoRaWAN 远程无线协议。Type ABZ模块包含一个具有192 KB 闪
[单片机]
STM32一直死在r1,[r0,#0x808]
今天在调试STM32的时候,程序一直死在以下代码中 LDR r1, LSLS r1,r1,#21 BMI 0x1FFFF3B2 原因,BOOT0引脚被拉高了。 解决办法,将BOOT0引脚接地。 没找到本质原因,一直在启动汇编、芯片IC选择、启动代码编译地址、中断向量表重定向那里找,统统不是,就是一个简单的开关引脚。 问题都是自己搞复杂的……
[单片机]
stm32专题十八:SPI协议
参考标准SPI协议说明: 1 SPI架构: SPI的主要部分是状态,控制和数据寄存器,移位器逻辑,波特率发生器,主/从控制逻辑和端口控制逻辑。 SPI模块允许MCU和外围设备之间的双工,同步,串行通信。 软件可以轮询SPI状态标志,或者SPI操作可以是中断驱动的。 2 详细信号说明 2.1 MOSI master output, slave input 2.2 MISO master input, slave output 2.3 SS非(低电平使能) 该引脚用于将选择信号从SPI模块输出到另一个外设,当配置为主机时,将其作为数据传输,当SPI配置为从机时,它用作接收从机选择信号的输入。
[单片机]
<font color='red'>stm32</font>专题十八:SPI协议
STM32中按键中断分析
在按键学习中,我们有用到查询的方法来判断按键事件是否发生,这种查询按键事件适用于程序工作量较少的情况下,一旦程序中工作量较大较多,则势必影响程序运行的效率,为了简化程序中控制的功能模块的执行时间,引入中断控制就很有必要,,一旦有中断时间发生,则程序立马跳转到中断向量的执行程序中,执行完成后就恢复到正常的程序状态。 在STM32F中采用中断控制器NVIC来设定中断。按照中断初始化配置的结构体文件,我们需要在NVIC初始化结构体配置如下: void EXti_PB12_Config(void) { //定义结构体 GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeD
[单片机]
STM32 USB接口介绍
以下内容基于STM32H7系列进行介绍,同样适用于STM32F4/F7系列芯片。 USB on-the-go 高速(OTG_HS) STM32的USB接口支持OTG模式,芯片手册上描述如下: USB OTG 是一款双角色设备 (DRD) 控制器,同时支持从机功能和主机功能,完全符合 USB 2.0 规范的 On-The-Go 补充标准。此外,该控制器也可配置为“仅主机”模式或“仅从机” 模式,完全符合 USB 2.0 规范。 OTG通俗一点来说,就是既可以作为从设备和主机通信(比如电脑读写手机上的内容),又可以作为主机和从设备通信(比如手机读写U盘) USB 通信速率 STM32 USB支持三种速度模式,高速模式(High Spe
[单片机]
<font color='red'>STM32</font> USB接口介绍
stm32若干技巧
技巧1:关于串口接收 对于串口数据帧到检测,对于串口接收有判定帧头、尾 FIFO缓存等方式,推荐采用超时判断来确定一帧数据接收完成,尤其对于处理GPS,3G模块数据效,比判断帧头、尾效果好的多。参考网友模式 //检测超时函数 供定时器中断调用-1ms一次 // t为超时时间 __inline void Chk_TimeOut(u8 t) { if(!uartRMsg.rcOK && (uartRMsg.rcIndex =8) && (++uartRMsg.rcS =t) ) //超时之后,开始重新解码 uartRMsg.rcOK = true; } //接收函数, 供USART中断调用 __inline void Recie
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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