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

  Рет қаралды 7,923

NR.electronics

NR.electronics

Күн бұрын

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

Пікірлер: 32
@ПавелЛобанов-ж3и
@ПавелЛобанов-ж3и 2 жыл бұрын
Большое вам спасибо за подробные уроки! Помогли разобраться.
@NRelectronics
@NRelectronics 2 жыл бұрын
Пожалуйста! Я рад этому.
@dobroliub1908
@dobroliub1908 3 жыл бұрын
Класс! Все подробно и интересно!! Ждём-с продолжения! Спасибо Вам.
@NRelectronics
@NRelectronics 3 жыл бұрын
Спасибо. Продолжения будет много, может не так часто правда.
@АнатолийКовшов-н2с
@АнатолийКовшов-н2с 3 жыл бұрын
Большое спасибо за видео.
@NRelectronics
@NRelectronics 3 жыл бұрын
На здоровье.
@ВасяПупкин-п8ц7ц
@ВасяПупкин-п8ц7ц Жыл бұрын
Обьясните плиз. Если "TIM3->DIER |= TIM_DIER_UIE;" регистр описан в документации, то откуда и и что это "NVIC_EnableIRQ (TIM3_IRQn);" ???
@NRelectronics
@NRelectronics Жыл бұрын
TIM3->DIER |= TIM_DIER_UIE - После того как таймер достигнет своего максимального значения необходимо что бы он уведомил об этом контроллер прерываний, для этого разрешим генерацию событий. В библиотеке CMSIS. NVIC_EnableIRQ (TIM3_IRQn) - включить прерывания по таймеру 3.
@sergeyvp
@sergeyvp 3 жыл бұрын
Переменная tim3_cnt в данном случае не нужна. Достаточно проверить состояние вывода в регистре и изменить на противоположное.
@NRelectronics
@NRelectronics 3 жыл бұрын
Реализовать можно по разному.
@sergeyvp
@sergeyvp 3 жыл бұрын
@@NRelectronics Можно, но не нужно. Зачем вам лишние переменные и лишняя работа контроллера? Ресурсы контроллера нужно беречь. Почитайте "История одного байта".
@NRelectronics
@NRelectronics 3 жыл бұрын
Слышал я давно про эту историю)) Но тут получается прошивка менее одного килобайта. Ресурсов хватает с запасом.
@intelektum
@intelektum 3 жыл бұрын
Ваши дефайны, очень похожи, как сделано в LL для куба.
@NRelectronics
@NRelectronics 3 жыл бұрын
Ну они чистые с CMSIS. В библиотечке я показывал, а какие свои написал так как думал и написал...
@AlexRootx
@AlexRootx 3 жыл бұрын
Тема CMSIS очень интересна!!!! Есть ли возможность рассмотреть фичи таймера TIM1 ?
@NRelectronics
@NRelectronics 3 жыл бұрын
Там столько фич в TIM1, что придется делать отдельную ветку. Думаю TIM1 подробнее рассмотрим уже на HAL. До конца пока не определено.
@AlexRootx
@AlexRootx 3 жыл бұрын
@@NRelectronics ХОЛ не то.... , интерес именно к регистрам и ЦМСИС)
@NRelectronics
@NRelectronics 3 жыл бұрын
Да я то понимаю интерес))
@vladimirzibtsev2889
@vladimirzibtsev2889 Жыл бұрын
почему для tim3_cnt не использовать enum? существует ли информация (видео, книги) как архитектурно грамотно разрабатывать приложения под МК? ваш подход выглядит как очень сложно поддерживаемый в будущем. что касается работы с МК, очень подробное и понятное объяснение, спасибо!
@NRelectronics
@NRelectronics Жыл бұрын
В чем сложность, По-моему всё наглядно и понятно. Можно в крайнем случае в отдельный сияние вынести. Такую цель в видео обычно не ставлю, так как важны инициализации и алгоритмы. Спасибо за оценку, стараюсь, меня где поправляют я тоже учусь, богов нет.
@АлександрПшеничнов-ъ3ь
@АлександрПшеничнов-ъ3ь 3 жыл бұрын
Расскажите об использовании watchdog таймеров
@NRelectronics
@NRelectronics 3 жыл бұрын
Ок, как-нибудь.
@alexeyismyname
@alexeyismyname 2 жыл бұрын
В регистр ARR необходимо записывать значение на единицу меньше, в вашем случае 9999
@NRelectronics
@NRelectronics 2 жыл бұрын
есть разные примеры в сети по его применению, в моем случае: ..."TIM3->ARR , который соответствует значению Period"... и оно посчитанное в "WRITE_REG(TIM3->PSC, 7199);"
@vovanikotin
@vovanikotin 3 жыл бұрын
Спасибо за урок. CMSIS иногда очень актуален. Планируете по I2C сделать урок с каким нибудь датчиком?
@NRelectronics
@NRelectronics 3 жыл бұрын
CMSIS будет актуален всегда. Да, с I2C и датчиком планирую видео.
@vovanikotin
@vovanikotin 3 жыл бұрын
@@NRelectronics отлично, ждем! я своими силами I2C не смог запустить на F737--м, повторный старт никак не проходит.
@NRelectronics
@NRelectronics 3 жыл бұрын
На F7 надо отдельно смотреть, так не скажу. Но эти семейства сильно разные, как по новизне так и по фичам.
@strumeg3061
@strumeg3061 3 жыл бұрын
Зачем в TIM3_IRQHandler нужна проверка SR? Разве функция уже не вызывается по событию?
@NRelectronics
@NRelectronics 3 жыл бұрын
Мы попадаем по прерыванию в TIM3_IRQHandler, и если поднят флаг, мало ли, всегда его сбрасываем, чтобы не попасть опять в прерывание после выхода из него.
@strumeg3061
@strumeg3061 3 жыл бұрын
@@NRelectronics Спасибо)
@alexeyismyname
@alexeyismyname 2 жыл бұрын
проверка конечно же не нужна! необходимо сразу сбросить флаг и всё. вы всё верно предположили, функция обработчик прерывания как раз и вызывается по этому событию
Пишем REST API сервис на Go - УЛЬТИМАТИВНЫЙ гайд
2:57:51
Николай Тузов — Golang
Рет қаралды 125 М.
Teaching a Toddler Household Habits: Diaper Disposal & Potty Training #shorts
00:16
МЕБЕЛЬ ВЫДАСТ СОТРУДНИКАМ ПОЛИЦИИ ТАБЕЛЬНУЮ МЕБЕЛЬ
00:20
OLD CRT MONITORS ARE BETTER THAN LCD MONITORS AND HERE'S WHY...
15:00
Макс Спот
Рет қаралды 102 М.
STM32. CMSIS #8. UART работа на прерываниях
34:05
NR.electronics
Рет қаралды 4,6 М.
STM32. Таймеры общего назначения. Часть 1.
25:39