__NOP (); función de retraso

Función de retraso sin reloj del sistema y reloj periférico general

Introduzca la función __NOP ();
es similar a la pseudoinstrucción en el ensamblado, también conocida como "instrucción nula";
no realiza operaciones, pero ocupa un paso del programa.

Cuando se utilizan instrucciones vacías, se requieren segmentos de tiempo de CPU para ejecutar una instrucción. Comúnmente utilizado para el retraso del programa o el tiempo preciso, pero no es obvio en CPU más rápidas.
El procedimiento es el siguiente:
void delay_us ()
{
__NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP () ); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP () ); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP () ); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); __ NOP (); // 72 __NOP (); Retardo 1us
}

void delay_nms (u8 n) // 1000 ciclos es 1ms
{
while (n–)
{
delay_us (); // 1us delay antes de llamar
}
}

void delay_ns (u8 i) // 1000 ciclos es 1s
{
while (i–)
{
delay_nms (1000); // 1ms delay
{
}

En general, es usar __NOP (); encapsular el retraso de nivel us, luego hacer un ciclo de 1000 para alcanzar el retraso de ms y finalmente reciclar 1000 veces para formar el retraso de nivel s;

Publicado 4 artículos originales · elogiado 3 · visitas 49

Supongo que te gusta

Origin blog.csdn.net/include1_/article/details/105466049
Recomendado
Clasificación