Nano Hash - криптовалюты, майнинг, программирование

Процедура обслуживания прерывания для сторожевого таймера на STM32 Discovery

Недавно я купил комплект обнаружения линий STM32 Value для работы с устройствами STM32. Сейчас я работаю над проектом, для которого требуется сторожевой таймер. В STM32 он называется IWDG. Но моя проблема в том, что мне нужен ISR при срабатывании сторожевого таймера.

Кто-нибудь знает, как это реализовать (или даже есть пример)?


  • На самом деле я сделал это уже около недели, но я не могу его найти, поэтому мне было интересно, возможно ли это вообще. 09.10.2014
  • Я просто ищу что-то, что не сразу сбрасывает микроконтроллер. Ему просто нужно выполнить некоторую операцию выключения, прежде чем он будет сброшен. 09.10.2014
  • Зачем нужен ИСР? Сторожевой таймер предназначен для выполнения аппаратного сброса по истечении определенного времени. Вам просто нужно активировать его один раз и сбрасывать его через определенное количество времени (меньшее, чем количество времени, затраченное на выполнение аппаратного сброса). 09.10.2014
  • Вся цель сторожевого таймера состоит в том, чтобы полностью перезагрузить ваше устройство, если что-то пошло не так. В этот момент вы должны предположить, что ничто больше не гарантирует правильную работу, поэтому вы не можете выполнить какую-либо операцию отключения до ее сброса. Подумайте об этом так: ПО больше не работает, осталось только сбросить HW. 09.10.2014
  • Теперь, если вы все еще хотите пару функций для активации сторожевого таймера и для его сброса, то, пожалуйста, помашите белым флагом, высоко и четко, чтобы я мог это видеть (Большой Крис, Lock Stock). 09.10.2014

Ответы:


1

Вам не нужен сторожевой таймер, так как вся его цель состоит в принудительном сбросе, если программа зависла.

То, что вам нужно, больше похоже на обычное прерывание таймера с высоким приоритетом.

Настройте его так, чтобы вы перезапускали таймер (перемещая генерацию события прерывания вперед во времени) через регулярные промежутки времени, чтобы прерывание обычно не происходило.

09.10.2014
  • Хорошо спасибо. Теперь ясно. Но в моем случае микроконтроллер должен правильно включать и выключать DSP. Также нужно смотреть, нет ли перебоев в подаче электроэнергии. Если есть, необходимо отключить DSP. Но скажем, программное обеспечение микроконтроллера зависает и происходит сбой питания. Он не может закрыть его правильно, не так ли? Итак, как мне запрограммировать такую ​​ситуацию? Сбрасывать микроконтроллер - не лучший вариант, потому что он также сбросит значения некоторых важных контактов... 09.10.2014
  • @LarsJansen: DSP - это MSP430? 09.10.2014
  • @LarsJansen Я думаю, что лучшее, что вы можете сделать в программном обеспечении, - это иметь высокоприоритетное (немаскируемое) прерывание, которое выполняет надзор и отключает DSP и, возможно, также STM, если обнаружена ошибка. Если вы убедитесь, что у вас нет кода, отключающего прерывания, это может быть довольно безопасным. 09.10.2014
  • @расслабься Хорошо. Итак, вы говорите (насколько я понимаю), что мне нужно прерывание (вместо цикла while) для проверки отказа питания. 09.10.2014
  • Но говорят, что мой STM зависает. Прерывание тоже зависнет, не так ли? 09.10.2014
  • @LarsJansen Это зависит. Обычно в программном обеспечении зависание означает застревание где-то в бесконечном цикле. В этом случае прерывание таймера, конечно, сработает в любом случае и прервет цикл. На STM32 вы также можете получить серьезные ошибки, если вы не хорошо относитесь к ядру ARM, но вы также можете перехватить их и запустить код, если произойдет ошибка. 09.10.2014
  • @unwind Аааа, хорошо :) У вас есть поисковые запросы? Или у вас есть пример кода? 09.10.2014
  • можно ли использовать таймер? чем они отличаются? 23.07.2016

  • 2

    Сторожевых таймеров два (по крайней мере у stm32s10x).

    IWDG, который независим и сбрасывает stm без isr.

    WWDG (сторожевой таймер окна), у которого есть тик isr 1, прежде чем он сбросит stm32.

    08.08.2019
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..