Используя набор инструментов IAR, API-интерфейс времени суток C (time()
) можно переопределить, используя пример из ARM\src\lib\time.c
. Процедура по умолчанию всегда возвращает -1, что указывает на то, что CRT не знает, который час. Как только вы предоставите свою собственную реализацию time()
, которая будет получать время суток из источника, который зависит от вашей платформы tartget и / или RTOS, вы можете установить время суток, обновляя любой из этих источников времени. IAR, возможно, уже сделал это для своей ОСРВ - я не использовал ОСРВ PowerPac IAR.
Подробные сведения о том, как это работает для другой ОСРВ или системы без ОСРВ, изложены в Руководстве по разработке IAR C / C ++.
Например, в системе, в которой я работал, в которой используется микроконтроллер ST Micro STM32, часы реального времени (RTC) устанавливаются на тик раз в секунду, а библиотечная функция time()
просто возвращает значение в RTC. Установка новой даты / времени является вопросом установки RTC с новым значением. Счетчик времени RTC установлен со значением эпохи Unix (секунды с 1 января 1970 года), что позволяет остальным функциям библиотеки, начиная с time.h
, работать нормально (вплоть до 2035 года, когда начинают возникать 32-битные переполнения). опустошение).
Подпрограммы календаря в библиотеке поддержки времени выполнения IAR DLIB C датируются 2035-12-31 (я подозреваю, что они переполнены до 2038 года, потому что внутренние вычисления используют эпоху 1 января 1900 года). Если вы используете эпоху Unic, другие подпрограммы DLIB более или менее просто работают - я не уверен, какой уровень усилий потребуется для использования другой эпохи.