TI 专家早上好!
今天我来到这里是因为在调试模式下测试我编写的代码时遇到了一些问题(我认为是不可预测的)。
让我更好地解释一下情况:我正在编写一个键盘和记事本应用程序、并将 FT812控制器用于我的显示屏。
在 Keyboard()例程的某个时候,我注意到处理器停止正常工作。
因此、我尝试在函数中添加一些断点、以了解崩溃的位置、我可以注意到3种不同的行为:
- 该程序将跳转到 _mpyi_f5hw
- 该程序会跳转到 _TI_ISR_TRAP
- 程序跳转至0x0004 (在反汇编窗口中、我看到3FFF JMP (0x0004)
- 程序将触发看门狗并重新启动
我确定问题在该例程中、但哪种方法是找出其根源的最佳方法?
下面是我的假设。
- 该例程会调用 memset 函数、以在启动操作之前清除缓冲区
/*清除行*/
for (tval=0;<MAX_lines; tval++) {
安全装置();
memset (&buffer.notepad[tval]、'\0'、sizeof (buffer.notepad[tval]));
}
- 我有一个用于编写文本的函数:
void cmd_text (unsigned int x、unsigned int y、unsigned int 字体、unsigned int 选项、const char * t){ unsigned int lung=0; 肺= strlen (t); WRITE_COMMAND32 (CMD_TEXT); WRITE_COMMAND16 (x); WRITE_COMMAND16 (y); WRITE_COMMAND16 (字体); WRITE_COMMAND16 (opts); write_text (t、lung); } void write_text (const char *字符串、unsigned int longn){ const char dummy_byte=0x00; 执行{ write_COMMAND8 (* stringa); *STRING++; } while (*字符串!=0); if (longn>0){ 执行{ WRITE_COMMAND8 (虚拟字节); longn++; } while ((longn%4)!=0); //-->要在 RAM_CMD 上加载正确的字符值,偏移量必须是4 的倍数} if (longn=0){ WRITE_COMMAND8 (虚拟字节); WRITE_COMMAND8 (虚拟字节); WRITE_COMMAND8 (虚拟字节); } }
如果有任何建议和帮助、我们将不胜感激。
感谢您的关注、
此致、
Maria Angela