STM32在FREEOS进行IAP跳转死机

2023-10-30

现象:

STM32使用串口IAP进行跳转,发现APP程序用freeos编写的时候,程序跳转完成后就死机了。
IAP程序在跳转前都关闭了中断和复位了使用的外设。已经验证跳转到裸机程序没有问题。

FREEOS的程序在main函数开始就进行了开启中断和复位向量表。
int main(void)
{
/* USER CODE BEGIN 1 /
__enable_irq();
SCB->VTOR = FLASH_BASE | 0X00004000;
/
USER CODE END 1 */
/…略…

方案:

经过跳转,将__enable_irq();这个函数设置到主循环开始前可以解决。

/* Call init function for freertos objects (in freertos.c) /
MX_FREERTOS_Init();
/
Start scheduler */
osKernelStart();
__enable_irq();

/* We should never get here as control is now taken by the scheduler /
/
Infinite loop /
/
USER CODE BEGIN WHILE /
while (1)
{
/
USER CODE END WHILE */

/* USER CODE BEGIN 3 */

}
/* USER CODE END 3 */

原因:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32在FREEOS进行IAP跳转死机 的相关文章

  • 读取和打印手臂组件中的字符串

    我正在使用 ARMSim 刚刚开始学习汇编 所以如果我看起来一无所知 请原谅我 但我正在尝试从输入文件中读取字符串 然后将其打印到输出屏幕 到目前为止我有 equ SWI Open 0x66 open a file equ SWI Clos
  • Linux malloc() 在 ARM 和 x86 上的行为是否不同?

    这个网站上有很多关于内存分配的问题 但是我 找不到专门解决我的问题的人 这 问题 https stackoverflow com questions 19148296 linux memory overcommit details似乎最接近
  • M1 MacBook Pro 上的 Android Studio 无法使用 ABI armeabi-v7a 模拟系统映像

    我的 M1 Macbook Pro 上的 Android Studio 可以很好地模拟 ABI arm64 v8a 的所有系统映像 API 24 29 30 31 但是 它无法使用 ABI armeabi v7a 运行所有映像 例如 API
  • ARM 调用约定是否允许函数不将 LR 存储到堆栈中?

    正如标题所示 我在理解 ARM 架构的调用约定时遇到问题 特别是 我仍然很难知道当你调用子程序时 LR 寄存器会发生什么 我认为 当您进入子程序时 处理 LR 寄存器的最明显 最安全的方法是将其存储到堆栈中 但该行为没有出现在文档中 因此我
  • 移动数组中的元素

    我需要一点帮助 我想将数组中的元素向上移动一个元素 以便新位置 1 包含位置 1 中的旧值 new 2 包含 old 1 依此类推 旧的最后一个值被丢弃 第一个位置的新值是我每秒给出的新值 我使用大小为 10 的数组 uint32 t TE
  • 使用 Android NDK 使用 -fsigned-char 进行构建安全吗?

    为了与其他平台保持一致 我需要使用signed char在我正在处理的一些本机代码中 但默认情况下在Android NDK上char类型是unsigned 我尝试明确使用signed char类型 但它生成太多警告differ in sig
  • Beaglebone Black 的 U-boot 无法构建 - 目标 CPU 不支持 THUMB 指令

    我正在尝试按照 Chris Simmonds 的 掌握嵌入式 Linux 编程 中的说明为 Beagle Bone Black 构建 u boot 我已经构建了交叉工具链 现在正在尝试使用该工具链构建 Das U boot 但由于不支持 T
  • AOSP 的“午餐”组合是什么意思?我需要选择什么?

    我是 Android 设备 ROM 开发的新手 无论如何 我现在正在为具有 64 位处理器的中国设备构建 AOSP 我按照 source android com 上的菜单进行操作 当我运行 午餐 命令时 终端显示 午餐菜单 选择一个组合 我
  • gdb 不会从外部架构读取核心文件

    我正在尝试在 Linux 桌面上读取 ARM 核心文件 但似乎无法找出我的核心文件 有什么方法可以指示 gdb 我的核心文件是什么类型吗 file daemon daemon ELF 32 bit LSB executable ARM ve
  • Qemu flash 启动不起作用

    我有一本相当旧的 2009 年出版 嵌入式 ARM Linux 书 其中使用u boot and qemu 的用法qemu与u boot书中对二进制的解释如下 qemu system arm M connex pflash u boot b
  • 直接在 ARM 目标上调试单声道应用程序

    我最近在 BeagleBone 嵌入式 ARM 设备上安装了 Mono 希望通过 USB 连接 Kinnect 传感器并使用 C Mono 控制它 我想知道 Mono 我正在使用 MonoDevelop 但我想这个问题也适用于 VS 是否允
  • 什么是遗留中断?

    我正在开发一个项目 试图弄清楚 ARM 架构的全局中断控制器中如何处理中断 我正在使用 pl390 中断控制器 我看到有一条线被称为传统中断 它绕过了分配器逻辑 假设有 2 个中断可以被编程为传统中断 任何人都可以帮助解释一下什么是遗留中断
  • GCC C++ (ARM) 和指向结构体字段的 const 指针

    假设有一个简单的测试代码 typedef struct int first int second int third type t define ADDRESS 0x12345678 define REGISTER type t ADDRE
  • ARM 的内核 Oops 页面错误错误代码

    Oops 之后的错误代码给出了有关 ARM EX 中的恐慌的信息 Oops 17 1 PREEMPT SMP在这种情况下 17 给出了信息 在 x86 中它代表 bit 0 0 no page found 1 protection faul
  • 错误:-march= 开关的值错误

    我写了一个Makefile 但无法让它工作 我有一个选项应该选择编译到哪个处理器 然而 当我跑步时make从命令行它说 tandex tandex P 6860FX emulators nintendo sdks 3DS SDK HomeB
  • LDR指令如何将常量加载到寄存器中?

    我刚刚读了一本ARM指令书 看到一条指令我无法解释 It says LDR将 32 位常量加载到r0登记 LDR r0 pc const number 8 pc const number DCD 0xff00ffff 我不明白什么 pc c
  • 已编译 LKM 的互换性

    是否可以使用可加载内核模块 编译为3 0 8 mod unload ARMv5 我自制的内核 在具有版本的内核中3 0 31 gd5a18e0 SMP preempt mod unload ARMv7 安卓股票内核 该模块本身几乎不包含任何
  • GCC 变量映射和 MISRA-C

    我主要知道两种使用 GCC 声明内存映射寄存器的方法 有许多变体 使用双字段 每个外设的数据结构等 要么使用初始化为正确地址的指针 例如volatile uint32 t pMyRegister uint32 t 0xDEADBEEFUL
  • ARM、VFP、浮点、惰性上下文切换

    我正在为 ARM 处理器 Cortex A9 编写操作系统 我正在尝试实现浮点寄存器的延迟上下文切换 这背后的想法是 浮点扩展最初对线程禁用 因此不需要在任务切换上保存浮点上下文 当线程尝试使用浮点指令时 会触发异常 然后 操作系统启用浮点
  • 读取STM32 MCU SPI数据寄存器的值

    有很多类似的问题 但似乎没有一个问题完全相同 我正在将 STML4 MCU 连接到 6 轴传感器 LSM6DS3 我已经成功地在 I2C 中实现了所有内容 但想要 SPI 的额外速度 和 DMA 如果我能让这些第一步工作起来的话 因此 第一

随机推荐

  • nvme linux读写测试工具,Nvme-Cli使用心得(二) Read/Write测试经验

    1 Write 首先看Write命令的官方说明 nvme write start block s block count c data size z metadata size y ref tag r data d metadata M p
  • R语言caretEnsemble包搭建Stacking集成模型

    R语言caretEnsemble包搭建Stacking集成模型 caretEnsemble包简介 小的tips caretEnsemble搭建Stacking集成模型 caretList caretEnsemble caretStack 问
  • Slowhttptest----DoS攻击工具

    Slowhttptest DoS攻击工具 文章目录 slowhttptest centos下安装slowhttptest Ubuntu 20 04 LTS下安装slowhttptest 使用 slowhttptest SlowHTTPTes
  • android定时器的三种写法

    这是网上看到的某一篇技术博客的分享 自己贴了代码 作为记录使用 代码简单易懂 1 xml文件
  • android与H5交互方法简介,四面楚歌的Android工程师该何去何从

    3 2 1 loadUrl 方式 3 2 2 evaluateJavascript 方式 3 3 JS调用Java代码 3 3 1addJavascriptInterface 方式 3 3 2拦截请求方式 3 3 2拦截对话框方式 1 前言
  • Spring 的 IOC 容器和 SpringMVC 的 IOC 容器 关系

    需要进行 Spring 整合 SpringMVC 吗 还是否需要再加入 Spring 的 IOC 容器 是否需要再 web xml 文件中配置启动 Spring IOC 容器的 ContextLoaderListener 1 需要 通常情况
  • 配置宝塔,搭建网站

    配置宝塔面板 一 获取虚拟机的IP地址 打开虚拟机 输入命令 ip addr获取IP地址 二 使用cmd运行获取宝塔面板信息 1 运行cmd 并输入命令ssh root 获取的IP地址 2 输入登录密码 3 获取宝塔的命令行 4 输入14命
  • 跨专业计算机研究生如何毕业论文,跨专业考研论文要求

    跨专业考研写几篇论文 跨专业考研论文要求 近几年 跨专业考研得的队伍愈发壮大 许多考生不仅会跨相关专业 甚至还有人进行文理科间得的 大转行 跨专业报考得的难度系数在考研中是比较大得的 既有 满盘皆输 得的危险 也可能会带来出奇制胜得的效果
  • Column ‘status_type‘ in where clause is ambiguous

    多表查询时 由于字段名字有重复 所以需要指定那张表的字段
  • 学习笔记《你不知道的JavaScript上卷》第一章 作用域是什么 1.2理解作用域

    引擎 从头到尾负责整个 JavaScript 程序的编译及执行过程 编译器 引擎的好朋友之一 负责语法分析及代码生成等脏活累活 详见前一节的内容 作用域 引擎的另一位好朋友 负责收集并维护由所有声明的标识符 变量 组成的一系列查 询 并实施
  • 小程序开发工具全新上线

    导语 为了让开发者更高效地开发和发布小程序 微信开发者工具全新改版上线 并新增测试系统 腾讯云工具 运维性能监控 小程序分阶段发布 WXS脚本语言等 01 微信开发者工具 为提升小程序开发体验 帮助开发者更高效地开发小程序代码 微信开发者工
  • JDBC自定义框架

    自定义JDBC框架 定义必要的信息 获取数据库的连接 释放资源都是重复的代码 在操作JDBC时通常都是执行SQL语句就可以了 所以需要抽取出来一个模板类来封装一些方法 Update Query 专门执行增删改查的SQL语句 简化使用步骤 D
  • 字符串转LocalDateTime异常

    文章目录 现象 解决方案 拓展测试 总结 现象 当使用LocalDateTime 与字符串互转异常 使用LocalDateTime 字符串必须带时分秒 public static void main String args DateTime
  • vcruntime140.dll重新安装的方法(最佳推荐方法)

    vcruntime140 dll是什么什么文件呢 为什么电脑在运行一些游戏的时候会出现丢失vcruntime140 dll 然后游戏运行失败 这个dll文件是电脑重要的运行库文件 丢失了会导致很多程序无法运行 下面将介绍vcruntime1
  • 在vue项目中使用高德地图

    1 安装高德地图插件 npm install vue amap save 2 申请高德地图账号和key 官网地址 高德开放平台 高德地图API 3 在main js中引入 引入vue amap import VueAMap from vue
  • 三维包围盒碰撞检测算法-Python(OBB-SAT)

    想实现一个检测三维包围盒是否发生碰撞的功能 因为目标是任意方向的三维包围盒 即没有和坐标轴对齐的旋转包围盒 所以考虑采用检测OBB碰撞的SAT算法 但找了很久没找到现成的python代码 就比着别人写的C 版本自己写了python的代码 1
  • CAT3、CAT4、CAT5、CAT5E、CAT6、CAT6A、CAT7和CAT8网线的介绍

    目录 1 CAT3网线 10Mbps 2 CAT4网线已淘汰 3 CAT5 网线 100MHz 100Mbps 4 CAT5E网线 100MHz 1000Mbps 5 CAT6网线 250MHz 1000Mbps 6 CAT6A 网线 50
  • C#程序中进行FTP上传下载时出现的问题

    在C 程序中 进行ftp操作时容易出现的问题 The remote server returned an error 550 File unavailable e g file not found no access 解决方法 首先 查看登
  • matlab中的twomodegauss函数-双峰高斯函数

    文章搬运于 http blog sina com cn s blog 4fc818ea0101l8kn html function p twomodegauss m1 sig1 m2 sig2 A1 A2 k TWOMODEGAUSS Ge
  • STM32在FREEOS进行IAP跳转死机

    现象 STM32使用串口IAP进行跳转 发现APP程序用freeos编写的时候 程序跳转完成后就死机了 IAP程序在跳转前都关闭了中断和复位了使用的外设 已经验证跳转到裸机程序没有问题 FREEOS的程序在main函数开始就进行了开启中断和