Keil软件仿真的使用

一、软件的初始化设置

        初始设置可以按照下图,这里我使用的是STM32F103C8T6,所以单片机型号为STM32F103C8,这个设置在Debug目录下。然后进行时钟的设置,我们板上晶振为8M,这里将时钟改为8.

或许有人想问如果是别的型号单片机如何找这些参数呢?如下图,点击文件,选Device Database.....

 

我这里可以选两种,一种为51系列的,我们直接选第一个,确定。 

进来后可以发现这里面还是可以选很多型号的,找到我们的STM32F103C8,将下面的框拉到底,如下:

  二、调试界面的介绍

1.菜单栏和工具栏

复位按钮点击这个按钮会使目标硬件复位,功能等同于硬件上的复位按钮。

全速运行/继续执行:开始或继续执行程序,用来快速执行到断点处。如果程序已经停在一个断点上,点击这个按钮将继续执行程序直到遇到下一个断点或程序结束。也就是说如果没有断点,程序会一直运行。

停止执行:停止程序执行。这个按钮将中止当前正在运行的程序。

单步执行:执行程序中的下一行代码。如果当前行调用了函数,将进入该函数内部。

单行运行:执行下一行代码,但是不进入函数内部。如果当前行调用了函数,将执行整个函数,然后停在下一行。

单步退出:当运行在函数内部时,这个按钮将执行完当前函数的剩余代码,并停在返回点之后的下一行。

运行到光标位置 :程序执行将继续进行,直到到达当前代码编辑器中光标所在的行。

跳转PC指针:这个按钮允许你在调用栈中上移一级,这对于检查函数调用的历史和来龙去脉很有用

2.主界面窗口设置

Command窗口:它显示与调试会话相关的信息,包括用户输入的调试命令和由调试器返回的消息。它允许用户直接输入命令,例如管理断点、控制程序执行等。

汇编窗口:显示当前执行的汇编代码,与源代码视图同步,有助于理解C/C++代码是如何转换为处理器指令的,以及在调试时实际执行的指令。

符号窗口:列出了所有编译后的符号,包括函数、变量和类型定义。这个窗口让你可以确认是否有符号未定义或检查变量的地址和值。

寄存器窗口:显示处理器内核的寄存器值。有助于理解程序的当前状态和执行流程,尤其是在硬件层面的调试中。

回调局部变量:当调试时停留在断点时,这里会显示函数的调用关系,以及压进的变量值,可以在这里看到函数的调用关系和传递给函数的参数值。这个一般和断点配合,反推异常调用以及查看局部变量,无需使用变量查看串口。

变量显示:用于查看单片机中某个变量的值,一般多用于查看全局变量以及外设寄存器数值、表达式显示变量,也可直接操作变量值。

内存查看窗口:显示内存地址以及地址处内存的数据,一般可查看变量以及寄存器数据、函数地址等。可以在里面输入你要查看的内存地址,然后观察这一片内存的变化情况。

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

虚拟串口窗口:该按钮按下,会弹出一个类似串口调试助手界面的窗口,用来显示从串口打印出来的内容。  需要注意的是在硬件调试时无法使用,只能从硬件上获取串口信息。

三、进入调试

四、keil仿真常用的操作

1.  查看某变量的值:

或者点击Watch窗口调出显示栏,如下,在Watch中: 

这两种都可以查看,进去后如下:

运行一轮后,我们发现a的值加1了,如下图:

当然,这还可以查看数组等内容都可以,如下:

2.查看IO状态或控制IO输出

当然,如果你设置的为输入模式,还可以通过在相应IOI口框打勾来控制输入电平进行调试。

3.波形输出

假如要查看PC13,可以输入PORTC.13回车。

                  

关闭后,点击运行就可以看见波形输出了。

 注:如果运行后没波形而停止后才显示波形,解决方法:

还有一些其他功能这里不再一一叙述了,如下:

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

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

相关文章

Effective Java 1 用静态工厂方法代替构造器

知识点上本书需要会Java语法和lang、util、io库,涉及concurrent和function包。 内容上主要和设计模式相关,代码风格力求清晰简洁,代码尽量复用,组件尽量少依赖,错误尽早发现。 第1个经验法则:用静态工厂方…

Chroium 源码目录结构分析(1):源码目录体积一栏

获取源码 首先,我们拉一份最新的源代码(笔者是2024.6.6日拉取的): fetch --nohistory chromium 源码预处理 如果运行build,会生成许多生成的代码,因此我们不运行build。 然后,把干扰后续分析…

sqlilabs靶场安装

05-sqllabs靶场安装 1 安装 1 把靶场sqli-labs-master.zip上传到 /opt/lampp/htdocs 目录下 2 解压缩 unzip sqli-labs-master.zip3 数据库配置 找到配置文件,修改数据库配置信息 用户名密码,修改为你lampp下mysql的用户名密码,root/123456host:la…

贪吃蛇双人模式设计(2)

敲上瘾-CSDN博客控制台程序设置_c语言控制程序窗口大小-CSDN博客贪吃蛇小游戏_贪吃蛇小游戏csdn-CSDN博客​​​​​​​ 一、功能实现: 玩家1使用↓ → ← ↑按键来操作蛇的方向,使用右Shift键加速,右Ctrl键减速玩家2使用W A S D按键来操…

matlab演示地月碰撞

代码 function EarthMoonCollisionSimulation()% 初始化参数earth_radius 6371; % 地球半径,单位:公里moon_radius 1737; % 月球半径,单位:公里distance 384400; % 地月距离,单位:公里collision_tim…

Astar路径规划算法复现-python实现

# -*- coding: utf-8 -*- """ Created on Fri May 24 09:04:23 2024"""import os import sys import math import heapq import matplotlib.pyplot as plt import time 传统A*算法 class Astar:AStar set the cost heuristics as the priorityA…

Kafka集成flume

1.flume作为生产者集成Kafka kafka作为flume的sink,扮演消费者角色 1.1 flume配置文件 vim $kafka/jobs/flume-kafka.conf # agent a1.sources r1 a1.sinks k1 a1.channels c1 c2# Describe/configure the source a1.sources.r1.type TAILDIR #记录最后监控文件…

基于python-CNN深度学习的水瓶是否装满水识别-含数据集+pyqt界面

代码下载地址: https://download.csdn.net/download/qq_34904125/89374853 本代码是基于python pytorch环境安装的。 下载本代码后,有个requirement.txt文本,里面介绍了如何安装环境,环境需要自行配置。 或可直接参考下面博文…

绘唐2.5一键追爆款2.5免费版

免费分享给您 小说推文工具是一种用于在社交媒体上宣传和推广小说的工具。它可以帮助作者将小说的内容和相关信息以推文的形式快速发布在各种社交媒体平台上,吸引读者的注意力并增加小说的曝光度。 以下是一些小说推文工具可能具备的功能: 1. 编辑和排…

【linux】进程控制——进程创建,进程退出,进程等待

个人主页:东洛的克莱斯韦克-CSDN博客 祝福语:愿你拥抱自由的风 相关文章 【Linux】进程地址空间-CSDN博客 【linux】详解linux基本指令-CSDN博客 目录 进程控制概述 创建子进程 fork函数 父子进程执行流 原理刨析 常见用法 出错原因 进程退出 概…

MyBatis-Plus学习总结

一.快速入门 (一)简介 MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window) 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 (二)快速入门 1.准备数据库脚本 2.准备bo…

六、Docker Swarm、Docker Stack和Portainer的使用

六、Docker swarm和Docker stack的使用 系列文章目录1.Docker swarm1.简介2.docker swarm常用命令3.docker node常用命令4.docker service常用命令5.实战案例6.参考文章 2.Docker stack1.简介3.Docker stack常用命令4.实战案例5.常见问题及调错方式1.查看报错信息并尝试解决&am…

SpringBootWeb 篇-深入了解 Redis 五种类型命令与如何在 Java 中操作 Redis

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 Redis 概述 1.1 Redis 下载与安装 2.0 Redis 数据类型 3.0 Redis 常见五种类型的命令 3.1 字符串操作命令 3.2 哈希操作命令 3.3 列表操作命令 3.4 集合操作命令 …

7-43 排列问题

排列问题 分数 10 全屏浏览 切换布局 作者 雷丽兰 单位 宜春学院 全排列问题 输出自然数1至n中n个数字的全排列(1≤n≤9),要求所产生的任一数字序列中不允许出现重复的数字。 输入格式: 一个自然数 输出格式: 由1到n中n个数字组成的…

Tessy学习系列(三):单元测试——官方例程isValueInRange

一、工程创建 (1)新建工程 注意:工程名称以及路劲不能包含空格和中文 (2)新建测试集与单元测试模块 新建测试集 新建单元测试模块 设置测试模块为单元测试模块并选择GNU GCC编译器如果需要其他的编译器,…

关于选择,关于处事

一个人选择应该选择的是勇敢,选择不应该选择的是无奈。放弃,不该放弃的是懦夫,不放弃应该放弃的是睿智。所以,碰到事的时候要先静,先不管什么事,先静下来,先淡定,先从容。在生活里要…

【线性代数】向量空间,子空间,向量空间的基和维数

向量空间 设V为n维向量的集合,如果V非空,且集合V对于向量的加法以及数乘两种运算封闭,那么就称集合V为向量空间 x,y是n维列向量。 x 向量组等价说明可以互相线性表示 向量组等价则生成的向量空间是一样的 子空间 例题18是三位向…

Docker Swarm持久化

Docker Swarm持久化 1 简介 Docker Swarm持久化有bind、volume和NFS三种方式,bind和volume两种方式适合挂载单个宿主机,不适合集群;NFS适合集群服务,但需要安装NFS系统。 注意:Docker Swarm需要先安装集群。 由Doc…

python-数字黑洞

[题目描述] 给定一个三位数,要求各位不能相同。例如,352是符合要求的,112是不符合要求的。将这个三位数的三个数字重新排列,得到的最大的数,减去得到的最小的数,形成一个新的三位数。对这个新的三位数可以重…

【数据结构】【版本1.0】【线性时代】——顺序表

快乐的流畅:个人主页 个人专栏:《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火,在为久候之人燃烧! 文章目录 引言一、顺序表的概念1.1 最基础的数据结构:数组1.2 数组与顺序表的区别 二、静态顺序表三、动态…