В данном уроке вы освоите основы работы с таймером TIM4 и пройдете небольшую практику. Суть практической работы заключается в том, чтобы как и в самом начале поморгать светодиодом. Резонно назвать этот практикум "Hello, LED-2". В отличие от первого примитивного примера, где задержка (пауза) осуществлялась зависанием микроконтроллера на количество заданных итераций, здесь микроконтроллер зависать не будет. Он будет "слушать" события. Таймер будет создавать эти события в строго определенный промежуток времени. И по возникновении событий можно будет менять состояние линии порта, на которой висит светодиод. По-прежнему я использую отладочную плату "синяя пуля оптовых оценка STM8 доска" и данный пример будет работать вообще на любом STM8 линеек Value и Acces line.
Начиная с этого занятия разбор кода будет вестись прямо в комментариях к коду. А в конце урока будет даваться теоретическая основа. Таким образом, несложные занятия могут вполне умещаться в рамках одной статьи.
Открывайте все тот же проект из предыдущего занятия и меняйте в нем содержимое файла main.h
Меняйте содержимое файла stm8_interrupt_vector.c
Меняйте содержимое файла main.c
В микроконтроллерах семейства STM8 содержится несколько системных таймеров и самым простым из них является 8-битный инкрементный TIM4, который может считать от 0 до 255 и вызывать прерывание при обновлении. Таймер этот обновляется в трех случаях:
1) Переполнение, когда счетчик достиг своего предельного значения 255 и при следующем такте обнуляется.
2) Достижение значения регистра TIM4_ARR (по умолчанию таймер обновляется именно так).
3) При программной установке бита UG в регистре TIM4_EGR.
Когда таймер обновляется, то аппаратно выставляется флаг UIF в регистре TIM4_SR (в регистре всего один бит).
Принудительно вызвать обновление можно установкой бита UG в регистре TIM4_EGR, сбросится он аппаратно (в регистре всего один бит).
Прерывание при обновлении разрешается битом UIE в регистре TIM4_IER (в регистре всего один бит).
Регистр предделителя тактовой частоты таймера TIM4_PSCR (в регистре всего три бита)
000 - /1
001 - /2
010 - /4
011 - /8
100 - /16
101 - /32
110 - /64
111 - /128
Значение счетчика таймера, непосредственно, можно прочесть и установить в регистре TIM4_CNTR
Регистр TIM4_CR1 основной конфигурационный
ARPE - разрешить буферизацию регистра TIM4_ARR
OPM - включить режим одиночного импульса. При включенном режиме, таймер отключится (сбросом бита CEN) после первого же обновления.
URS - какое событие вызовет прерывание 1 - только переполнение, 0 - не только переполнение но и достижение значения регистра TIM4_ARR, и программная установка бита UG в регистре TIM4_EGR.
UDIS - обновления 0 - разрешены, 1 - запрещены.
CEN - бит включения таймера.
Этой информации вполне достаточно, чтобы начать использовать таймер TIM4 в своих проектах.