C 函数返回 0,即使调试器显示它返回 1
C function is returning 0 even though debugger shows it returning 1
我正在为 MSP430 微控制器编写嵌入式 C 代码,但我在函数 return 上遇到了错误的值。当我使用调试器单步执行代码时,它显示函数应该 return 1,但在设置的 int 上它是 returning 0。
代码:
void sendUart(unsigned char string[], int length){
if(string != 0){
while(~responseAOK()){
int BLEstatus = BLEReadyForData(); **//Function called here**
if(BLEstatus){ **//At this point, BLEstatus is 0 (incorrect)
unsigned int i;
for(i=0;i<length-1;i++){
while(!(IFG2 & UCA0TXIFG));
UCA0TXBUF = string[i];
send[sendIndex] = string[i];
sendIndex++;
}
sendIndex = 0;
}
}
}
}
int BLEReadyForData(){
if(P2DIR & BIT3){
P2DIR &= ~BIT3;
}
if(P2IN & BIT3){
return 1; //debugger step-through reaches this line of code
}
else return 0;
}
您应该先关闭优化。它使逐步调试变得混乱。
例如,在 IAR 中它是
Project -> Options -> C/C++ Compiler -> Optimizations tab -> Level -> None
我正在为 MSP430 微控制器编写嵌入式 C 代码,但我在函数 return 上遇到了错误的值。当我使用调试器单步执行代码时,它显示函数应该 return 1,但在设置的 int 上它是 returning 0。
代码:
void sendUart(unsigned char string[], int length){
if(string != 0){
while(~responseAOK()){
int BLEstatus = BLEReadyForData(); **//Function called here**
if(BLEstatus){ **//At this point, BLEstatus is 0 (incorrect)
unsigned int i;
for(i=0;i<length-1;i++){
while(!(IFG2 & UCA0TXIFG));
UCA0TXBUF = string[i];
send[sendIndex] = string[i];
sendIndex++;
}
sendIndex = 0;
}
}
}
}
int BLEReadyForData(){
if(P2DIR & BIT3){
P2DIR &= ~BIT3;
}
if(P2IN & BIT3){
return 1; //debugger step-through reaches this line of code
}
else return 0;
}
您应该先关闭优化。它使逐步调试变得混乱。 例如,在 IAR 中它是
Project -> Options -> C/C++ Compiler -> Optimizations tab -> Level -> None