Después de habilitar un reloj para un puerto determinado, debe esperar 4 ciclos para que el reloj termine de inicializarse. ¿Cómo se pueden esperar N ciclos de la manera adecuada?
En mi código usé esto:
__asm("nop");
__asm("nop");
__asm("nop");
__asm("nop");
Después de lo cual, uKeil IDE parece dejar de quejarse.
Este es un método de aquí :
volatile unsigned long delay;
SYSCTL_RCGC2_R |= 0x00000010; // 1) activate clock for Port E
delay = SYSCTL_RCGC2_R; // allow time for clock to stabilize
También puede configurarnos los relojes e ir a hacer otra cosa durante algunos ciclos (inicializar algunas cosas), pero eso es un error potencial en el futuro.
Editar: la línea ficticia se compila en:
400286: 681b ldr r3, [r3, #0]
400288: 9301 str r3, [sp, #4]
En la corteza M4
ldr es 2 ciclos
str es de 2 ciclos
Consulte aquí los recuentos de ciclos de M4.
La palabra clave volatile evita que las instrucciones ldr y str se combinen, según tengo entendido.
crasico
ayhan
viejo contador de tiempo
viejo contador de tiempo