Volatile Variable

 

// volatile 
int flag; // global memory is part of "BSS" section, guaranteed to be zero (unless a bug in startup code)

void flag_setter_task(void *p) {
  while (1) {
    ++flag;
    vTaskDelay(1000);
  }
}

void flag_checker_task(void *p) {
  puts("Task entry");

  while (1) {
    flag = 0;
    while (0 == flag) {
      ;
    }

    puts("flag has incremented away from value of 0");
    vTaskDelay(1000);
  }
}

Interview Questions

  • What is a volatile keyword?
  • Given a code snippet, why you cannot set a breakpoint?
  • Is const opposite of volatile?
  • What is the point of "const volatile *variable" ?
    • You as a programmer, cannot write a line of code to modify, but maybe DMA or a peripheral behind you can modify it
Back to top