程序开启tmos,启动一个任务控制按键和屏幕显示。
按键是中断输入的,当案件按下时 显示任务工作。
开始工作正常,但工作几次后,主函数就进不去了,只有中断可以工作,怀疑是某个中断死循环了,但是目前只开启了gpio输入中断和定时器中断,并且都及时清除了中断。
如果没有jtag的情况下,如何排查死循环的位置呢?
热门产品 :
CH634: 4端口USB3.0 HUB控制器芯片
程序开启tmos,启动一个任务控制按键和屏幕显示。
按键是中断输入的,当案件按下时 显示任务工作。
开始工作正常,但工作几次后,主函数就进不去了,只有中断可以工作,怀疑是某个中断死循环了,但是目前只开启了gpio输入中断和定时器中断,并且都及时清除了中断。
如果没有jtag的情况下,如何排查死循环的位置呢?
我又测试了一下,是串口0 UART0_SendString(Rx0Buff, 8);发送一组数据后,就进入某个中断死循环了。
您好,可以打印PC指针来定位程序跑飞前的运行位置。
死循环可能是进了hardfault硬件错误中断:CH57x/CH58x/CH32V wch risc-v 芯片hardfault问题追踪&程序卡死追踪 - iot-fan - 博客园 (cnblogs.com)
如果是其他问题,可以利用看门狗中断和定时器中断输出类似的打印日志:CH582 CH592 CH573 PC指针打印(排查程序运行+死循环指示) - debugdabiaoge - 博客园 (cnblogs.com)