We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Could someone please help me in clarifying that weird execution sequence of the following function:
int S2Pressed (void) { static int S2KeyCount = 0, S2KeyPressed = 0; 01 if (S2KeyPressed) { 02 if (((GPIOA->IDR & S2) == 0 )) { // Check if S2 is pressed 03 if (S2KeyCount < UNBOUNCE_CNT) S2KeyCount++; 04 else { 05 S2KeyPressed = 1; 06 S2KeyCount = 0; 07 return (1); 08 } 09 } 10 } 11 else { 12 if (!((GPIOA->IDR & S2) == 0 )) { // Check if S2 is not pressed 13 if (S2KeyCount < UNBOUNCE_CNT) S2KeyCount++; 14 else { 15 S2KeyPressed = 0; 16 S2KeyCount = 0; 17 } 18 } 19 } 20 return (0); } <pre/> When I simulate the code, it enters the function on line 01 then jump to line 03, then jump back to line 02, then again to line 03, then back to line 02, and then directly jumps to line 12 then 20 and exit that function. It looks like it doesn't matter what is inside the if/else statement because it always does the same with the exact sequence (01, 03, 02, 03, 02, 12), No matter whether I replace the code of the outer if<i/> from line 02 to 09 with the one of the else<i/> part (from line 12 to 18). Now the weird thing is that I have copied that function from the ~Keil\Boards\MCBSTM32\GPIO\GPIO.uvprog When I simulate the latter program it runs just fine without any problems! Can anyone give me any hint one how to move to solve this issue! Any help would be appreciated
I guess it was an accident: note that (s)he tried to close the code section with <pre/> - but the slash should have been before the "pre"
So, at least some marks for trying!
"Didn't preview indicate..."
Yes, it should have been noticeable in the preview