Я пишу код для встроенного устройства (без ОС, никаких системных вызовов или чего-то еще), и мне нужно иметь задержку, но компилятор не дает time.h
. Какие у меня есть другие варианты?Внедрение задержки() без времени()
0
A
ответ
0
В зависимости от устройства. Можете ли вы включить стабильное прерывание таймера? Возможно, вы сможете только заняться - ждать и ждать прерывания таймера. Насколько точным это может быть (и насколько точным оно должно быть) неясно.
1
В зависимости от часов вашей системы вы можете реализовать задержки с помощью инструкции ассемблера NOP (без операции). Вы можете вычислить время одного NOP в зависимости от MIPS вашей системы, например, если 1 NOP
является 1[us]
, то вы могли бы реализовать что-то вроде:
void delay(int ms)
{
int i;
for (i = 0; i < ms*1000; i++)
{
asm(NOP);
}
}
0
Для коротких фиксированных временных задержек, в ничегонеделания петли будет соответствовать потребностям, но, разумеется, потребуется калибровка.
void Delay_ms(unsigned d /* ms */) {
while (d-- > 0) {
unsigned i;
i = 2800; // Calibrate this value
// Recommend that the flowing while loop's asm code is check for tightness.
while (--i);
/* add multiple _nop_() here should you want precise calibration */
}
}
Смежные вопросы
- 1. Внедрение задержки без использования потока
- 2. Задержки времени без использования Thread.sleep()
- 3. Внедрение времени форматирования времени локали
- 4. (MS-DOS) Задержки времени
- 5. Переменная задержки времени Python
- 6. Бенчмаркинг времени/задержки файлов
- 7. Переадресация времени задержки HTML
- 8. События Firebase без задержки
- 9. Захват времени выполнения сервера ASP.Net без сетевой задержки
- 10. setTimeOut без задержки
- 11. Пауза без задержки() arduino
- 12. Execute метода без задержки
- 13. таймер записи без задержки()
- 14. Отправить автоматически без задержки?
- 15. SetTimeout() срабатывание без задержки
- 16. updateTabsetPanel сейчас, без задержки
- 17. Вызов SetTimeout без задержки
- 18. Arduino - Тон без задержки
- 19. Счетчик задержки времени в 8086
- 20. как остановить функцию задержки времени
- 21. SDL2 не отображает без задержки
- 22. Excel VBA Sendkeys без задержки
- 23. Внедрение замещения времени выполнения Ruby
- 24. Внедрение пароля с потерей времени
- 25. Внедрение искусственного времени в clojure
- 26. Внедрение замков без семафоров
- 27. Реализация функции задержки времени в C
- 28. Изменение задержки AngularJS $ в зависимости от времени
- 29. Как использовать таймер без задержки?
- 30. Email Queuing & отправка без задержки
Многие встроенные устройства включают аппаратное устройство таймера или часов, которое может быть запрограммировано на отправку прерывания по истечении периода времени. – caf
Какой компилятор вы используете? – chux
Можете ли вы использовать 'select'? Он имеет параметр таймаута. – ugoren