Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кармин Новиелло - Освоение STM32.pdf
Скачиваний:
2740
Добавлен:
23.09.2021
Размер:
47.68 Mб
Скачать

Часы реального времени

477

обнаружения немного больше, чем период опорного тактового сигнала, эта система обнаружения приносит неточность в 1 период ck_ref (20 мс для опорного тактового сигнала 50Гц), потому что мы можем иметь 2 фронта ck_ref в окне обнаружения. Затем используется окно обновления, которое не вызывает ошибок, так как оно меньше периода опорного тактового сигнала. Предположим, что ck_ref не теряется более одного раза в день. Таким образом, общая неточность в месяц будет 20 мс * 1 * 30 = 0,6 с, что намного меньше, чем неточность типового кварца (1,53 минуты в месяц для 35·10−6 Гц кварца).

18.3. Использование резервной SRAM

Большинство микроконтроллеров STM32 предоставляют дополнительную область па-

мяти, называемую резервной памятью – backup memory (или резервной памятью данных

RTC – RTC backup data memory). Эта память питается от VBAT, когда VDD выключен, если вывод VBAT подключен к резервному источнику питания, чтобы ее содержимое не терялось при перезагрузке системы. Содержимое резервной памяти остается действительным, даже когда устройство работает в режиме пониженного энергопотребления. При этом при возникновении события обнаружения несанкционированного доступа резервные регистры сбрасываются.

По умолчанию после системного сброса доступ в режиме записи к так называемому резервному домену питания – backup domain (который включает в себя резервную память и регистры RTC) отключен, чтобы защитить его от возможных и нежелательных обращений к записи из-за нестабильного источника питания. Чтобы изменить весь домен и, следовательно, резервную память, нам нужно явно выполнить следующую процедуру:

разрешить тактирование интерфейса питания с помощью макроса

__HAL_RCC_PWR_CLK_ENABLE();

вызвать функцию HAL_PWR_EnableBkUpAccess(), чтобы разрешить доступ к резервному домену питания (регистры RTC, резервная память данных RTC).

использовать функции HAL_RTCEx_BKUPWrite() и HAL_RTCEx_BKUPRead() для за-

писи/чтения в доступные резервные регистры (количество регистров отличается среди микроконтроллеров STM32).