历史上的今天
返回首页

历史上的今天

今天是:2026年01月04日(星期日)

正在发生

2023年01月04日 | stm32怎么用keil软件进行调试

2023-01-04 来源:zhihu

在做开发的前几年,基本上都没用仿真,有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亮啦!!!是不是很神奇???

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

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

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

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

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

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


推荐阅读

史海拾趣

Fischer Connectors公司的发展小趣事

Fischer Connectors公司在电子行业中的五个发展故事

故事一:创立与初期发展

Fischer Connectors的故事始于1954年,由真空技术专家Walter Werner Fischer在瑞士沃州的莫尔日创立。他凭借对技术的热爱和执着,开发出了世界上第一个高品质密封连接器,专为工业应用而设计。这一创新产品迅速赢得了市场的认可,为公司的发展奠定了坚实的基础。在随后的几年里,Fischer Connectors不断优化产品,并于1962年注册了推拉锁定系统的国际专利,进一步巩固了其在连接器行业的领先地位。

故事二:全球扩张与国际合作

随着业务的不断增长,Fischer Connectors开始积极寻求全球扩张的机会。1988年,公司在英国成立了第一家子公司,标志着其国际商业活动的正式开始。此后,Fischer Connectors相继在欧洲的德国、意大利、法国以及美国等地开设了子公司,形成了全球性的生产和服务网络。这些子公司不仅为当地市场提供了高质量的连接器产品,还促进了Fischer Connectors在全球范围内的技术创新和市场拓展。

故事三:技术创新与产品线扩展

Fischer Connectors始终将技术创新作为企业发展的核心驱动力。进入21世纪后,公司推出了一系列具有创新性的连接器产品,如Fischer Core系列塑料连接器、AluLite™超轻铝连接器以及Fischer UltiMate™系列超坚固连接器等。这些产品不仅满足了不同行业对连接器性能的多样化需求,还推动了整个电子行业的技术进步。同时,Fischer Connectors还不断扩展其产品线,涵盖了多极低电压连接器、同轴高电压连接器等多个领域,进一步巩固了其在连接器市场的领先地位。

故事四:应对行业挑战与定制化解决方案

随着电子行业的快速发展,连接器和线缆系统的应用环境越来越复杂多样。Fischer Connectors凭借其在技术、质量和服务方面的优势,积极应对行业挑战,为客户提供定制化的解决方案。公司拥有一支专业的研发团队和客户服务团队,能够深入了解客户的实际需求,量身定制出最适合客户应用方案的连接器与线缆系统。这种以客户为中心的服务理念赢得了广大客户的信赖和支持。

故事五:数字化转型与可持续发展

近年来,Fischer Connectors积极响应数字化转型的浪潮,利用先进的技术手段提升生产效率和产品质量。公司投入大量资源建设智能化生产线和数字化管理系统,实现了从原材料采购、生产加工到成品出库的全流程信息化管理。同时,Fischer Connectors还注重可持续发展,致力于开发环保型连接器和线缆系统,减少对环境的影响。这些努力不仅提升了公司的竞争力,还为公司赢得了更多的社会认可和赞誉。

Chino-Excel公司的发展小趣事

Chino-Excel公司深知人才是企业发展的核心竞争力。因此,公司注重人才培养和团队建设,为员工提供广阔的成长空间和良好的职业发展平台。公司建立了完善的人才培养和激励机制,吸引和留住了一批批优秀的技术人才和管理人才。这些人才为公司的发展注入了源源不断的动力,推动了公司的持续创新和进步。

这些故事虽然是虚构的,但它们反映了电子行业中许多公司可能经历的一些共同挑战和机遇。这些故事强调了技术创新、全球化战略、品牌建设、环保理念以及人才培养在电子行业公司发展中的重要性。请注意,这些故事仅为示例,并不代表任何实际公司的具体情况。

C-MAX Time Solutions公司的发展小趣事

随着国内市场的饱和,C-MAX Time Solutions公司开始将目光投向国际市场。公司通过设立海外分支机构、参加国际展会等方式,积极推广自己的产品和服务。同时,公司还加大了对国际标准的研究和遵循力度,以确保其产品在全球范围内都能得到广泛认可和应用。这一国际化布局不仅提升了C-MAX的竞争力,也为其未来的发展奠定了坚实基础。

DURACELL公司的发展小趣事

在开拓重庆市场时,DURACELL公司面临了巨大的挑战。当地电池市场竞争激烈,价格参差不齐。然而,DURACELL公司凭借其独特的营销策略和高质量的产品,迅速打开了市场。他们选择了与当地贸易代理商合作的方式进入市场,并通过“三步走式”的营销策略迅速占领了市场份额。这一成功案例展示了DURACELL公司灵活的市场策略和对品质的坚持。

Eurotech公司的发展小趣事

随着全球对环保问题的日益关注,Eurofarad公司也积极响应这一趋势。公司注重环保理念在产品设计和生产过程中的应用,努力减少对环境的影响。同时,公司还积极推动可持续发展战略,通过优化生产流程和采用环保材料等方式,降低能源消耗和废弃物排放。这些努力不仅符合了社会的期望,也为公司的长期发展提供了有力保障。

Etco Inc公司的发展小趣事

面对数字化转型的浪潮,Etco Inc公司主动拥抱变革,积极推进数字化转型。公司利用大数据、云计算等先进技术优化生产流程和管理模式,提高了生产效率和管理水平。同时,Etco还加强了与客户的数字化连接和交流,提供了更加便捷和高效的服务体验。这些举措使Etco在数字化时代中保持了领先地位并实现了持续增长。

问答坊 | AI 解惑

NPT and PT comparation

100330comparison of PT and NPT cell concept for 600V IGBTs…

查看全部问答>

安装驱动的问题

每次安装驱动的时候都会出现 “硬件安装”提示对话框,提示是否“仍然继续”,如何才能不让这个提示框出现?…

查看全部问答>

如何成功更换CE6R3的CALIBRUI?

如何成功更换CE6R3的CALIBRUI? 目标:更换 CALIBRUI里面触摸屏的文字 步骤1 按照 文档 How to Replace the Calibrui Module http://msdn.microsoft.com/en-us/library/aa452834.aspx   建立clone 步骤2 编译,出错信息如下 未处理 ...…

查看全部问答>

找寻比QQ和新浪UC更先进的视频聊天软件,有意请发邮件详谈rzdon@163.com

找寻比QQ和新浪UC更先进的视频聊天软件,有意请发邮件详谈rzdon@163.com,我到过很多聊天室,累了,想开一个大型的娱乐平台供大家娱乐,开发要求:有综合QQ和新浪UC及由你酷聊天娱乐的功能加上别的先进功能,``````````…

查看全部问答>

激光测径仪里用的什么传感器?代理商联系我

激光测径仪里用的什么传感器,那位大侠接触过?都是那家的传感器?原理大体上我知道,但是找不到厂家或者代理商?代理商可以联系我。有量的哦!…

查看全部问答>

请教LaunchPad学习中的出现问题

最近学习LaunchPad时发现,官方所给的几款芯片好像都不支持UART,只支持SPI和I2C,请问大侠们是这样的吗?还有,这几款芯片中的datasheet中都没有关于其USI模块功能的详细说明,小弟在图书馆查阅各种资料也没找到类似说明,请问各位大侠指点…

查看全部问答>

FPGA配置时没有3端口RAM是怎么回事

FPGA配置时没有3端口RAM是怎么回事…

查看全部问答>

新手求助:官方Lauchpad示例中的中断按按键不起作用

下载了官方的示例:http://processors.wiki.ti.com/index.php/MSP430_LaunchPad_Drive_LED//*************************************************************************************** // MSP430 Blink LED / Start Stop Blinking with Button De ...…

查看全部问答>