HAL Timer16
Константы
Структуры
typedef struct
{
uint8_t Source; /* Источник тактирования */
uint8_t Prescaler; /* Делитель частоты */
} Timer16_ClockConfigTypeDef;
typedef struct
{
uint8_t Source; /* Источник тригера */
uint8_t ActiveEdge; /* Активный фронт */
uint8_t TimeOut; /* Функция тайм-аут */
} Timer16_TriggerConfigTypeDef;
typedef struct
{
uint8_t ExternalClock; /* Фильтр для внешнего тактового генератора */
uint8_t Trigger; /* фильтр для триггера */
} Timer16_FilterConfigTypeDef;
typedef struct
{
TIMER16_TypeDef *Instance; /* Базовый адрес регистров Timer16 */
Timer16_ClockConfigTypeDef Clock; /* Настройки тактирования */
uint8_t CountMode; /* Источник синхронизации */
uint8_t ActiveEdge; /* Активный фронт */
uint16_t Period; /* Верхнее значение счета */
uint8_t Preload; /* Режим записи в ARR и CMP */
Timer16_TriggerConfigTypeDef Trigger; /* Настройки тригера */
Timer16_FilterConfigTypeDef Filter; /* Настройки фильтра */
uint8_t EncoderMode; /* Режим энкодера */
} Timer16_HandleTypeDef;
Функции
void HAL_Timer16_Disable(Timer16_HandleTypeDef *htimer16)
Описание:
Выключить таймер. Может использоваться для отключения таймера или при записи в регистр CFGR.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
void HAL_Timer16_Enable(Timer16_HandleTypeDef *htimer16)
Описание:
Включить таймер.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
void HAL_Timer16_SetActiveEdge(Timer16_HandleTypeDef *htimer16, uint8_t ActiveEdge)
Описание:
Установить активный фронт для подсчёта. Используется при тактировании Timer16 от внешнего источника тактового сигнала на выводе Input1.
Если оба фронта сконфигурированы как активные, необходимо также обеспечить внутренний тактовый сигнал. В этом случае частота внутреннего тактового сигнала должна быть как минимум в четыре раза выше частоты внешнего тактового сигнала.
При тактировании от Input1 ( HAL_Timer16_SetSourceClock ) счетчик Timer16 может обновляться либо по нарастающему, либо по спадающему фронту тактового сигнала lnput1, но не по двум (нарастающему и спадающему фронту) одновременно.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
- uint8_t ActiveEdge - Активный фронт. Возможные значения:
- TIMER16_ACTIVEEDGE_RISING - Нарастающий фронт является активным;
- TIMER16_ACTIVEEDGE_FOLLING - Спадающий фронт является активным;
- TIMER16_ACTIVEEDGE_BOTH - Оба фронта являются активными фронтами.
void HAL_Timer16_SetSourceClock(Timer16_HandleTypeDef *htimer16, uint8_t SourceClock)
Описание:
Выбрать источник тактирования, который будет использовать Timer16.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
- uint8_t SourceClock - Источник тактирования. Возможные значения:
- TIMER16_SOURCE_INTERNAL_SYSTEM - Тактирование от системной частоты (sys_clk);
- TIMER16_SOURCE_INTERNAL_AHB - Тактирование от частоты шины AHB;
- TIMER16_SOURCE_INTERNAL_OSC32M - Тактирование от частоты внешнего осциллятора OSC32М;
- TIMER16_SOURCE_INTERNAL_HSI32M - Тактирование от частоты встроенного осциллятора HSI32M;
- TIMER16_SOURCE_INTERNAL_OSC32K - Тактирование от частоты внешнего осциллятора OSC32К;
- TIMER16_SOURCE_INTERNAL_LSI32K - Тактирование от частоты встроенного осциллятора LSI32K;
- TIMER16_SOURCE_EXTERNAL_INPUT1 - Тактирование от внешнего вывода Input1.
void HAL_Timer16_SetCountMode(Timer16_HandleTypeDef *htimer16, uint8_t CountMode)
Описание:
Выбрать источник тактового сигнала для синхронизации счетчика Timer16.
При тактировании от Input1 Timer16 не нуждается во внутреннем источнике тактового сигнала (за исключением случаев, когда включены фильтры glitch). Сигнал, подаваемый на lnput1 Timer16, используется в качестве системного тактового генератора для Timer16. Эта конфигурация подходит для режимов работы, в которых не включен встроенный генератор. При такой конфигурации счетчик Timer16 может обновляться либо по нарастающему, либо по спадающему фронту тактового сигнала lnput1, но не по двум (нарастающему и спадающему фронту) одновременно.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
- uint8_t CountMode - Источник тактового сигнала для синхронизации счетчика. Возможные значения:
- TIMER16_COUNTMODE_INTERNAL - Счетчик инкрементируется после каждого внутреннего тактового импульса;
- TIMER16_COUNTMODE_EXTERNAL - Счетчик увеличивается после каждого действительного тактового импульса на внешнем выводе lnput1.
void HAL_Timer16_ClockInit(Timer16_HandleTypeDef *htimer16)
Описание:
Инициализация тактирования в соответствии с параметрами Timer16_HandleTypeDef *htimer16.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
void HAL_Timer16_SetPreload(Timer16_HandleTypeDef *htimer16, uint8_t Preload)
Описание:
Задать режим обновления регистров ARR - значение автоматической перезагрузки и CMP - значение сравнения.
Для записи в ARR и CMP таймер должен быть включен.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
- uint8_t Preload - режим обновления регистров ARR и CMP. Возможные значения:
- TIMER16_PRELOAD_AFTERWRITE - Регистры обновляются после каждого доступа к записи на шине APB;
- TIMER16_PRELOAD_ENDPERIOD - Регистры обновляются в конце текущего периода Timer16.
void HAL_Timer16_WaitARROK(Timer16_HandleTypeDef *htimer16)
Описание:
Ожидание флага ARROK, установка которого означает успешную запись в регистр ARR - значение автоматической перезагрузки.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
void HAL_Timer16_WaitCMPOK(Timer16_HandleTypeDef *htimer16)
Описание:
Ожидание флага CMPOK, установка которого означает успешную запись в регистр CMP - значение сравнения.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
void HAL_Timer16_SetARR(Timer16_HandleTypeDef *htimer16, uint16_t Period)
Описание:
Записать число в регистр ARR - значение автоматической перезагрузки.
Используется для установки верхнего предела, до которого будет считать счетчик Timer16.
Значение ARR должно быть всегда больше значения CMP.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
- uint16_t Period - 16 битное число в пределах от 0 до 65535.
void HAL_Timer16_SetCMP(Timer16_HandleTypeDef *htimer16, uint16_t Compare)
Описание:
Записать число в регистр CMP - значение сравнения.
Используется для сравнения текущего значения счетчика в регистре CNT со значением в регистре CMP. При совпадении CNT и CMP устанавливается флаг CMPM.
В режиме генерации волновой формы при совпадении значений регистров CMP и CNT сигнал на выводе output меняет свое состояние.
Значение ARR должно быть всегда больше значения CMP.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
- uint16_t Compare- 16 битное число в пределах от 0 до 65535.
void HAL_Timer16_ClearCMPFlag(Timer16_HandleTypeDef *htimer16)
Описание:
Очистить флаг CMPM, который устанавливается при совпадении значений в регистрах CNT с CMP.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
void HAL_Timer16_SelectTrigger(Timer16_HandleTypeDef *htimer16, uint8_t TriggerSource)
Описание:
Выбрать источник триггера.
Счетчик Timer16 может быть запущен либо программно, либо после обнаружения активного фронта импульса на одном из 8 триггерных входов.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
- uint8_t TriggerSource - источник триггера. Возможные значения:
- TIMER16_TRIGGER_TIM0_GPIO0_7 - GPIO0_7 источник триггера для Timer16_0;
- TIMER16_TRIGGER_TIM1_GPIO1_9 - GPIO1_9 источник триггера для Timer16_1;
- TIMER16_TRIGGER_TIM2_GPIO2_3 - GPIO2_3 источник триггера для Timer16_2;
- TIMER16_TRIGGER_TIM0_GPIO0_4 - GPIO0_4 источник триггера для Timer16_0;
- TIMER16_TRIGGER_TIM1_GPIO1_8 - GPIO1_8 источник триггера для Timer16_1;
- TIMER16_TRIGGER_TIM2_GPIO2_2 - GPIO2_2 источник триггера для Timer16_2;
- TIMER16_TRIGGER_TIM0_GPIO0_1 - GPIO0_1 источник триггера для Timer16_0;
- TIMER16_TRIGGER_TIM1_GPIO1_7 - GPIO1_7 источник триггера для Timer16_1;
- TIMER16_TRIGGER_TIM2_GPIO2_1 - GPIO2_1 источник триггера для Timer16_2;
- TIMER16_TRIGGER_TIM0_GPIO0_1 - GPIO0_1 источник триггера для Timer16_0;
- TIMER16_TRIGGER_TIM1_GPIO1_6 - GPIO1_6 источник триггера для Timer16_1;
- TIMER16_TRIGGER_TIM2_GPIO2_0 - GPIO2_0 источник триггера для Timer16_2;
- TIMER16_TRIGGER_TEMPERATURE - источник триггера окончание преобразования термосенсора;
- TIMER16_TRIGGER_ADC - источник триггера окончание преобразования АЦП;
- TIMER16_TRIGGER_RTC - источник триггера прерывание RTC;
- TIMER16_TRIGGER_AlARM - источник триггера будильник.
void HAL_Timer16_SetTriggerEdge(Timer16_HandleTypeDef *htimer16, uint8_t TriggerEdge)
Описание:
Выбрать разрешение работы и активный фронт триггера.
Счетчик Timer16 может быть запущен либо программно, либо после обнаружения активного фронта импульса на одном из 8 триггерных входов.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
- uint8_t TriggerEdge - активный фронт триггера. Возможные значения:
- TIMER16_TRIGGER_ACTIVEEDGE_SOFTWARE - программный триггер. Начало отсчета инициируется программно установкой бита CNTSTRT или SNGSTRT с помощью функций HAL_Timer16_StartSingleMode или HAL_Timer16_StartContinuousMode соответственно.
- TIMER16_TRIGGER_ACTIVEEDGE_RISING - нарастающий фронт является активным фронтом;
- TIMER16_TRIGGER_ACTIVEEDGE_FOLLING - спадающий фронт является активным фронтом;
- TIMER16_TRIGGER_ACTIVEEDGE_BOTH - оба фронта являются активными фронтами.
void HAL_Timer16_SetTimeOut(Timer16_HandleTypeDef *htimer16, uint8_t TimeOut)
Описание:
Включить или выключить функцию time-out.
С помощью включенной функции time-out активный фронт триггера может перезапустить отсчет таймера. Иначе повторное срабатывание триггера во время счета будет проигнорировано.
Может быть реализована функция time-out с низким энергопотреблением. Значение time-out соответствует значению сравнения - CMP. Если в течение ожидаемого периода времени триггер не срабатывает, MCU пробуждается по событию совпадения сравнения.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
- uint8_t TimeOut - режим time-out. Возможные значения:
- TIMER16_TIMEOUT_DISABLE - триггерное событие, поступающее, когда таймер уже запущен, будет проигнорировано;
- TIMER16_TIMEOUT_ENABLE - триггерное событие, поступающее, когда таймер уже запущен, сбросит и перезапустит счетчик.
void HAL_Timer16_SetFilterExternalClock(Timer16_HandleTypeDef *htimer16, uint8_t FilterExternalClock)
Описание:
Задать чувствительность фильтра для внешнего тактового генератора.
Прежде чем активировать цифровые фильтры, на Timer16 сначала должен быть подан внутренний источник синхронизации.
В случае отсутствия внутреннего тактового сигнала цифровой фильтр должен быть деактивирован.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
- uint8_t FilterExternalClock - чувствительность фильтра. Возможные значения:
- TIMER16_FILTER_NONE - фильтр отключен;
- TIMER16_FILTER_2CLOCK - фильтр на 2 такта;
- TIMER16_FILTER_4CLOCK - Фильтр на 4 такта;
- TIMER16_FILTER_8CLOCK - Фильтр на 8 тактов.
void HAL_Timer16_SetFilterTrigger(Timer16_HandleTypeDef *htimer16, uint8_t FilterTrigger)
Описание:
Задать чувствительность фильтра для триггера.
Прежде чем активировать цифровые фильтры, на LPTIM сначала должен быть подан внутренний источник синхронизации.
В случае отсутствия внутреннего тактового сигнала цифровой фильтр должен быть деактивирован.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
- uint8_t FilterTrigger - чувствительность фильтра. Возможные значения:
- TIMER16_FILTER_NONE - фильтр отключен;
- TIMER16_FILTER_2CLOCK - фильтр на 2 такта;
- TIMER16_FILTER_4CLOCK - Фильтр на 4 такта;
- TIMER16_FILTER_8CLOCK - Фильтр на 8 тактов.
void HAL_Timer16_SetEncoderMode(Timer16_HandleTypeDef *htimer16, uint8_t EncoderMode)
Описание:
Включить или выключить режим энкодера.
Режим энкодера доступен только в том случае, если Timer16 работает от внутреннего источника синхронизации. Частота сигналов на обоих входах lnput1 и lnput2 не должна превышать частоту внутреннего тактового генератора Timer16 , деленную на 4. Кроме того, коэффициент деления предделителя должен быть равен его начальному значению, которое равно 1. Это обязательно для обеспечения нормальной работы Timer16.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
- uint8_t EncoderMode - режим энкодера. Возможные значения:
- TIMER16_ENCODER_DISABLE - режим энкодера выключен;
- TIMER16_ENCODER_ENABLE - режим энкодера включен.
void HAL_Timer16_Init(Timer16_HandleTypeDef *htimer16)
Описание:
Инициализировать Timer16 в соответствии с настройками Timer16_HandleTypeDef *htimer16.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
uint16_t HAL_Timer16_GetCounterValue(Timer16_HandleTypeDef *htimer16)
Описание:
Получить текущее значение счетчика из регистра CNT.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
Возвращаемое значение:
- 16 битное значение счетчика.
uint8_t HAL_Timer16_CheckCMP(Timer16_HandleTypeDef *htimer16)
Описание:
Проверить состояние флага сравнения CMPM.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
- Возвращаемое значение:
- 0 - счетчик не достиг значения сравнения CMP;
- 1 - счетчик достиг значения сравнения CMP.
void HAL_Timer16_WaitCMP(Timer16_HandleTypeDef *htimer16)
Описание:
Ожидать когда счетчик достигнет значения сравнения CMP.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
void HAL_Timer16_StartSingleMode(Timer16_HandleTypeDef *htimer16)
Описание:
Запустить таймер в одиночном режиме.
Счетчик будет считать от 0 до значения в регистре ARR, а затем остановится.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
void HAL_Timer16_StartContinuousMode(Timer16_HandleTypeDef *htimer16)
Описание:
Запустить таймер в непрерывном режиме.
Счетчик будет считать от 0 до значения в регистре ARR, а затем начнет заново.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
void HAL_Timer16_InvertOutput(Timer16_HandleTypeDef *htimer16)
Описание:
Инвертировать сигнал на выводе Output.
Используется при генерации волновой формы.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
void HAL_Timer16_StartPWM(Timer16_HandleTypeDef *htimer16, uint16_t Period, uint16_t Compare)
Описание:
Запустить таймер с ШИМ сигналом.
Счетчик будет считать от 0 до значения в регистре ARR, а затем начнет заново. При достижении значения CMP сигнал на выводе Output сменит свое состояние. При достижении значения ARR сигнал на выводе Output вернется в исходное состояние.
Аргументы:
- Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
- TIMER16_0;
- TIMER16_1;
- TIMER16_2.
- uint16_t Period - период ШИМ сигнала. Число от 0 до 65535;
- uint16_t Compare - значение при достижении которого сигнал на выводе Output сменит свое состояние. Число от 0 до 65534; Данное число всегда должно быть меньше значения Period.