KEIL5软件仿真支持的器件

news2025/1/13 13:24:47

问题的提出

用KEIL进行软件仿真,想观察一下处理器STM32F091RCY的I2C和DAC引脚输出的波形,发现无法向波形中添加信号,如下图所示

在这里插入图片描述
当在命令行中输入 dir vtreg 指令时,仅仅能够显示内核的寄存器,外设的寄存器无法输出:

dir vtreg
    CURR_TID:  ulong, value = 0x00000000
       TRAPS:  ulong, value = 0x00000000
     TRIGFLT:  ulong, value = 0x00000000
       STCLK:  ulong, value = 0x00000000
        XTAL:  ulong, value = 0x007A1200
       CLOCK:  ulong, value = 0x007A1200

网上寻找答案,发现所有的关于软件逻辑分析仪的示例都是用器件STM32F103

问题的答案

KEIL5仅对某些器件的外设支持仿真,KEIL官方给出了网站
,在该网页中,列出了支持软件仿真的器件,如:

  1. 对于STMicroexectronics公司的处理器,仅支持STM32F101和STM32F103.
  2. 对于NXP公司的处理器,仅支持LPC1111, LPC1112, LPC1113, LPC1114四个系列.

在这里插入图片描述
这也难怪,网上给出的KEIL的软件逻辑分析仪的仿真示例都是用STM32F103这个器件。

问题的解决

为了仿真I2C的程序段,在STM32CUBE MX中,将器件改为STM32F103C8,重新进行仿真,在Option for Target中的Debug中,按下图进行设置:

在这里插入图片描述

进入debug界面,在命令行中输入DIR VTREG, 显示出外设的寄存器:

DIR VTREG
    CURR_TID:  ulong, value = 0x00000000
       TRAPS:  ulong, value = 0x00000000
     TRIGFLT:  ulong, value = 0x00000000
       STCLK:  ulong, value = 0x000F4240
         OSC:  ulong, value = 0x007A1200
      SYSCLK:  ulong, value = 0x007A1200
      HSI_RC:  ulong, value = 0x007A1200
       OSC32:  ulong, value = 0x00008000
      LSI_RC:  ulong, value = 0x00008000
        HCLK:  ulong, value = 0x007A1200
       PCLK1:  ulong, value = 0x007A1200
       PCLK2:  ulong, value = 0x007A1200
      RTCCLK:  ulong, value = 0x00008000
     IWDGCLK:  ulong, value = 0x00008000
      USBCLK:  ulong, value = 0x007A1200
      ADCCLK:  ulong, value = 0x003D0900
     TIMXCLK:  ulong, value = 0x007A1200
     TIM1CLK:  ulong, value = 0x007A1200
        BOOT:  uchar, value = 0x00
       PORTA: ushort, value = 0x0000
       PORTB: ushort, value = 0x0000
       PORTC: ushort, value = 0x0000
       PORTD: ushort, value = 0x0000
        S1IN: ushort, value = 0xFFFF
       S1OUT: ushort, value = 0x0000
      S1TIME:  uchar, value = 0x01
        S2IN: ushort, value = 0xFFFF
       S2OUT: ushort, value = 0x0000
      S2TIME:  uchar, value = 0x01
        S3IN: ushort, value = 0xFFFF
       S3OUT: ushort, value = 0x0000
      S3TIME:  uchar, value = 0x01
     SPI1_IN: ushort, value = 0x0000
    SPI1_OUT: ushort, value = 0x0000
     SPI2_IN: ushort, value = 0x0000
    SPI2_OUT: ushort, value = 0x0000
     I2C1_IN: ushort, value = 0xFFFF
    I2C1_OUT: ushort, value = 0xFFFF
     I2C2_IN: ushort, value = 0xFFFF
    I2C2_OUT: ushort, value = 0xFFFF
      CAN1ID:  ulong, value = 0x00000000
       CAN1L:  uchar, value = 0x00
      CAN1B0:  uchar, value = 0x00
      CAN1B1:  uchar, value = 0x00
      CAN1B2:  uchar, value = 0x00
      CAN1B3:  uchar, value = 0x00
      CAN1B4:  uchar, value = 0x00
      CAN1B5:  uchar, value = 0x00
      CAN1B6:  uchar, value = 0x00
      CAN1B7:  uchar, value = 0x00
      CAN1IN: ushort, value = 0x0000
     CAN1OUT: ushort, value = 0x0000
    ADC1_IN0:  float, value = 0
    ADC1_IN1:  float, value = 0
    ADC1_IN2:  float, value = 0
    ADC1_IN3:  float, value = 0
    ADC1_IN4:  float, value = 0
    ADC1_IN5:  float, value = 0
    ADC1_IN6:  float, value = 0
    ADC1_IN7:  float, value = 0
    ADC1_IN8:  float, value = 0
    ADC1_IN9:  float, value = 0
   ADC1_IN10:  float, value = 0
   ADC1_IN11:  float, value = 0
   ADC1_IN12:  float, value = 0
   ADC1_IN13:  float, value = 0
   ADC1_IN14:  float, value = 0
   ADC1_IN15:  float, value = 0
      VTEMP1:  float, value = 3.29999995
     VREFINT:  float, value = 3.29999995
       VREFP:  float, value = 3.29999995
       VREFN:  float, value = 0
    ADC2_IN0:  float, value = 0
    ADC2_IN1:  float, value = 0
    ADC2_IN2:  float, value = 0
    ADC2_IN3:  float, value = 0
    ADC2_IN4:  float, value = 0
    ADC2_IN5:  float, value = 0
    ADC2_IN6:  float, value = 0
    ADC2_IN7:  float, value = 0
    ADC2_IN8:  float, value = 0
    ADC2_IN9:  float, value = 0
   ADC2_IN10:  float, value = 0
   ADC2_IN11:  float, value = 0
   ADC2_IN12:  float, value = 0
   ADC2_IN13:  float, value = 0
   ADC2_IN14:  float, value = 0
   ADC2_IN15:  float, value = 0
      VTEMP2:  float, value = 3.29999995

同时,也可以向软件逻辑分析仪中添加信号了。

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

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

相关文章

【DevOps实战系列】第九章:详解Sonarqube搭建及集成Jenkins环境

个人亲自录制全套DevOps系列实战教程 :手把手教你玩转DevOps全栈技术 质量安全审计:Sonarqube Sonarqube(声呐)大家应该不陌生,通过扫描代码分析代码质量与代码安全,方便我们快速定位代码缺陷、潜在风险。 个人建议:…

希尔贝壳邀您参加 ISCSLP 2022 Program

第十三届中文口语语言处理国际会议将于2022年12月11-14日(本周日~下周三)正式开启,本次会议中的部分Session将通过语音之家视频号进行线上直播,欢迎大家参加! 官网:www.iscslp2022.org 大会简介 中文口语…

别再秃头背锅了,这个小技巧统计第三方接口耗时很安逸

前言 之前我有写过一篇记录生产环境事故的文章,获得了不少好评。 后续,我们团队有做过一些讨论,为了支撑运营维护,搭建了更好的日志平台 GranfaLoki,也引入了 SkyWalking 做链路追踪。 但过程中也遇到了一些问题&#…

30多个Flatsome主题优秀电商网站案例

想知道您可以使用 WordPress Flatsome WooCommerce主题(最畅销的电子商务主题之一)制作什么样的网站吗? 我们已经浏览了使用这个非常受欢迎的电商主题尽可能多的案例(近1000个),并汇总了30个Flatsome主题优…

windows安装es、kibana教程

目录 前言 第一个部分:安装ES的包 1.安装成功的截图 2.下载es的安装包 3.检查本地的jdk的安装是否存在问题 4.修改config文件夹下面的配置 第二部分:windows 安装Kibana可视化工具 1.下载安装包 2.安装过程中遇到的问题 3.安装6.0.0的版本是可以…

【Android】BlueTooth开发记录

Ble开发中,存在着两个角色:中心设备角色和外围设备角色。 外围设备:一般指非常小或者低功耗设备,更强大的中心设备可以连接外围设备为中心设备提供数据。外设会不停的向外广播,让中心设备知道它的存在。 例如小米手环。中心设备:可…

学习周报-20221216

文章目录一 centos6和centos7系统的服务启动与关闭二 Linux下的/etc/pam.d/system-auth配置文件参数各列参数说明1)第一列2)第二列3)第三列和第四列常用类说明三 Linux用户密码过期策略一 相关文件二 修改密码三 设置密码过期策略四 Linux中使…

将渲染计算搬到云端,开启低成本、强交互、沉浸式体验

云渲染可以解放本地计算需求,这意味着生产力的大幅提升。 云渲染的基本原理是将3D渲染应用部署到云端,接收本地的控制指令发送到云端,云端启动游戏引擎并进行画面渲染,编码成视频流传输到本地。 不难看出,云渲染技术的…

3节点Fate集群实战记录(全网最详细)--横向联邦学习

集群配置 集群的三台服务器分别部署了fate-10000, fate-9999, fate-9998命名空间,集群的具体部署情况请转:link查看。 文章后面以命名空间名来区分操作所在的节点(注意节点的实际名字不等于命名空间名)。集群的配置信息如下&…

【嵌入式开源库:cJSON】 一个轻量级C语言JSON数据解析库用法详解

cJSON简介 cJSON是使用C语言编写,用来创建、解析JSON文件的库。cJSON特点就是工程文件简单,只有一个.c和一个.h,但提供函数接口功能齐全,麻雀虽小五脏俱全,使得在嵌入式工程中使用起来得心应手。 cJSON获取 https:/…

小程序本地 存储/获取值以及删除本地的值

场景:小程序本地存储的方法 wx.setStorageSync:直接给定key和value值 wx.setStorage:需指定key及value,然后再指定相应的值 小程序获取本地值的方法 wx.getStorageSync:直接指定key值获取到对应的数据 wx.getStorage&a…

Node.js模块系统的实现机制简析

目录nodejs模块系统简介C版native模块的定义和加载加载过程JavaScript接口层万能的binding机制JavaScript版native模块的定义和加载js2c技术NativeModule的工作原理Node启动时构造NativeModule对象,完成name到source的映射懒加载机制总结nodejs模块系统简介 Node.j…

[附源码]Nodejs计算机毕业设计基于的校园商城Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分…

Linux系统编程2——进程介绍

文章目录前言一、程序和进程二、并行和并发三、进程控制块PCB进程状态四、创建进程相关函数1、fork函数fork函数总结2、getpid/getppid3、exec函数族3.1、execl函数3.2、execlp函数3.3、exec函数族原理介绍五、进程回收1、为什么要进行进程资源回收2、孤儿进程3、僵尸进程4、进…

传奇GEE引擎版本架设

传奇GEE引擎版本架设 我是艾西今天给大家分享下传奇GEE引擎版本的架设教程 (仅做参考,以下内容为显示素材打码部分请读者理解遵守平台GZ) 传奇GEE引擎版本我们架设游戏需要用到的工具: 版本(游戏类型服务端&#xf…

[附源码]Node.js计算机毕业设计高校学生管理系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

[附源码]Node.js计算机毕业设计公司疫情健康信息管理系统appExpress

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

冰刃(IceSword)的使用方法(基础篇)

冰刃是一款功能强大的杀毒辅助软件,深受很多杀毒高手的青睐,这里我介绍一下冰刃这个软件的简单使用方法,供大家参考。说句实话,我不是高手,不能像高手一样把一些软件运用自如,所以这个方法可能有很多纰漏或…

怎么去视频的水印?两分钟让你学会操作

从事视频剪辑的小伙伴,想必都需要先从网上查找一些视频片段,再将其整合成一个视频,但是保存下来过后,再打开这些视频时,大家应该都会发现这些视频上都带有水印,很影响视频的观感度,从而可能会降…

Redis宝典

文章目录一.概念1.1 什么是redis1.2 redis优点二.redis的存储结构2.1 结构2.2 渐进式rehash三.Redis数据类型及应用场景3.1 字符串(string)3.2 字符串列表(list)3.3 字符串集合(set)3.4 有序字符串集合&…