调试流程:
先调试电源 然后调试驱动输出,LED等,便于查看 然后调试按键输入等 然后调试通讯等 编程过程一定要拿一个东西调试起来 先调通,然后一点点优化 将程序代码调到较佳状态,做成样例程序 关于修改 如果不太肯定,一点点修改,一边修改一边测试 底层调通 系统组织好
没有硬件时
学会没有硬件的时候调试,而且确实可以调试很多东西 如果没有硬件,可以用仿真,ARM有simulator,PIC32也有MPLAB SIM,选择animate可慢速运行,直接查看watch中所选对象的变化 找其他类似的硬件板子辅助调试
断点
空白的行添加不了断点,出现one or more break points could not be resolved 的原因就是它 条件编译不到的地方添加断点也是空圆圈
辅助调试输出
MPLAB IDE可以中使用DBPRINTF()函数打印debug信息
release and debug
不同烧录模式要对应相应的编译模式,比如program下载了debug模式编译的代码,则程序运行不起来 切换不同模式要重新编译,debug模式下切换不同debugger也要重新编译 网上有见到说debug模式可以而release模式程序不正常的情况,比如 {OK in debug mode, Fault in release mode} {各位大佬,不知有没有碰到这种情况,debug完成后再release模式编译,然后烧写到目标板。然后上电动作,发现和意象的不一样,再次debug还是动作正确,re release模式编译,然后烧写到目标板,还是不行。} 有人说是配置位导致的
debug 在线调试
通过调试查看变量是会提供很多根据的,比简单看表面现象要好得多 debug非常有用,查看变量 检查出逻辑错误,凭空检查很难检查的 一些函数内的局部变量也可以查看的,只不过不像全局变量一直显示一样,只有进入该函数的时候才显示 还可以直接修改变量影响到系统 还可以进行运算,比如直接输入变量加减乘除等运算式,可以直接显示出结果;有一次显示出的变量不对,属性里面修改size为32位一致了
小经验
PIC单片机,引脚作为输入的时候,要使用PORT,作为输出的时候,可使用PORT或者LAT,但最好使用LAT,有时候用PORT不行而LAT行不知道为什么 端口功能不出来时候,查看复用功能是否禁用,AD JTAG等 多个中断,中断优先级也有影响,曾经遇到一个UART只能接收一个字节,后来将中断优先级改成和另外一个不同就好了 watch 函数内的也可以直接输入函数名查看的