STM32. CMSIS #4. TIMx - делаем точную задержку через таймер TIM3

Поділитися
Вставка
  • Опубліковано 22 кві 2021
  • Скачать PVS-Studio для проверки своего можно бесплатно на:
    pvs-studio.com/nr_download
    Топ 5 мифов о статическом анализе:
    • Топ 5 мифов о статичес...
    Официальная страничка ВКонтакте:
    pvsstudio_rus
    Знакомимся с таймерами и пробуем использовать TIM3 вместо SysTick по документации и начинаем его программировать для получения необходимого точного значения задержки между двумя любыми процессами для замещения использования системного таймера - SysTick (Функции HAL_Delay()). Проверяем запрограммированное значение по осциллографу и обязательно статическим анализатором кода. Готовый проект можно скачать по ссылке:
    github.com/nr-electronics/CMS...
    __________________________________________________
    Вы можете помочь каналу через Яндекс-деньги:
    money.yandex.ru/to/4100115727...
    или через банковскую карту:
    4377 7237 6190 5714
    __________________________________________________

КОМЕНТАРІ • 32

  • @dobroliub1908
    @dobroliub1908 3 роки тому

    Класс! Все подробно и интересно!! Ждём-с продолжения! Спасибо Вам.

    • @NRelectronics
      @NRelectronics  3 роки тому +1

      Спасибо. Продолжения будет много, может не так часто правда.

  • @user-bb6ym1bo3h
    @user-bb6ym1bo3h Рік тому

    Большое вам спасибо за подробные уроки! Помогли разобраться.

    • @NRelectronics
      @NRelectronics  Рік тому

      Пожалуйста! Я рад этому.

  • @user-bh4zf6jn7f
    @user-bh4zf6jn7f 3 роки тому

    Большое спасибо за видео.

  • @AlexRootx
    @AlexRootx 3 роки тому +1

    Тема CMSIS очень интересна!!!! Есть ли возможность рассмотреть фичи таймера TIM1 ?

    • @NRelectronics
      @NRelectronics  3 роки тому +1

      Там столько фич в TIM1, что придется делать отдельную ветку. Думаю TIM1 подробнее рассмотрим уже на HAL. До конца пока не определено.

    • @AlexRootx
      @AlexRootx 3 роки тому

      @@NRelectronics ХОЛ не то.... , интерес именно к регистрам и ЦМСИС)

    • @NRelectronics
      @NRelectronics  3 роки тому

      Да я то понимаю интерес))

  • @intelektum
    @intelektum 3 роки тому

    Ваши дефайны, очень похожи, как сделано в LL для куба.

    • @NRelectronics
      @NRelectronics  3 роки тому

      Ну они чистые с CMSIS. В библиотечке я показывал, а какие свои написал так как думал и написал...

  • @vovanikotin
    @vovanikotin 3 роки тому

    Спасибо за урок. CMSIS иногда очень актуален.
    Планируете по I2C сделать урок с каким нибудь датчиком?

    • @NRelectronics
      @NRelectronics  3 роки тому

      CMSIS будет актуален всегда. Да, с I2C и датчиком планирую видео.

    • @vovanikotin
      @vovanikotin 3 роки тому

      @@NRelectronics отлично, ждем! я своими силами I2C не смог запустить на F737--м, повторный старт никак не проходит.

    • @NRelectronics
      @NRelectronics  3 роки тому

      На F7 надо отдельно смотреть, так не скажу. Но эти семейства сильно разные, как по новизне так и по фичам.

  • @vladimirzibtsev2889
    @vladimirzibtsev2889 Рік тому

    почему для tim3_cnt не использовать enum?
    существует ли информация (видео, книги) как архитектурно грамотно разрабатывать приложения под МК? ваш подход выглядит как очень сложно поддерживаемый в будущем.
    что касается работы с МК, очень подробное и понятное объяснение, спасибо!

    • @NRelectronics
      @NRelectronics  Рік тому

      В чем сложность, По-моему всё наглядно и понятно. Можно в крайнем случае в отдельный сияние вынести. Такую цель в видео обычно не ставлю, так как важны инициализации и алгоритмы.
      Спасибо за оценку, стараюсь, меня где поправляют я тоже учусь, богов нет.

  • @user-gr6oh2ve7x
    @user-gr6oh2ve7x 3 роки тому

    Расскажите об использовании watchdog таймеров

  • @sergeyvp
    @sergeyvp 3 роки тому +1

    Переменная tim3_cnt в данном случае не нужна. Достаточно проверить состояние вывода в регистре и изменить на противоположное.

    • @NRelectronics
      @NRelectronics  3 роки тому

      Реализовать можно по разному.

    • @sergeyvp
      @sergeyvp 3 роки тому

      @@NRelectronics Можно, но не нужно. Зачем вам лишние переменные и лишняя работа контроллера? Ресурсы контроллера нужно беречь. Почитайте "История одного байта".

    • @NRelectronics
      @NRelectronics  3 роки тому

      Слышал я давно про эту историю)) Но тут получается прошивка менее одного килобайта. Ресурсов хватает с запасом.

  • @user-kc8ec6vl9d
    @user-kc8ec6vl9d 11 місяців тому +1

    Обьясните плиз. Если "TIM3->DIER |= TIM_DIER_UIE;" регистр описан в документации, то откуда и и что это "NVIC_EnableIRQ (TIM3_IRQn);" ???

    • @NRelectronics
      @NRelectronics  11 місяців тому +2

      TIM3->DIER |= TIM_DIER_UIE - После того как таймер достигнет своего максимального значения необходимо что бы он уведомил об этом контроллер прерываний, для этого разрешим генерацию событий. В библиотеке CMSIS.
      NVIC_EnableIRQ (TIM3_IRQn) - включить прерывания по таймеру 3.

  • @alexeyismyname
    @alexeyismyname 2 роки тому

    В регистр ARR необходимо записывать значение на единицу меньше, в вашем случае 9999

    • @NRelectronics
      @NRelectronics  2 роки тому

      есть разные примеры в сети по его применению, в моем случае:
      ..."TIM3->ARR , который соответствует значению Period"... и оно посчитанное в "WRITE_REG(TIM3->PSC, 7199);"

  • @strumeg3061
    @strumeg3061 3 роки тому

    Зачем в TIM3_IRQHandler нужна проверка SR? Разве функция уже не вызывается по событию?

    • @NRelectronics
      @NRelectronics  3 роки тому +1

      Мы попадаем по прерыванию в TIM3_IRQHandler, и если поднят флаг, мало ли, всегда его сбрасываем, чтобы не попасть опять в прерывание после выхода из него.

    • @strumeg3061
      @strumeg3061 3 роки тому

      @@NRelectronics Спасибо)

    • @alexeyismyname
      @alexeyismyname 2 роки тому +1

      проверка конечно же не нужна! необходимо сразу сбросить флаг и всё. вы всё верно предположили, функция обработчик прерывания как раз и вызывается по этому событию