Estoy trabajando en el aprendizaje de TDD embebido en C creando un controlador LED para un AVR. En el libro de James Grenning , recomienda inyectar el PUERTO pasando un puntero al registrarse en la función.
Encontré el siguiente código en la documentación de AvrLibc, ¿Cómo puedo pasar un puerto IO como parámetro a un function? , y estoy confundido en cuanto a por qué el parámetro *port
se declara como volátil.
void set_bits_func_correct (volatile uint8_t *port, uint8_t mask) { *port |= mask; }
¿Alguien puede explicar por qué lo pasan como volátil? Como alguien que es un principiante con C, estoy confundido y agradecería una explicación (si la hay).