Hi,
I use SES import my keil project, and my keel project work well. With SES, i meed a problem, that is , i have a global variable like this:
uint32_t g_ulMainLoopCounter = 0;
and i decrease it in timmer isr:
if (g_ulMainLoopCounter > 0)
{
g_ulMainLoopCounter--;
}
in my main function, i wait until 'g_ulMainLoopCounter' decrease to 0:
int main(void)
{
system_init(); //init timer etc...
g_ulMainLoopCounter = 500;
while (g_ulMainLoopCounter)
{
}
....
}
now the problem is , my code after 'while' will never be executioned, even 'g_ulMainLoopCounter' decrease to 0. This work well in keil.
Then, if i use 'volatile' qualifier for 'g_ulMainLoopCounter', it works, the code then like this:
volatile uint32_t g_ulMainLoopCounter = 0;
My optimization level set to none, means do not optimize my code.
I know use 'volatile' qualifier is a better way, but 'g_ulMainLoopCounter' is just only a example, there are lots of variables which used like "g_ulMainLoopCounter" (means multi-access variable, change the value in a function or isr and comparison in other function)in my program, must i check every variable in my program and determine if the variable is needed use 'volatile' qualifier? If so, i think that's too difficult.Is there any easy solutions?