当前位置:首页 > 生活百科

keil5仿真调试教程(详解proteus仿真步骤)

栏目:生活百科日期:2024-12-26浏览:0

在做开发的前几年,基本上都没用仿真,有bug就尝试改程序,一边改一边调试。

甚至都还不知道硬件仿真存在的价值,因为一直都没用过,而且很多芯片也不支持。

直到有一次在做行车记录仪项目的时候,接触到了GRAIN公司的一款单片机。

本来我打算是直接开干的,但是老大非要我把这个芯片的仿真环境搭好。

于是我就开始网上搜集资料,不得不说这块的资料真少,那时又刚接触仿真这块的。

搞了将近半个月都搞不定,然后我鼓起勇气跟老大说,仿真搞不出来,要不我就直接开始写程序烧录进去调试算了。

但是老大的意思还是希望我把仿真的环境搭建出来,我又试了2个星期,还是不行,于是就不理他了,直接开始写程序调试。

如果没浪费时间研究怎么搭建调试环境,估计我程序都完成40%-50%了。

过了一个星期,确实我也把程序跑起来了,在屏上显示了一些UI,老大问我仿真搞定了?

我说没有,跟他说没仿真也能调啊,为什么一定要用仿真?

老大只是笑了笑没说话,我也不解他具体是几个意思,不过后面这个项目没完全做完就跳槽了(不是因为仿真的事情)。

直到后面,我在做一些比较复杂的主机程序的时候,我才理解老大当初为什么叫我一定让我把仿真环境搭建出来。

因为通过硬件仿真开发效率至少比没有仿真高很多!

我来举个简单的例子,比如说我要看一个指针指向的地址。

如果我要看指针指向的地址到底是多少,如果有屏和串口还好,可以通过屏或者串口打印出来。

不过这个过程也需要改程序,调试完以后再把程序注释,还是比较麻烦。

而用仿真的话,直接在keil上面把鼠标移动到指针的位置就能直接看到地址。

这就是效率的差别。

所以,仿真的功能在写一些复杂的产品程序的时候太重要了!

下面,我给大家分享下,stm32怎么用keil进行仿真。

keil调试工具设置

先点击那个锤子图标进入keil的设置。

选择Debug,然后在USE那里点下拉按键,选择St-Link Debugger。

这一步是选择我们使用的仿真器,一般有jtag和st-link,其中st-link实际产品用的最多,所以以这个为主。

设置好仿真器以后,我们需要把仿真器连接到板子(我板子是直接用st-link的vdd供电,如果你没用则板子单独供电)

板子上电,并且st-link连接到板子。

我们下一步点击Settings,会弹出上图这个界面,如果Device name显示ARM core….就代表板子和st-link连接成功,可以正常进行仿真和烧录程序了。

我们点击确定返回到工程界面后,点击红色那个小放大镜进入仿真模式(注意板子和st-link保持连接和供电)。

进入仿真模式好,我们看右上角我标注的那几个箭头图标,我红色箭头标注的中间那个就是用的最多的单步执行,也就是说点击一下,就会执行一条语句,这个大家下去可以试下。

如果你嫌弃单步执行太慢,也可以设置断点,然后点全速运行,让程序自动跑到断点位置,然后停止等待你下一步的操作。

一般来说,我们调试程序的时候就是通过这种方式。

比如说,我现在要看变量a的值在不同程序位置的变化,我可以根据上图来设置断点1,2,然后点全速执行。

如果要看程序里变量的值,大家还需要把watch窗口调出来,按照上面的步骤。

然后我们把变量名输入到watch窗口方便查看。

我们点全速运行,我们可以看到在”2”标识的位置前面有个黄色和蓝色的箭头,代表程序已经执行到这里并且停止。

这个时候,我们看watch窗口a的值,也就是”3”标识的那里,卧槽,怎么没值出来?a这个时候不是应该等于0xAA吗?

别着急,这个是编译器的问题,a定义的是局部变量,编译器把局部变量优化了,并没有在内存中生成导致。

解决办法有两种:

1.调节keil的优化等级

这个大家可以自行度娘,一般我不去改,以免产生别的惊喜。

2.把a改成全局变量

改完以后记得重新编译哦,这样就可以看到a的值变为0xFF啦。

上面是仿真看变量,下面仿真看看硬件。

这个时候我板子上的LED是熄灭的。

上图这个函数就是用来控制LED点亮的,我们继续点全速运行,让程序跑到第24行断点处。

这个时候奇迹发生了,LED亮啦!!!是不是很神奇???

学完这两种基本的仿真调试方法,其他的骚操作就靠大家自行发挥啦。

如果大家有什么更好的调试方法也欢迎来告诉我们无际单片机编程团队。

实际的产品调试比这个还要复杂一些,调试过程中也会碰到一些问题。

比如一点单步执行,程序就一直执行,问题千奇百怪,这里说不完。

其实这种问题也很好解决,直接把问题现象在度娘搜一下就可以了,肯定会有人碰到并提供解决的办法。

我一直以来都是这样去解决问题的。

“keil5仿真调试教程(详解proteus仿真步骤)” 的相关文章

京东直播申请需要注意什么(京东直播内容规范及禁忌)

京东直播是一种把内容+电商高效结合的全新营销模式,通过主播的专业、趣味讲解,给用户带来所见即所得的全新购物体验。热点直播、明星直播、KOL直播、商家优质直播等,...

mysql免密码登录下无法创建用户(分析mysql创建用户的方

一、用户与权限管理(一)grant1、helpgrant和权限相关的命令关键字grant可通过help查看其用法:mysql>helpgrant;Name:'G...

万隆再当选双汇发展董事长(双汇宫斗新进展)

8月31日晚间,双汇发展披露董事会决议,会议以8票同意、0票反对、0票弃权审议通过《关于选举公司董事长、副董事长的议案》,选举万隆为公司第八届董事会董事长,万宏...

如何安装wifi路由器设置(手把手教你安装wifi路由器)

日常生活中想要上网通常都离不开路由器,一些用户可能还不太清楚怎样安装路由器,即怎样进行路由器的初始设置,为此小编就来和大家分享一下路由器的安装方法,想了解路由器...

公众号广告主和流量主区别(两者区别介绍及开通方式)

经常有小伙伴问我,公众号文章中的广告是怎么开通的,怎么才能利用公众号赚取收益等,这就涉及到了公众号的广告主和流量主问题,那么它们有什么区别,又该如何开通呢?下面...

mindjet mindmanager怎么用(mindjet思维导图教程)

思维导图,英文是TheMindMap,又叫心智导图,是表达发散性思维的有效图形思维工具,它简单却又很有效同时又很高效,是一种实用性的思维工具。相关的软件还不少,...

什么3d网络游戏好玩不花钱(分享免费3D格斗网游)

《格斗猎人2》是一款横版3D格斗手游,日系动画风格搭配畅快的打击感,横版格斗爱好者一定会喜欢。在游戏中,玩家将选择一个自己喜欢的职业,在亚瑟王国经历各种各样的冒...

体脂秤什么牌子精准高2020年(零误差多功能体脂秤品牌)

生活水平提高了,人们对于健康的要求是日益提升,原先要求称体重,现在要求看体脂,这也是最近这几年体脂秤火爆的时代背景。在2020年你随便搜索体脂秤,从十几块钱到大...

一个企业可以申请几个服务号(服务号注册步骤)

相信经常使用微信的小伙伴都知道小程序和公众号是主要的获客工具之一,不仅能帮助自身吸引线上流量、还能扩大互联网市场,很多商家都会将公众号和小程序关联起来,以此获取...

学生开网店卖什么好赚钱,最盈利的五个行业你知道吗-

在校大学生创业的人不在少数,利用闲暇的课余时间来做兼职。现在互联网很盛行,不少人通过开网店来实现创业。但是很多大学生住宿舍根本没有存货的地方。那么大学生想要通过...