В этом разделе мы рассмотрим вторую часть Системы Сброса и Тактирования RCC - Система Сброса.
Как всегда создадим директорию для проектов:
nis@jane ~/stm32/f4examples $ mkdir 08-reset
nis@jane ~/stm32/f4examples $ cd 08-reset/
Также создадим базовый проект для дальнейших действий:
nis@jane ~/stm32/f4examples/08-reset $ cp -a ../07-clocks/00-base/ .
Сброс
Существует 3 типа сброса - системный сброс, сброс по питанию и сброс системы резервирования.
Системный сброс
Системный сброс устанавливает значение всех регистров до значение после сброса, также устанавливает флаги сброса в регистре управления тактирование CSR а также регистры в резервном домене.
Системный сброс генерируется когда происходит одно из следующих событий:
Программный сброс
Сброс можно идентифицировать проверяя флаги сброса в RCC регистре управления и статуса (RCC_CSR).
Устанавливая SYSRESETREQ бит в регистре управления прерываниями и сбросом процессорного ядра мы вызываем программный сброс. Для более подробной информации читайте Cortex-M4F техническое руководство.
Сброс системы управления низким потреблением
Существует 2 пути генерации сброса системы управления низким энергопотреблением:
Для более подробной информации, вы можете почитать руководство по программированию флеш-памяти для STM32F40x и STM32F41x мк.
Сброс по питанию
Сброс по питанию генерируется когда одно из событий происходит:
Сброс по питанию устанавливает до значения по умолчанию значения всех регистров за исключением регистров резервного домена.
После события сброса при низком уровне на NRST линии, этот уровень остается некоторое время благодаря системе задержки. Также сервис RESET переправляет исполнение на вектор сброса находящийся по адресу 0x0000 0004 в карте памяти (первый вектор после указателя на начало стека в таблице векторов).
Схема генерации сброса
Как видно из схемы после пришествия низкого уровня на линии сброса генератор импульса гарантирует задержку в течении как минимум 20 мкс для любого типа сброса. В случае внешнего сброса импульс генерируется при низком уровне на линии внешнего сброса.
Резервный домен имеет два специфичных сброса которые воздействуют только на него.
Сброс резервного домена
Сброс резервного домена устанавливает все регистры часов реального времени в значение по умолчанию. Для резервной памяти BKPSRAM этот сброс не оказывает влияния. Для сброса этой памяти необходимо изменить уровень защиты от записи с 1 в 0.
Этот сброс генерируется при следующих событиях:
В качестве примера для начала рассмотрим аппаратный сброс.
Для продолжение добавим обнаружение и обработку программного сброса.