用了6年的单片机,一直不会仿真调试,属于什么情节?

[复制链接]
1164|34
用了6年的单片机,一直不会仿真调试,属于什么情节?

大家好!
我一直都是下载到单片机,直接观察现象,通过现象来判断程序情况。
特别是定时器,PWM 这些,也只是通过示波器来观察频率,周期,定时时间这些来估计哪里有没有弄错。

有的时候要知道变量的话,就是开启串口,用串口把某个寄存器数值,或者变量,通过串口发送出来观察。
或者在某个比较关键的地位,设置一个串口输出,通过串口输个特地的字符来判断。
逻辑比较复杂的时候,需要用到大量的串口输出语句,等调试完,后,再把串口输出语句删除掉。
没有串口的,就用ID翻转的办法。

特别是有没有进入到中断,这个情况,非常难搞。

特别想学会如何使用单片机仿真,能快速的知道程序的故障。
| 2019-1-10 15:37 | 显示全部楼层
难道是你的单片机不支持在线仿真吗
| 2019-1-10 16:10 | 显示全部楼层
串口调试也没毛病啊
公共头文件里:
#define _DEBUG_TO_Uart 1 //调试完把这个宏屏蔽就可以了,没必要到处删串口打印代码
#ifdef _DEBUG_TO_Uart
    #define DBG_Print(x) printf(x)
#else
    #define DBG_Print(x)
#endif

C文件里,所有需要用到printf的地方都用DBG_Print代替
| 2019-1-10 16:21 | 显示全部楼层
用的哪种MCU?
| 2019-1-10 16:53 | 显示全部楼层
起码不是初级工程师的水平了
| 2019-1-11 00:22 | 显示全部楼层
特殊场合就得用串口打印,因为有些时候仿真和直接运行的现象不一样。但是,大部分仿真和直接运行是一样的,仿真调试,看内存值、flash值、寄存器值,就可以解决大部分问题。另外,打印结果还可以直接用仿真器(jlink)打印,无需再外接串口。
| 2019-1-11 08:57 | 显示全部楼层
可以在中断里面翻转电平;我想,楼主还没有玩过OTP单片机吧
| 2019-1-11 09:23 | 显示全部楼层
Linux 驱动开发也是有这种调试手段的~没毛病
| 2019-1-11 12:30 | 显示全部楼层
零几年买过周立功的仿真器,买了也没用过。后来都是1个指示灯或串口调试
 楼主 | 2019-1-12 15:04 | 显示全部楼层
都带仿真功能,问题是不会用是真的。
| 2019-1-12 17:05 | 显示全部楼层
hzocce 发表于 2019-1-12 15:04
都带仿真功能,问题是不会用是真的。

所谓 仿真  ,就是 搞一些 断点,去查看 某些关键 变量。

效率 比 你 用串口 输出 特定变量 稍微要 高一些 。。
| 2019-1-12 20:14 | 显示全部楼层
连示波器都用的少了 :)
| 2019-1-12 22:59 | 显示全部楼层
只是仿真调试比较方便而已,最终还是以实际运行时的状况为准
| 2019-1-13 09:20 | 显示全部楼层
仿真调试,最大的用处是对于那些关键数据处理节点,包括硬件初始化后,配置寄存器内容检查什么的,包括条件处理过程的转向等容易出BUG的地方。
真到了全速运行时候,尤其是那些实时性非常强的系统,单步是没用的,还真的需要用类似串口发送关心的数据来进行检查排错了。
| 2019-1-13 10:26 | 显示全部楼层
我用了18年了,也不会,也不想会,因为我根本不相信仿真,反而会把事情复杂化。
| 2019-1-13 11:20 | 显示全部楼层
我也很少用仿真,经常用jlink下载程序,就是不习惯用仿真,和楼主情况类似
| 2019-1-13 13:14 | 显示全部楼层
不好意思,我也是不太用仿真,也是习惯串口输出
| 2019-1-13 17:40 | 显示全部楼层
以前用的不支持调试的SOC,都做个调试器。
即使GPRS的项目,如果不做个仿真器,不能在keil里面远程通过GPRS单步走,就感觉不踏实。我是不是做仿真器做疯了?
| 2019-1-14 22:59 | 显示全部楼层
我觉得只要可以按时交结果,其余都不重要。
 楼主 | 2019-1-16 09:25 | 显示全部楼层
一直想学会,就是不会用,不知道如何去学会?
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册
本版积分规则
我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /3 下一条

快速回复 返回顶部 返回列表