刚开始工作的时候,我用的是stc 51单片机。 与stm32不同的是,51单片机可以通过st-link在keil上在线仿真。
有时候,当出现bug时,很难发现问题所在。 你必须一段一段地阻止它,然后测试它。
刚接触开发的时候,我很不习惯使用在线模拟,可能是因为以前没有用过。
我记得曾经在一家公司做行车记录仪单片机仿真软件教程,用的是台湾GRAIN的单片机。
当时基本没有资料,只有达达表和演示程序。
开发之前,老板给我安排了一个任务,就是先搭建这个模拟环境。
相当于他们原厂没有的东西。 让我来拿一下。 该芯片是一款基于Fa626TE内核的32位控制器。
网上的信息太少了。 这个环境测试搭建花了半个多月,还没搭建起来。
那时我完全糊涂了。 我摸着石头过河。 我不知道模拟是如何运作的。 不管怎样,我在网上找到了一个并尝试了一下。
在做这件事之前,我基本上都是在做51的东西,所以这对我来说太难了,而且资料也很少,所以我必须跨关打boss。
后来我有点不耐烦了,就跟老板说:这个不需要模拟。 以前不用模拟我也能做出产品。
后来老板想了想,还是希望打造一个模拟。 我有点崩溃,实在不明白他为什么这么固执。
后来,当我逐渐接触更多的32位单片机,开发出更多的产品时单片机仿真软件教程,我才真正体会到仿真的好处。
可以毫不夸张地说,用好仿真,你的开发效率至少会提高三倍。 我这里不是在谈论模拟软件。
以stm32单片机为例,使用st-link+keil在线硬件仿真不仅可以监控程序如何运行,还可以监控运行过程中变量值和指针地址的变化。
熟悉了之后你就会知道,尤其是指针的应用,真的很好玩。 有时候指针指着这里指着那里,你的理解可能只停留在你自己的理论层面。 但通过模拟,您可以监视指针指向的变化。 。
51之类的不能使用stm32之类的st-link在线仿真怎么办? (51好像现在可以了,不过我还没用过)
不要低估 51 微控制器。 有的51核ROM有几十KB,最终产品程序的大小不会比stm32小。
如果没有这样的模拟,就会出现BUG,需要你半天时间来调整。
在过去的开发中,我也总结了一些经验,供大家借鉴。
我通常会在产品硬件上使用任何可以起到提醒作用的东西,例如:
1.数码管
2.液晶显示屏
3.LED灯
4.串口
当我开发一个程序时,我做的第一件事肯定是点亮 LED 灯。
点亮LED可以快速让你验证硬件的核心部分(最小的微控制器系统)是否有问题。
它亮起后,我启动一个计时器,它每秒闪烁一次,直到完成产品的大部分功能。
这样做的好处是可以验证你的程序在运行时是否存在崩溃等问题。 如果有,要及时解决,否则以后程序变大了就更难找到了。
如果有数码管和液晶显示器,调试会更容易。 只需将要调试的数据直接显示在数码管和液晶屏上即可。 虽然不如模拟那么方便,但总比没有好。
还有串行端口。 一般在第一次登上硬件的时候,我都会预留串口,方便调试。 尤其是在制作物联网产品时,串口调试可以说是必须的。
主要功能是监控MCU与WiFi模块之间的通信数据。
最后还有一种情况,就是产品什么都没有,连LED都没有。 在这种情况下我们该怎么办?
这种情况下就只能听天由命了,完全靠自己的开发经验。
一般第一块板硬件都是这样设计的,而且都是经验很少的初级工程师。
即使你的产品不使用这些资源,为什么不保留串口或LED,然后在调试完整体功能后将其从最终的板上删除呢?