STM32F1软件仿真

2023-10-30

MDK 的一个强大的功能就是提供软件仿真,通过软件仿真,我们可以发现很多将要出现
的问题,避免了下载到 STM32 里面来查这些错误,这样最大的好处是能很方便的检查程序存
在的问题,因为在 MDK 的仿真下面,你可以查看很多硬件相关的寄存器,通过观察这些寄存
器,你可以知道代码是不是真正有效。另外一个优点是不必频繁的刷机,从而延长了 STM32
的 FLASH 寿命(STM32 的 FLASH 寿命≥1W 次)。当然,软件仿真不是万能的,很多问题还
是要到在线调试才能发现。

检查配置

如下图

Debug 选项卡

Use Simulator,即使用软件仿真。选择:Run to main(),即跳过汇
编代码,直接跳转到 main 函数开始仿真。设置下方的:Dialog DLL 分别为:***DARMSTM.DLL ****

TARMSTM.DLL

Parameter 均为:

-pSTM32F103ZE

,用于设置支持 STM32F103ZE 的软硬件仿真(即可以通过Peripherals 选择对应外设的对话框观察仿真结果)。最后点击 OK,完成设置。

开始仿真

我们点击开始仿真,进入仿真界面

Debug工具条

  • 复位:相当于硬件复位按键,从头开始

  • 执行到断点处:该按钮用来快速执行到断点处

  • 挂起:可以使程序停止下来,
    进入到单步调试状态

  • 执行进去:实现执行到某个函数里面去的功能,在没有函数的情况下,是等同于执行过去按钮的

  • 执行过去:在碰到有函数的地方,通过该按钮就可以单步执行过这个函数,而不进入这个函数单步执行

  • 执行出去:该按钮是在进入了函数单步调试的时候,有时候你可能不必再执行该函数的剩余部分了,通过该按钮就直接一步执行完函数余下的部分,并跳出函数,回到函数被调用的位置。

  • 执行到光标处:可以迅速的使程序运行到光标处,其实是挺像执行到断点处按钮功能,但是两者是有区别的,断点可以有多个,但是光标所在处只有一个。

  • 汇编窗口:可以查看汇编代码,这对分析程序很有用。

  • 观看变量/堆栈窗口:显示变量的窗口,在里面可以查看各种你想要看的变量值,也是很常用的一个调试窗口。

  • 性能分析窗口:观看各个函数执行时间和所占百分比的窗口,用来分析函数的性能

  • 逻辑分析窗口:按下该按钮会弹出一个逻辑分析窗口,通过 SETUP 按钮新建一些 IO 口,就可以观察这些 IO 口的电平变化情况,以多种形式显示出来,比较直观。

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

STM32F1软件仿真 的相关文章

  • ARM Neon:如何从 uint8x16_t 转换为 uint8x8x2_t?

    我最近发现了关于vreinterpret q dsttype src类型转换运算符 https stackoverflow com a 43519190 2436175 但是 这似乎不支持所描述的数据类型的转换这个链接 http infoc
  • 在 ARM 处理器上执行存储在外部 SPI 闪存中的程序

    我有一个 ARM 处理器 能够与外部闪存芯片连接 写入芯片的是为 ARM 架构编译的程序 可供执行 我需要知道如何将这些数据从外部闪存获取到 ARM 处理器上以供执行 我可以提前运行某种复制例程 将数据复制到可执行内存空间吗 我想我可以 但
  • 如何使用 gcc 编译代码和 ARM Cortex A8 目标进行调用图分析?

    我对这个已经咬牙切齿了 我需要在 ARM 板上进行分析并需要查看调用图 我尝试使用 OProfile Kernel perf 和 Google 性能工具 一切正常 但不输出任何调用图信息 这使我得出结论 我没有正确编译代码 我在编译 C 代
  • 将 GCC 内联汇编与采用立即值的指令结合使用

    问题 我正在为 ARM Cortex M3 处理器开发定制操作系统 为了与我的内核交互 用户线程必须生成 SuperVisor Call SVC 指令 以前称为 SWI 用于软件中断 该指令在ARM ARM中的定义是 这意味着该指令需要即时
  • GCC ARM 汇编预处理器宏

    我正在尝试使用汇编 ARM 宏进行定点乘法 define MULT a b asm volatile SMULL r2 r3 0 1 n t ADD r2 r2 0x8000 n t ADC r3 r3 0 n t MOV 0 r2 ASR
  • 在嵌入式设备上使用new或malloc引起的段错误[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • Linux malloc() 在 ARM 和 x86 上的行为是否不同?

    这个网站上有很多关于内存分配的问题 但是我 找不到专门解决我的问题的人 这 问题 https stackoverflow com questions 19148296 linux memory overcommit details似乎最接近
  • 可以使用Visual Studio 2012构建ARM桌面程序吗?

    我正在使用 Visual Studio 2012 beta 我的桌面 win32 程序在 ARM 架构中编译得很好 升级到 Visual Studio 2012 RC 后 编译器无法工作并出现以下错误 不支持为 ARM 平台编译桌面应用程序
  • 为 ARM 交叉编译 zlib

    我尝试为arm poky linux gnueabi交叉编译zlib 但启动 make 时出现错误 zlib 1 2 11 AR HOST ar CC HOST gcc RANLIB HOST ranlib configure prefix
  • ARM 调用约定是否允许函数不将 LR 存储到堆栈中?

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

    我需要一点帮助 我想将数组中的元素向上移动一个元素 以便新位置 1 包含位置 1 中的旧值 new 2 包含 old 1 依此类推 旧的最后一个值被丢弃 第一个位置的新值是我每秒给出的新值 我使用大小为 10 的数组 uint32 t TE
  • STM32 传输结束时,循环 DMA 外设到存储器的行为如何?

    我想问一下 在以下情况下 STM32 中的 DMA SPI rx 会如何表现 我有一个指定的 例如 96 字节数组 名为 A 用于存储从 SPI 接收到的数据 我打开循环 SPI DMA 它对每个字节进行操作 配置为 96 字节 是否有可能
  • 在linux x86平台上学习ARM所需的工具[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个 x86 linux 机器 在阅读一些关于 ARM 的各种信息时 我很好奇 现在我想花一些时间学
  • 是否可以将 SpaCy 安装到 Raspberry Pi 4 Raspbian Buster

    我一整天都在安装 SpaCy sudo pip install U spacy Looking in indexes https pypi org simple https www piwheels org simple Collectin
  • 如何模拟ARM处理器运行环境并加载Linux内核模块?

    我尝试加载我的vmlinux into gdb并使用 ARM 内核模拟器 但我不明白为什么我会得到Undefined target command sim 这是外壳输出 arm eabi gdb vmlinux GNU gdb GDB 7
  • ARM Chromebook 上的 Android 开发环境?

    我尝试了多次安装和使用安卓工作室 https developer android com studio index html on an ARM Chromebook C100P https archlinuxarm org platfor
  • 英特尔的最后分支记录功能是英特尔处理器独有的吗?

    最后分支记录是指存储与最近执行的分支相关的源地址和目标地址的寄存器对 MSR 的集合 它们受英特尔酷睿 2 英特尔至强和英特尔凌动处理器系列的支持 http css csail mit edu 6 858 2012 readings ia3
  • ARM NEON 矢量化失败

    我想在 ARM cortex a9 上启用 NEON 矢量化 但在编译时得到以下输出 未矢量化 不支持相关 stmt D 14140 82 D 14143 77 D 14141 81 这是我的循环 void my mul float32 t
  • 需要一些建议来开始在 ARM(使用 Linux)平台上编程

    我 也许 很快就会在托管 Linux 发行版的 ARM 平台上工作 我不知道哪个发行版 我知道该项目涉及视频流 但我无法告诉你更多信息 其实我只收到通知 还没见到任何人 我从来没有在这样的平台上工作过 所以我的想法是在项目开始之前进行测试
  • 可以对 Xcode 中的 Arm 架构设置进行一些澄清

    据我了解 iPhone 5将采用新的架构 armv7s 我的项目具有有效的架构armv7 并且有Build Active Architecture Only set to true 由于现在商店中的每个应用程序都是为armv6 and or

随机推荐

  • imx6的mipi接口在qnx系统中的调试技巧,vcapture-test功能应用

    锋影 e mail 174176320 qq com 在调试 MIPI DSI CSI 的一些经验总结 因为协议有专门的文档 所以这里就记录一些常用知识点 一 D PHY 1 传输模式 LP Low Power 模式 用于传输控制信号 最高
  • linux如何指令输入,linux基本操作指令

    1 linux kernel 内核 2 什么时shell 保护系统内核并对外提供操作接口的软件 linux中默认的shell是 bash 3 在shell如何运行命令 命令行字符含义 kiosk foundation0 Desktop 1
  • Linux(未完,待续。。)

    目录 一 linux基础 二 常用命令 1 文件处理命令 1 1命令格式与目录处理命令ls 1 2 目录处理命令 2 权限管理命令 2 1 chmod 2 2 chown 2 3 chgrp 2 4 umask 3 文件搜索命令 3 1 f
  • 1013 数素数

    令 Pi 表示第 i 个素数 现任给两个正整数 M N 10 4 请输出 PM 到 P N 的所有素数 输入格式 输入在一行中给出 M 和 N 其间以空格分隔 输出格式 输出从 PM 到PN 的所有素数 每 10 个数字占 1 行 其间以空
  • InterlockedExchange

    LONG InterlockedExchange IN OUT PLONG Target IN LONG Value InterlockedExchange a b 能以原子操作的方式交换俩个参数a b 并返回a以前的值 因为Interlo
  • 关于区块链的所有英文知识,看这篇文章就够了

    上周HiBlock区块链社区发布了一则区块链翻译小组成员招募信息 一些感兴趣的小伙伴说很多英文名词不知道怎么翻译比较准确 有砖家提出 翻译的基本原则是信达雅 即先要基于约定俗成 也就是共识 那么到底这些区块链相关的名词 共识下的中文对照是什
  • Compiling MongoDB C++ Driver, Boost Error (Windows)

    Compiling MongoDB C Driver Boost Error Windows up vote 1 down vote favorite 1 I am trying to compile the MongoDB C Drive
  • STL迭代器简介

    转自 http www cppblog com The Moment archive 2009 06 18 88023 html 标准模板库 The Standard Template Library STL 定义了五种迭代器 下面的图表画
  • 考试管理系统【软件工程实践课设报告】

    若本文对你有用 请点赞 关注我哟 软件工程专业大四上学期课设之一 随便乱写的 报告评分不高 仅供参考 一 软件工程实践课程任务目标 掌握软件工程问题调研 问题分析和原型设计 掌握从技术 经济 社会等方面对系统软件的评估 掌握运用软件工程原理
  • 一文搞懂信号

    一 信号 1 1信号特点 信号 Signal 在操作系统中是一种进程间通信机制 用于向进程发送异步通知 以下是信号的几个特点 异步通知 信号是异步发送给进程的 即进程在接收到信号时会中断当前的执行流程 转而去处理信号的处理函数 这个特点使得
  • Linux之参考资料

    底下列出几个学习网站来提供大家做为参考的依据 Study Area http www study area org 鸟哥癿私房菜馆 http linux vbird org 卧龙大师癿网绚技术文件 http linux tnc edu tw
  • QT从入门到实战x篇_21_自定义控件封装(手动新增一个.ui文件;封装自定义组合控件;调用自定义控件;创建自定义控件间的功能关联;外部控件与自定义控件交流,创建自定义控件接口函数)

    前面几篇我们介绍了Qt自带的控件 本篇将会介绍如何自定义组合控件并创建接口为其他控件所使用的 在进行实际开发中 Qt自带的控件无法满足开发需求时 就需要通过对Qt控件进行封装实现自定义控件 1 首先创建名为 01 SmallWidget 的
  • [转]__declspec(dllexport) 和 __declspec(dllimport)

    declspec dllexport declspec dllexport 将一个函数声名为导出函数 就是说这个函数要被包含她的程序之外的程序调用 extern C 指示编译器用C语言方法给函数命名 在制作DLL导出函数时由于C 存在函数重
  • VMware Workstation Pro 虚拟机做RAID

    虚拟机添加两块硬盘 安装raid管理工具mdadm yum install y mdadm 查看磁盘情况 fdisk l 创建raid1 mdadm C dev md1 n 2 l 1 a yes dev sd b c 查看raid信息 c
  • linux下的串口调试工具安装及使用

    两行命令安装串口调试助手 如下 sudo apt get install cutecom sudo cutecom
  • 基础的复位电路

    目前在系统化的学习电路知识 因此将一些值得记忆的内容记录下来 方便查阅 单片机必须要设计一个复位电路 以防指针跑飞或是出现其他状况 由于系统初始化时 也需要一个过程 此时希望程序处于复位的状态 防止单片机误发命令 因此常用上图所示电路 以下
  • Hexo+Github博客搭建教程(个人操作过程)

    Hexo Github博客搭建教程 个人操作过程 最近自己尝试利用hexo github搭建了blog 来记录一下过程 一 准备环境 1 node环境 首先 安装 nodejs 因为Hexo是基于 Node js 驱动的一款博客框架 htt
  • MATLAB中fillmissing函数用法

    目录 语法 说明 示例 包含 NaN 值的向量 由 NaN 值组成的矩阵 插入缺失数据 使用移动中位数方法 使用自定义填充方法 包含缺失端点的矩阵 包含多个数据类型的表 fillmissing函数的功能是填充缺失的条目 语法 F fillm
  • 【Educoder作业】冯·诺依曼体系结构及工作原理理解

    Educoder作业 冯 诺依曼体系结构及工作原理理解 所有的那个实际场景模拟的题就不更了 没难度 趣味性更高 这个题和我们之前的一篇博客里面的题只一模一样的 链接 我们这里就不做任何讲解了 要说的那一篇里已经说过了 几天过去 有些程序的实
  • STM32F1软件仿真

    MDK 的一个强大的功能就是提供软件仿真 通过软件仿真 我们可以发现很多将要出现 的问题 避免了下载到 STM32 里面来查这些错误 这样最大的好处是能很方便的检查程序存 在的问题 因为在 MDK 的仿真下面 你可以查看很多硬件相关的寄存器