stm32怎么用keil软件进行调试

发布时间:2023-01-04  

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

这就是效率的差别。

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

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

1. 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亮啦!!!是不是很神奇???

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

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

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

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

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

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


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    一台DP-51PROC 单片机综合仿真实验仪 一台 三. 实验内容按照本书的第2 章的2.5 节内容进行Keil C51 集成开发环境的仿真调试练习。然后按照以下内容建立文件并编译仿真调试。ORG......
    器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。 一、keil_c51安装+注册+汉化 1、提前下载好资源,所需......
    单片机调试还可以这样玩?Keil与Proteus实现51单片机完美联调;之前我们介绍过Proteus单片机的程序仿真调试,但是对于绝大部分单片机爱好者来说,最熟悉的开发软件还是Keil,我们......
    在知乎点触发知乎安全设置。 二、keil单片机编程与自带仿真调试 仿真设置 重编译 进入调试模式 将变量添加到视窗 设置断点 运行程序 三、proteus单片机编程与自带仿真调试 搭建仿真......
    单片机常用的开发软件有哪些?;开发工具有很多,踩坑无数总结:用得顺手、带仿真调试功能的最重要。 特别是带仿真调试功能,用熟了,能让你找Bug效率直接起飞。 下面......
    是否有错误,如果有错误,请对应提示信息修改。编译没有错误之后,我们就可以进行下一步了。 第四步:配置仿真调试参数。打开SWV的调试功能。此处注意:Core Clock必须与你配置的时钟是一致的。此处......
    泰芯TXLink仿真器MCU单片机开发调试工具;泰芯TXLink调试器MCU单片机开发工具仿真器 TXLink是珠海泰芯半导体有限公司基于Keil在8051开发平台的调试器,目前支持泰芯TX8全系......
    51单片机仿真芯片调试;实验环境:Keil软件,版本:C51 V9.54 STC-ISP综合下载软件,版本:V6.88 仿真芯片:IAP15W4K58S4 51单片机在线仿真环境搭建 第一步:将......
    芯片” 在Keil软件端仿真,我们先在while循环中下个断点,由于串口的通讯速度不高,延时时间太长仿真很容易崩溃,我这里将延时改成1ms,大家可以尝试将串口通信速度提高试下 在线仿真调试......
    的51系列兼容单片机C语言软件开发系统,提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等,目前最新版本已经到了uVision5。这里需要说明的是,Keil C51并不......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>