我现在在dsPIC 30F4013中看到过两种情况,由于未定义陷阱,控制器正在复位。为什么首先要提出这些陷阱仍然是一个谜,但这不是我的直接问题。我开始认为始终定义所有陷阱是一个好的编程习惯,即使永远不要出现陷阱,因此我至少会得到一条清晰的错误消息,而不是随机重置。这是我不知道的标准做法吗?我应该考虑这种做法是否有弊端?
4
不能回答您的问题,但是前一阵子,我在dsPIC和PIC24系统上遭受了此类症状。在我的情况下,陷阱是由代码位引起的,在这些代码中,我将指针解引用为16位值,并且这些指针本身具有奇数(不偶数)值,因为它们指向的是循环通讯缓冲区-而且我以前没有知道16位值是从奇数还是偶数边界开始的一种方式。XC16编译器无法保护您免受此处硬件的困扰。我最终为这些函数编写了一个包装宏,该宏强制2个8位指针取消引用。
—
brhans 2016年