Я все еще ищу, чтобы найти ответ на этот вопрос:
Почему, хотя микроконтроллеры stm32 имеют идеальный сторожевой таймер (я имею в виду сторожевой таймер Window (WWDG)), существует простой сторожевой таймер (Independent watchdog (IWDG))?
Я нашел эту страницу , которая сказала:
ST Microelectronics имеет линейку устройств Cortex-M3. M3 стал чрезвычайно популярным для встраиваемых устройств более низкого уровня, и STM32F от ST представляет эти части (хотя WDT является надстройкой ST и не обязательно отражает реализации других производителей). STM32F имеет два разных защитных механизма. "Independent Watchdog" - это довольно ванильный дизайн, которому мало что нужно, кроме простоты использования. Но их Window Watchdog предлагает более надежную защиту. Когда таймер обратного отсчета истекает, генерируется сброс, который может быть затруднен путем перезагрузки таймера. Ничего особенного там нет. Но если перезагрузка происходит слишком быстро, система также будет сброшена. В этом случае «слишком быстро» определяется значением одной программы в регистре управления.
Еще одна интересная особенность: он может генерировать прерывание непосредственно перед сбросом. Напишите немного кода, чтобы поймать прерывание, и вы можете предпринять некоторые действия, например, чтобы перевести систему в безопасное состояние или сделать снимок данных для целей отладки. ST предлагает использовать ISR для перезагрузки сторожевого таймера, то есть пнуть собаку, чтобы сброс не происходил. Не прислушивайся к их советам. В случае сбоя программы обработчики прерываний вполне могут продолжать нормально функционировать. И использование ISR для перезагрузки WDT делает недействительной всю причину сторожевого устройства окна.
и это :
Новая серия процессоров STM32F4 Cortex ™ -M4 от STMicroelectronics имеет два независимых сторожевых таймера. Один работает от собственного внутреннего RC генератора. Это означает, что в процессоре может произойти сбой всевозможных вещей, и WDT все равно будет срабатывать. Существует также «оконный сторожевой таймер» (WWDT), который требует, чтобы код вызывал его часто, но не слишком часто. Это очень эффективный способ гарантировать, что сбойный код, который случайным образом записывает в механизм защиты, не вызывает щекотку WDT, и WWDT может генерировать прерывание незадолго до того, как произойдет сброс.
хорошо, давайте посмотрим в справочном руководстве :
STM32F10xxx имеет две встроенные сторожевые периферийные устройства, которые обеспечивают сочетание высокого уровня безопасности, точности синхронизации и гибкости использования. Обе сторожевые периферийные устройства (независимая и оконная) служат для обнаружения и устранения неисправностей из-за сбоя программного обеспечения, а также для запуска сброса системы или прерывания (только сторожевая программа окна), когда счетчик достигает заданного значения времени ожидания. Независимый сторожевой таймер (IWDG) синхронизируется с помощью своих собственных выделенных низкоскоростных тактовых импульсов (LSI) и, таким образом, остается активным даже в случае отказа основных тактовых импульсов. Часы сторожевого устройства окна (WWDG) предварительно масштабируются из часов APB1 и имеют настраиваемое временное окно, которое может быть запрограммировано для обнаружения аномально позднего или раннего поведения приложения. IWDG лучше всего подходит для приложений, которые требуют, чтобы сторожевой таймер работал как полностью независимый процесс вне основного приложения, но имеют более низкие ограничения точности синхронизации. WWDG лучше всего подходит для приложений, требующих, чтобы сторожевой таймер реагировал в пределах точного временного интервала.
Оконный сторожевой таймер используется для обнаружения сбоя программного обеспечения, обычно вызванного внешними помехами или непредвиденными логическими условиями, которые заставляют прикладную программу отказаться от своей нормальной последовательности. Схема сторожевого устройства генерирует сброс MCU по истечении запрограммированного периода времени, если только программа не обновляет содержимое счетчика вниз до того, как бит T6 станет очищенным. Сброс MCU также генерируется, если 7-разрядное значение обратного счетчика (в регистре управления) обновляется до того, как обратный счетчик достигнет значения регистра окна. Это означает, что счетчик должен обновляться в ограниченном окне.
Как вы можете видеть, ни один из них не сказал , что почему есть два сторожевые. если я спрошу, каковы различия между обеими сторожевыми системами, вы подсчитаете все функции, которые вы видите в приведенном выше, и если вы захотите сравнить обе функции, очевидно, сторожевая программа Window (WWDG) станет победителем! тогда зачем два сторожа?
Я хочу знать, когда я должен использовать IWDG, а когда WWDG?
и есть ли причина, которая говорит нам Почему они называют вторые часы этим именем -> «Сторожевой таймер»?