Практически все, кто работает на IAR пользуются этой встроенной функцией для создания задержки:
__delay_cycles __delay_cycles(unsigned long int);
Делаете такие определения: //********************************************** #define ClkFreq 16000000 // частота кварцевого резонатора или частота на которой работает контроллер. #define _1us (unsigned long int)((ClkFreq / 1000000) / 1.25) // 1.25 погрешность на вызов функции для 1us. #define _1ms (unsigned long int)(ClkFreq / 1000) //**********************************************
Сами функции задержки соответственно могут выглядеть так: void DelayMs(unsigned int d) { while(--d)__delay_cycles(_1ms); }
void DelayUs(unsigned int d) { while(--d)__delay_cycles(_1us); }
Делаете вызов той или другой функции в зависимости на сколько милисекунд или микросекунд делаете задержку.
--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
|