当我从某个功能返回时,我陷入了ISR的故障。 xPSR异常寄存器读数为3,寄存器0xE000ED28读数为0x0100,在手册中翻译后,将出现UNDEFINSTR错误。
我在两个不同的处理器上尝试了相同的代码,结果相同。 导致问题的功能如下所示:
char ack[10];
gps_ga (ack);
if (ack[0]!='\0'){}
/**
*打开GPS透明模式
*获取GP精度标记,并显示精度
*关闭GPS透明模式
*
**将结果置于数据
中*
**@param data 10 character char array
*/
void gps_ga(Char* data){
char gpsResp[256];
CHAR* ACC = NULL;
字符精度[10];
IF (GPS_passthrough (true)){
执行{
getResponse_Timeout (GPS_UART_MODULE,1000,gpsResp);
acc = strstr (gpsResp,"$GPACCURACY");
} While (ACC ==空);
int i;
对于(i = 0;i < 10 && ACC[I+12]!='.' && ACC[I+12]!='*';i++){
准确度[I]= ACC[I+12];
}
精度[I]='\0';
while (!gps_passthrough (false));
strcpy (数据,准确性);
其他{
Data[0]='\0';
}
INT I = 0;
I++;
}
函数的最后2行仅用于健全性检查。 我可以在I++上设置一个断点,我可以确认数据包含它应该包含的内容,并且准确性也是如此。 我在GPS_GA的I++和IF语句之间的某个位置得到故障ISR。 从不触发IF语句上的断点。
我正在使用编译器TI v 16.9 .1.LTS。 它是基于RGC封装的定制主板。
我也尝试过用另一种方式对函数进行编码,返回int,并出现相同的错误。 我尝试更改函数名称,但它只起过作用...