我正在使用TI C2000接管一个旧项目。编译了所有好的设置断点,没有问题。
直到今天我发现一个奇怪的问题:我定义了一个unsigned char
变量,但是可以正确地进行简单计算。我设置了一个断点,发现编译器将其设置为16位变量。
但是8位数组被编译为8位没问题。
如果我在软件中将其视为16位,则一切正常。 但是我以前从未遇到过此类问题。
源代码在这里:
//check CRC
unsigned char buf[4];
unsigned char crc;
buf[0] = commandWord >> 8;
buf[1] = commandWord & 0xff;
buf[2] = data[0] >> 8;
buf[3] = data[0] & 0xff;
crc = crc8(buf, 4);
if (0xf000U == (safetyWord & 0xf000U)) {
if ((crc & 0x00ff) == (safetyWord & 0x00ff)) {
ret = TLE_SUCCESS;
} else {
ret = -1;
}
} else {
ret = -1;
}
我必须使用crc & 0x00ff
才能使软件正常工作。