一、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小知识】DMA入门
下一篇:STM32驱动四线I2C的OLED例程
推荐阅读最新更新时间:2024-11-11 11:24
设计资源 培训 开发板 精华推荐
- 基于汽车级 SPC58 MCU 和 AutoDevKit 开发计划的 AEKD-USBTYPEC1、USB Type-C 和 USB 供电评估套件
- MIMXRT1170-EVK: i.MX RT1170评估套件
- DC905A、LT3491ESC8 演示板固定频率升压电流模式 DC-DC 转换器
- Blackfin DSP 的高性能数字 MEMS 麦克风标准数字音频应用电路接口
- NCV33074ADR2G高速低压比较器典型应用
- LTC2145-12 演示板,12 位 125Msps 双路 ADC,DDR LVDS 输出,5-140MHz
- OSNRDBUG,基于 MKW24D512 的占用传感器节点参考设计板
- 基于L6362A的IO-Link工业模块化传感器板
- FSA641 模拟开关多路复用器的典型应用
- LM2931AZ50R 具有抑制功能的超低压降稳压器典型应用电路
- 【答题有奖】Altera Cyclone V 开发板全体验之初识 & 评估Cyclone V !
- 【EE团】铁电MSP-EXP430FR5739低价来袭,让你的夏日清凉到底!
- 闯关赢好礼!美光出货 232 层 NAND,扩展 3D NAND 技术边界
- 抢先体验:恩智浦最新LPC1500开发板,速来!
- ADI有奖下载活动之12 ADI基于视觉的占用检测解决方案
- 【楼层接力】电阻你问我答!
- 有奖直播 | 德州仪器 C2000™ 系列培训会
- 下载有礼喽!2017年泰克亚太专家大讲堂第三期: 超宽带复杂电磁信号产生与实时分析技术
- 【最后1天】MPS 有奖倾诉|说出哪些年让你头大的电感应用问题,赢【颈部按摩仪、智能音箱】