问题的提出

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


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

dir vtregCURR_TID:  ulong, value = 0x00000000TRAPS:  ulong, value = 0x00000000TRIGFLT:  ulong, value = 0x00000000STCLK:  ulong, value = 0x00000000XTAL:  ulong, value = 0x007A1200CLOCK:  ulong, value = 0x007A1200

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

问题的答案

KEIL5仅对某些器件的外设支持仿真,KEIL官方给出了网站:https://developer.arm.com/documentation/ka002225/latest
,在该网页中,列出了支持软件仿真的器件,如:

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


这也难怪,网上给出的KEIL的软件逻辑分析仪的仿真示例都是用STM32F103这个器件。

问题的解决

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

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

DIR VTREGCURR_TID:  ulong, value = 0x00000000TRAPS:  ulong, value = 0x00000000TRIGFLT:  ulong, value = 0x00000000STCLK:  ulong, value = 0x000F4240OSC:  ulong, value = 0x007A1200SYSCLK:  ulong, value = 0x007A1200HSI_RC:  ulong, value = 0x007A1200OSC32:  ulong, value = 0x00008000LSI_RC:  ulong, value = 0x00008000HCLK:  ulong, value = 0x007A1200PCLK1:  ulong, value = 0x007A1200PCLK2:  ulong, value = 0x007A1200RTCCLK:  ulong, value = 0x00008000IWDGCLK:  ulong, value = 0x00008000USBCLK:  ulong, value = 0x007A1200ADCCLK:  ulong, value = 0x003D0900TIMXCLK:  ulong, value = 0x007A1200TIM1CLK:  ulong, value = 0x007A1200BOOT:  uchar, value = 0x00PORTA: ushort, value = 0x0000PORTB: ushort, value = 0x0000PORTC: ushort, value = 0x0000PORTD: ushort, value = 0x0000S1IN: ushort, value = 0xFFFFS1OUT: ushort, value = 0x0000S1TIME:  uchar, value = 0x01S2IN: ushort, value = 0xFFFFS2OUT: ushort, value = 0x0000S2TIME:  uchar, value = 0x01S3IN: ushort, value = 0xFFFFS3OUT: ushort, value = 0x0000S3TIME:  uchar, value = 0x01SPI1_IN: ushort, value = 0x0000SPI1_OUT: ushort, value = 0x0000SPI2_IN: ushort, value = 0x0000SPI2_OUT: ushort, value = 0x0000I2C1_IN: ushort, value = 0xFFFFI2C1_OUT: ushort, value = 0xFFFFI2C2_IN: ushort, value = 0xFFFFI2C2_OUT: ushort, value = 0xFFFFCAN1ID:  ulong, value = 0x00000000CAN1L:  uchar, value = 0x00CAN1B0:  uchar, value = 0x00CAN1B1:  uchar, value = 0x00CAN1B2:  uchar, value = 0x00CAN1B3:  uchar, value = 0x00CAN1B4:  uchar, value = 0x00CAN1B5:  uchar, value = 0x00CAN1B6:  uchar, value = 0x00CAN1B7:  uchar, value = 0x00CAN1IN: ushort, value = 0x0000CAN1OUT: ushort, value = 0x0000ADC1_IN0:  float, value = 0ADC1_IN1:  float, value = 0ADC1_IN2:  float, value = 0ADC1_IN3:  float, value = 0ADC1_IN4:  float, value = 0ADC1_IN5:  float, value = 0ADC1_IN6:  float, value = 0ADC1_IN7:  float, value = 0ADC1_IN8:  float, value = 0ADC1_IN9:  float, value = 0ADC1_IN10:  float, value = 0ADC1_IN11:  float, value = 0ADC1_IN12:  float, value = 0ADC1_IN13:  float, value = 0ADC1_IN14:  float, value = 0ADC1_IN15:  float, value = 0VTEMP1:  float, value = 3.29999995VREFINT:  float, value = 3.29999995VREFP:  float, value = 3.29999995VREFN:  float, value = 0ADC2_IN0:  float, value = 0ADC2_IN1:  float, value = 0ADC2_IN2:  float, value = 0ADC2_IN3:  float, value = 0ADC2_IN4:  float, value = 0ADC2_IN5:  float, value = 0ADC2_IN6:  float, value = 0ADC2_IN7:  float, value = 0ADC2_IN8:  float, value = 0ADC2_IN9:  float, value = 0ADC2_IN10:  float, value = 0ADC2_IN11:  float, value = 0ADC2_IN12:  float, value = 0ADC2_IN13:  float, value = 0ADC2_IN14:  float, value = 0ADC2_IN15:  float, value = 0VTEMP2:  float, value = 3.29999995

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

KEIL5软件仿真支持的器件相关推荐

  1. 汇编语言笔记-keil5软件仿真及调试

    目录 keil5调试功能 软件仿真设置 硬件调试设置 调试方法 调试选项及介绍 调试窗口 Command Disassembly Symbols Registers Call Stack(+Local ...

  2. KEIL5软件仿真出现*** error 65: access violation at 0xE0001004 : no ‘read‘ permission的解决方法

    故障图: 解决方法: 第一步: 设置下面的"Dialog DLL"项为"DARMSTM.DLL"和"TARMSTM.DLL":paramet ...

  3. keil5软件仿真出现unknown signal解决方法。

    用keil uvision5软件仿真时,MDK Logic Analyzer添加current logic analyzer signals时总是显示Unknown Signal? 解决方法如下: D ...

  4. 【51】keil5软件仿真基本操作

    选择软件仿真 开始仿真 点击设置断点 运行到断点 查看变量的值 选中要查看的变量 右键添加 i的值为0 更改断点并运行 i的值为1 查看内存 找到memory窗口 没有就重新打开 输入x的地址:D:0 ...

  5. 从0使用keil5软件仿真调试GD32F305

    搜集到的一些资料: RTT提供的F303的库 GD32 BSP制作1 RTT制作GD32系列BSP 移植RTT到GD32 兆易创新资料下载 GD32标准库移植 (兆易创新官网只提供了标准库) 标准库点 ...

  6. 高性能全数字嵌入式仿真测试软件SkyEye支持多达70余种核心

    全数字仿真平台作为工业领域不可缺少的重要软件之一,除了可以与MATLAB或者Simulink集成外,还支持哪些优秀的功能?在了解新一代全数字仿真平台SkyEye之前,先来学习一下什么是全数字仿真平台. ...

  7. 如何使用Keil5中的虚拟示波器进行软件仿真

    首先先打开一个工程,编译,无错误,我用的是高级定时器TIM1互补输出的程序,输出信号的引脚分别为 PA8 和 PB13 . 在使用之前先更改一些配置: 点击keil5里的魔术棒选项:选择debug,把 ...

  8. Keil5进行STM32F103C8T6的软件仿真

    一.软件仿真 Keil有很强大的软件仿真功能,通过软件仿真可以发现很多将要出现的问题,Keil的仿真可以查看很多硬件相关的寄存器,通过观察这些寄存器值的变化可以知道代码有没有正常运行.这样可以避免频繁 ...

  9. STM32-Keil软件仿真和硬件仿真/在线仿真

    软件仿真和硬件仿真什么区别?软件仿真就是没有硬件参与的仿真,完全是模拟实现的.硬件仿真是将程序下载到控制芯片的FLASH或RAM中,直接在硬件上实现仿真.[有什么问题欢迎联系讨论,一起解决问题] 仿真 ...

最新文章

  1. JXLS 2.4.0系列教程(四)——拾遗 如何做页面小计
  2. Uiautomator--Uiselector元素定位
  3. Android Donut SDK 1.6r1 今日发布
  4. 简明Python教程学习笔记_4_数据结构
  5. LeetCode —— 145. 二叉树的后序遍历【递归与迭代】(Python)
  6. 指向函数的指针数组(C++)
  7. python装饰器两层和三层_我终于弄懂了Python的装饰器(三)
  8. mysql从大到小排序_sql语句时间排序 sql语句按照时间排序
  9. 用自己数据集训练Mask_RCNN代码
  10. 详解Spring中的CharacterEncodingFilter--forceEncoding为true在java代码中设置失效--html设置编码无效...
  11. __new__()方法的使用和实例化
  12. python报表自动化系列 - 获取指定目录所有文件绝对路径
  13. HNOI2017 滚粗记
  14. helix server配置教程
  15. 八进制和十六进制转二进制
  16. 12月运营/营销/市场/广告人热点营销指南!
  17. mac可用的vpb_有什么让你相见恨晚的 MacBook 神器?
  18. 【组合数学】递推方程 ( 特解形式 | 特解求法 | 特解示例 )
  19. 修改Switch开关按钮的颜色
  20. OpenJudge-2152:Pots

热门文章

  1. 河北职称计算机 英语考试报名,河北省职称计算机考试
  2. 合作升级!阿里宣布入股哔哩哔哩2400万股,占比8%...
  3. DNS自动优选工具,可测试延迟,挑选最合适的DNS服务器,拒绝DNS劫持,解决能上qq不能打开网页问题...
  4. 元宇宙--基础知识(二)
  5. PV操作之独木桥问题
  6. 小学三年级计算机上册课后反思,小学三年级上册教学反思三篇
  7. 矩阵光学 matlab,矩阵光学.doc
  8. Android学习 - 百度地图开发基础
  9. css的div,span,img,a,map等一些常见标签使用 回顶设置
  10. python只保留数据的某几列_python怎么选取csv某几列