STM32 IAP学习

STM32三种烧录方式

ISP:In System Programming(在系统编程)
执行芯片厂商的BootLoader程序进入ISP模式,进入ISP模式后,用户可选择官方提供的烧录通信接口(如:串口),并配合ISP编程工具(如:FlyMCU)对闪存进行烧录。

在这里插入图片描述
ICP:In Circuit Programming(在线编程)
使用IDE并通过JTAG/SWD接口对闪存进行烧录

IAP:In Application Programming(在应用编程)
使用用户的应用程序(也称为BootLoader程序)对闪存进行烧录。该应用程序需要通过一种通信接口(如:IO口\USB…等)对闪存进行烧录(即把APP程序烧录到闪存)。
IAP通常被开发者用作远程升级的手段。

IAP应用原理介绍

在这里插入图片描述
在这里插入图片描述

程序正常运行过程

在这里插入图片描述

  1. 跳转到复位中断服务函数
  2. 跳转到main函数
  3. 发生中断时,会强制跳转到中断向量表
  4. 根据中断源,跳转到对应的中断服务函数
  5. 执行中断服务程序后,回到main函数原来的位置执行

加入IAP后程序运行过程

在这里插入图片描述

  1. 执行复位中断服务函数后,跳转到IAP程序main函数
  2. 执行IAP过程,跳转到APP中断向量表
  3. 跳转到APP的main函数
  4. 发生中断时,会强制跳转到地址为0x08000000的中断向量表
  5. 根据设置的中断向量表偏移量,跳转到APP对应的中断服务函数
  6. 执行中断服务函数后,回到main函数原来的位置执行

APP程序的生成步骤

  1. 设置APP程序的起始地址和存储空间大小
  2. 设置中断向量表偏移量:设置SCB->VTOR的值即可
  3. 设置MDK编译后运行fromelf.exe,生成.bin文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/600718.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ UTF-8与GBK字符的转换 —基于Windows (MultiByteToWideChar WideCharToMultiByte)

1、UTF-8 和 GBK 的区别 GBK:通常简称 GB (“国标”汉语拼音首字母),GBK 包含全部中文字符。 UTF-8 :是一种国际化的编码方式,包含了世界上大部分的语种文字(简体中文字、繁体中文字、英文、…

word2019保存后的图片变模糊了怎么办?Word 2019 默认保存后压缩变模糊的问题,解决方案

Word 2019 默认保存后压缩变模糊的问题,解决方案 1,新建word 文件,插入一张原始图片,1080*1920,如下图: 2,保存时,word 2019默认选项,导致word 保存后,图片…

CTFshow web入门web127-php特性30

开启环境: extract() 函数从数组中将变量导入到当前的符号表,使用数组键名作为变量名,使用数组键值作为变量值 举例就是?a2,就会变成$a2,这里ctf_show有个_需要构造,前面说过php中变量名只有数字字母下划线&#xff…

<HarmonyOS主题课>1~3课后习题汇总

<HarmonyOS第一课>1~10课后习题汇总 1使用DevEco Studio高效开发 单选题 用哪一种装饰器修饰的组件可作为页面入口组件?(B) A. ComponentB. EntryC. PreviewD. Builder ArkTS Stage模型支持API Version 9&#xf…

uniapp 日历组件

我们的需求是显示当前月和下个月的排班表 引入 uniapp 日历组件 uni-calendar 做法有两种&#xff0c;一种是直接去修改组件&#xff0c;还有就是文档中提供的 selected 方法 修改组件的就不写了 <uni-calendar :lunar"true" :selected"selected" :in…

【demoSURF】室内定位(图像匹配)基础代码实现,包含所有可以出现问题的解法

代码如下 import numpy as np import cv2 from matplotlib import pyplot as plt plt.rcParams[font.sans-serif] [SimHei] # 用来正常显示中文标签 plt.rcParams[axes.unicode_minus] False # 用来正常显示负号img1 cv2.imread("D:/data/North/0007.JPG",0) i…

【C语言】自己代码实现字符串相关的常用API

目录 1、实现get(char *)&#xff1b;从键盘获取字符串2、实现put&#xff08;char *&#xff09;&#xff1b;输出字符串3、实现strlen&#xff08;char *&#xff09;&#xff1b;求字符串长度4、实现strcpy&#xff08;char *&#xff0c;char *&#xff09;&#xff1b;拷贝…

C#,入门教程(11)——枚举(Enum)的基础知识和高级应用

上一篇&#xff1a; C#&#xff0c;入门教程(10)——常量、变量与命名规则的基础知识https://blog.csdn.net/beijinghorn/article/details/123913570 不会枚举&#xff0c;就不会编程&#xff01; 枚举 一个有组织的常量系列 比如&#xff1a;一个星期每一天的名字&#xf…

使用HttpSession和过滤器实现一个简单的用户登录认证的功能

这篇文章分享一下怎么通过session结合过滤器来实现控制登录访问的功能&#xff0c;涉及的代码非常简单&#xff0c;通过session保存用户登录的信息&#xff0c;如果没有用户登录的话&#xff0c;会在过滤器中处理&#xff0c;重定向回登录页面。 创建一个springboot项目&#…

Visual Studio 2017 + opencv4.6 + contribute + Cmake(Aruco配置版本)指南

之前配置过一次这个&#xff0c;想起这玩意就难受&#xff0c;贼难配置。由于要用到里面的一个库&#xff0c;不得已再进行配置。看网上的博客是真的难受&#xff0c;这写一块&#xff0c;那里写一块&#xff0c;乱七八糟&#xff0c;配置一顿发现写的都是错的&#xff0c;还得…

Materail Design 进阶(十一)——MaterialButton使用

距离上次写Material组件的文章已经过去了好多年&#x1f604;&#xff0c;最近在写Flutter又接触到了Material&#xff0c;已经升级了许多&#xff0c;这次就用新的组件来试试吧&#xff5e; Button组件大家都非常熟悉了&#xff0c;如果画一个带圆角&#xff0c;边框的按钮&a…

FFmpeg读取Assets资源文件

在Android开发中我们经常把原生资源文件放在assets目录下以供需要时读取&#xff0c;通过API提供的resources.assets.open(filename)/openFd(filenam)方法可以非常方便获得InputStream或FileDescriptor&#xff08;文件标识符&#xff09;&#xff0c;但是在使用FFmpeg读取Asse…

JavaScript系列——同步与异步

文章目录 概要同步代码&#xff1a;异步代码 JavaScript运行机制运行时概念栈&#xff08;stack&#xff09;堆队列消息的添加 异步场景网络请求 异步编程优化小结 概要 异步&#xff0c;按照字面理解&#xff0c;指的是两个或者两个以上的对象或事件不同时存在或者发生&#…

透明OLED屏的稳定性:从技术角度及应用案例解析

在显示技术日新月异的今天&#xff0c;透明OLED屏以其独特的透明特性和出色的显示效果&#xff0c;吸引了众多关注。然而&#xff0c;对于这种新型技术的稳定性&#xff0c;人们难免会有所疑虑。作为一名专注于OLED技术研发的工程师&#xff0c;尼伽小编将从专业角度出发&#…

十种编程语言的对比分析

在当今的软件开发领域&#xff0c;编程语言扮演着至关重要的角色。不同的编程语言各有其特点和适用场景&#xff0c;选择合适的编程语言能够提高开发效率和软件质量。本文将对十种常见的编程语言进行对比分析&#xff0c;帮助读者了解它们的优缺点和适用场景。 一、Python Pyt…

云化XR技术于农业领域中的表现

随着科技的不断发展和应用的深入&#xff0c;农业领域也在逐渐引入新技术来优化生产效率和成本、改进管理和监控等。云化XR&#xff08;CloudXR&#xff09;作为一种融合了云计算、虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;等技术的解决方案&am…

生信技能33 - gnomAD数据库hg19/hg38 VCF文件批量下载脚本

gnomAD数据库下载地址 gnomAD downloads gnomAD v2.1.1数据集包含来自125,748个外显子组和15,708个全基因组的数据,所有这些数据都映射到GRCh 37/hg 19和GRCh 38/hg 38 两个版本的参考序列。 gnomAD数据库hg19与hg39 VCF文件批量下载脚本 download.sh # 获取当前目录路径…

C++-异常处理

1、概念 异常时程序在执行期间产生的问题。C异常是指在程序运行时发生的特殊情况。比如string::at函数下标越界等。 异常提供了一种转移程序控制权的方式。 一旦程序出现异常没有经过处理&#xff0c;就会造成程序运行崩溃。 处理异常的方式有&#xff1a;抛出异常&#xff08;…

Python基础(十九、文件操作写入与追加)

文章目录 一、文件的写入&#xff08;使用 "w" 模式&#xff09;二、文件的追加&#xff08;使用 "a" 模式&#xff09;三、文件备份案例接之前的答案 在 Python 中&#xff0c;open() 是一个内置函数&#xff0c;用于打开文件并返回文件对象。它是处理文件…

助力实体店数字化升级,VR智慧门店打造线上逛店体验

近年来&#xff0c;传统实体店业绩增长过于缓慢&#xff0c;实体门店的销售疲态十分明显&#xff0c;甚至于部分城市已经出现大量线下实体店开始关门的现象&#xff0c;因此顺应实体零售数字化升级趋势已经刻不容缓。越来越多的实体门店开始意识到这个问题&#xff0c;并逐步开…