Проблема формирования точных временных промежутков на МК

period

Инженер, начинающий изучать STM32, может столкнуться с проблемой неточных временных промежутков. К примеру, вы можете написать код для задержки на 1мс с помощью таймера, а при проверке осциллографом увидеть что она отрабатывает быстрее — за 0.997 мс. Или наоборот медленнее, за 1.03 мс. Точно то же самое бывает и при генерации каких-либо частот — к примеру, мои 50МГц превращались в 49.95.

Почему так происходит?

Свежие новоSTи

Похоже, компания ST наконец отошла от маниакального создания новых свежих чипов и решила оглянуться назад — «что же с этим всем делать?». Тема новой пятилетки — утилиты и примеры для уже созданных контроллеров.

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

STM32 + LAN8720 + FreeRTOS + IAR

Я две недели разбирался с тем, чтобы запустить Ethernet-модуль в STM32F107 с использованием микросхемы физического уровня LAN8720. Именно эта микросхема PHY установлена на отладочной плате MikroElectronica, и планировалось её использовать в боевом проекте — она маленькая, дешёвая и доступная.

Похоже на то, что я — единственный человек, запустивший lwIP-стек на STM32F107 с микросхемой PHY LAN8720 в IAR, или по крайней мере, единственный написавший об этом. Вся сложность заключалась в том, чтобы найти/написать необходимый драйвер для микросхемы PHY именно в этом МК и именно в этом компиляторе. Этот драйвер так и не нашёлся, и в итоге я написал свой.

STM32 — с нуля до RTOS. 1: Порты ввода–вывода

Ещё раз хочу написать про простой старт с STM32, только на этот раз без использования чьих–то шаблонов или примеров — с объяснением каждого шага. В статьях будет сквозная нумерация шагов.

STM32 — с нуля до RTOS. 3: Выходы таймера

Внешне не изменится ничего, но мы узнаем много нового. У таймеров STM32 есть собственные выходы, которыми они могут управлять самостоятельно, без прерываний. Несмотря на отсутствие внешних изменений, часто такая возможность очень полезна.

Теперь нам потребуется перейти на другой таймер, потому что на ножке PC8 висит 3 канал 3 таймера. Да, у таймеров в STM32 есть по нескольку каналов, и на каждом из них может происходить что–то своё (конечно, завязанное на период обновления всего таймера).