HAL Timer16

Материал из MIK32 микроконтроллер

Макросы

Сдвиг настройки тактирования таймера в регистре PM.Timer_CFG

#define MUX_TIM16_0 9 - Сдвиг настроек тактирования Timer16_0

#define MUX_TIM16_1 12 - Сдвиг настроек тактирования Timer16_1

#define MUX_TIM16_2 15 - Сдвиг настроек тактирования Timer16_2

Выводы таймеров

#define PORT_AS_TIMER 0b10 - Третья функция вывода (последовательный интерфейс или таймер);

#define TIMER16_0_IN1 5 - Timer16_0 - вход 1;

#define TIMER16_0_IN2 6 - Timer16_0 - вход 2;

#define TIMER16_0_OUT 7 - Timer16_0 - выход;

#define TIMER16_1_IN1    8 - Timer16_1 - вход 1;

#define TIMER16_1_IN2    9 - Timer16_1 - вход 2;

#define TIMER16_1_OUT    10 - Timer16_1 - выход;

#define TIMER16_2_IN1    11 - Timer16_2 - вход 1;

#define TIMER16_2_IN2    12 - Timer16_2 - вход 2;

#define TIMER16_2_OUT    13 - Timer16_2 - выход;

Источник тактирования

#define TIMER16_SOURCE_INTERNAL_SYSTEM 0x0 - Тактирование от системной частоты (sys_clk);

#define TIMER16_SOURCE_INTERNAL_AHB 0x1 - Тактирование от частоты шины AHB;

#define TIMER16_SOURCE_INTERNAL_OSC32M 0x2 - Тактирование от частоты внешнего осциллятора OSC32М;

#define TIMER16_SOURCE_INTERNAL_HSI32M 0x3 - Тактирование от частоты встроенного осциллятора HSI32M;

#define TIMER16_SOURCE_INTERNAL_OSC32K 0x4 - Тактирование от частоты внешнего осциллятора OSC32К;

#define TIMER16_SOURCE_INTERNAL_LSI32K 0x5 - Тактирование от частоты встроенного осциллятора LSI32K;

#define TIMER16_SOURCE_EXTERNAL_INPUT1 0x6 - Тактирование от внешнего вывода Input1;

Делитель частоты

#define TIMER16_PRESCALER_1 000 - Делитель частоты 1;

#define TIMER16_PRESCALER_2 001 - Делитель частоты 2;

#define TIMER16_PRESCALER_4 010 - Делитель частоты 4;

#define TIMER16_PRESCALER_8 011 - Делитель частоты 8;

#define TIMER16_PRESCALER_16 100 - Делитель частоты 16;

#define TIMER16_PRESCALER_32 101 - Делитель частоты 32;

#define TIMER16_PRESCALER_64 110 - Делитель частоты 64;

#define TIMER16_PRESCALER_128 111 - Делитель частоты 128;

Источник тактового сигнала таймера для синхронизации счетчика

#define TIMER16_COUNTMODE_INTERNAL 0 - Счетчик инкрементируется после каждого внутреннего тактового импульса;

#define TIMER16_COUNTMODE_EXTERNAL 1 - Счетчик увеличивается после каждого действительного тактового импульса на внешнем выводе lnput1;

Полярность синхронизации. Выбор активного фронта при тактировании от внешнего источника

#define TIMER16_ACTIVEEDGE_RISING 0b00 - Нарастающий фронт является активным фронтом, используемым для подсчета;

#define TIMER16_ACTIVEEDGE_FOLLING 0b01 - Спадающий фронт является активным фронтом, используемым для подсчета;

#define TIMER16_ACTIVEEDGE_BOTH 0b10 - Оба фронта являются активными фронтами;

Источник триггера

#define TIMER16_TRIGGER_TIM0_GPIO0_7 0b000 - GPIO0_7 источник триггера для Timer16_0;

#define TIMER16_TRIGGER_TIM1_GPIO1_9 0b000 - GPIO1_9 источник триггера для Timer16_1;

#define TIMER16_TRIGGER_TIM2_GPIO2_3 0b000 - GPIO2_3 источник триггера для Timer16_2;

#define TIMER16_TRIGGER_TIM0_GPIO0_4 0b001 - GPIO0_4 источник триггера для Timer16_0;

#define TIMER16_TRIGGER_TIM1_GPIO1_8 0b001 - GPIO1_8 источник триггера для Timer16_1;

#define TIMER16_TRIGGER_TIM2_GPIO2_2 0b001 - GPIO2_2 источник триггера для Timer16_2;

#define TIMER16_TRIGGER_TIM0_GPIO0_15 0b010 - GPIO0_15 источник триггера для Timer16_0;

#define TIMER16_TRIGGER_TIM1_GPIO1_7 0b010 - GPIO1_7 источник триггера для Timer16_1;

#define TIMER16_TRIGGER_TIM2_GPIO2_1 0b010 - GPIO2_1 источник триггера для Timer16_2;

#define TIMER16_TRIGGER_TIM0_GPIO0_14 0b011 - GPIO0_14 источник триггера для Timer16_0;

#define TIMER16_TRIGGER_TIM1_GPIO1_6 0b011 - GPIO1_6 источник триггера для Timer16_1;

#define TIMER16_TRIGGER_TIM2_GPIO2_0 0b011 - GPIO2_0 источник триггера для Timer16_2;

#define TIMER16_TRIGGER_TEMPERATURE 0b100 - источник триггера окончание преобразования термосенсора;

#define TIMER16_TRIGGER_ADC 0b101 - источник триггера окончание преобразования АЦП;

#define TIMER16_TRIGGER_RTC 0b110 - источник триггера прерывание RTC;

#define TIMER16_TRIGGER_AlARM 0b111 - источник триггера будильник.

Выводы триггеров

#define PORT_AS_GPIO 0b01 - Вторая функция вывода (GPIO);

Полярность синхронизации. Выбор активного фронта при тактировании от внешнего источника

#define TIMER16_TRIGGER_ACTIVEEDGE_SOFTWARE 0b00 - Программный триггера. Запускается при установленном CNTSTRT или SNGSTRT;

#define TIMER16_TRIGGER_ACTIVEEDGE_RISING 0b01 - Нарастающий фронт является активным фронтом;

#define TIMER16_TRIGGER_ACTIVEEDGE_FOLLING 0b10 - Спадающий фронт является активным фронтом;

#define TIMER16_TRIGGER_ACTIVEEDGE_BOTH 0b11 - Оба фронта являются активными фронтами;

Функция тайм-аут

#define TIMER16_TIMEOUT_DISABLE 0 - Триггерное событие, поступаю-щее, когда таймер уже запущен, будет проигнорировано;

#define TIMER16_TIMEOUT_ENABLE 1 - Триггерное событие, поступающее, когда таймер уже запущен, сбросит и перезапустит счетчик;

Режим обновления регистров ARR и CMP

#define TIMER16_PRELOAD_AFTERWRITE 0 - Регистры обновляются после каждого доступа к записи на шине APB;

#define TIMER16_PRELOAD_ENDPERIOD 1 - Регистры обновляются в конце текущего периода Timer16;

Фильтр для внешнего тактового генератора/триггера

#define TIMER16_FILTER_NONE 0b00 - Фильтр отключен;

#define TIMER16_FILTER_2CLOCK 0b01 - Фильтр на 2 такта;

#define TIMER16_FILTER_4CLOCK    0b10 - Фильтр на 4 такта;

#define TIMER16_FILTER_8CLOCK    0b11 - Фильтр на 8 тактов;

Режим энкодера

#define TIMER16_ENCODER_DISABLE 0 - Режим энкодера выключен;

#define TIMER16_ENCODER_ENABLE 1 - Режим энкодера включен;

Структуры

Timer16_ClockConfigTypeDef - настройки тактирования
  • uint8_t Source - источник тактирования;
  • uint8_t Prescaler- делитель частоты.
Timer16_TriggerConfigTypeDef - настройки триггера
  • uint8_t Source - источник триггера. Возможные значения:
    • 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 - источник триггера будильник.
  • uint8_t ActiveEdge - активный фронт. Возможные значения:
    • TIMER16_TRIGGER_ACTIVEEDGE_SOFTWARE - программный триггер. Начало отсчета инициируется программно установкой бита CNTSTRT или SNGSTRT с помощью функций HAL_Timer16_StartSingleMode или HAL_Timer16_StartContinuousMode соответственно.
    • TIMER16_TRIGGER_ACTIVEEDGE_RISING - нарастающий фронт является активным фронтом;
    • TIMER16_TRIGGER_ACTIVEEDGE_FOLLING - спадающий фронт является активным фронтом;
    • TIMER16_TRIGGER_ACTIVEEDGE_BOTH - оба фронта являются активными фронтами.
  • uint8_t TimeOut - Функция time-out. Возможные значения:
    • TIMER16_TIMEOUT_DISABLE - триггерное событие, поступающее, когда таймер уже запущен, будет проигнорировано;
    • TIMER16_TIMEOUT_ENABLE - триггерное событие, поступающее, когда таймер уже запущен, сбросит и перезапустит счетчик.
Timer16_FilterConfigTypeDef - настройки фильтра
  • uint8_t ExternalClock - фильтр для внешнего тактового генератора. Возможные значения:
    • TIMER16_FILTER_NONE - фильтр отключен;
    • TIMER16_FILTER_2CLOCK - фильтр на 2 такта;
    • TIMER16_FILTER_4CLOCK - Фильтр на 4 такта;
    • TIMER16_FILTER_8CLOCK - Фильтр на 8 тактов.
  • uint8_t Trigger - фильтр для триггера. Возможные значения:
    • TIMER16_FILTER_NONE - фильтр отключен;
    • TIMER16_FILTER_2CLOCK - фильтр на 2 такта;
    • TIMER16_FILTER_4CLOCK - Фильтр на 4 такта;
    • TIMER16_FILTER_8CLOCK - Фильтр на 8 тактов.
Timer16_HandleTypeDef - настройки Timer16
  • TIMER16_TypeDef *Instance - базовый адрес регистров Timer16. Возможные значения:
    • TIMER16_0;
    • TIMER16_1;
    • TIMER16_2.
  • Timer16_ClockConfigTypeDef Clock - настройки тактирования;
  • uint8_t CountMode - источник синхронизации. Возможные значения:
    • TIMER16_COUNTMODE_INTERNAL - Счетчик инкрементируется после каждого внутреннего тактового импульса;
    • TIMER16_COUNTMODE_EXTERNAL - Счетчик увеличивается после каждого действительного тактового импульса на внешнем выводе lnput1.
  • uint8_t ActiveEdge - активный фронт;
    • TIMER16_ACTIVEEDGE_RISING - Нарастающий фронт является активным;
    • TIMER16_ACTIVEEDGE_FOLLING - Спадающий фронт является активным;
    • TIMER16_ACTIVEEDGE_BOTH - Оба фронта являются активными фронтами.
  • uint16_t Period - верхнее значение счета. Возможное значение - 16 битное число в пределах от 0 до 65535;
  • uint8_t Preload - режим записи в ARR и CMP. Возможные значения:
    • TIMER16_PRELOAD_AFTERWRITE - Регистры обновляются после каждого доступа к записи на шине APB;
    • TIMER16_PRELOAD_ENDPERIOD - Регистры обновляются в конце текущего периода Timer16.
  • Timer16_TriggerConfigTypeDef Trigger - настройки триггера;
  • Timer16_FilterConfigTypeDef Filter - настройки фильтра;
  • uint8_t EncoderMode - режим энкодера. Возможные значения:
    • TIMER16_ENCODER_DISABLE - режим энкодера выключен;
    • TIMER16_ENCODER_ENABLE - режим энкодера включен.

Функции

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, но не по двум (нарастающему и спадающему фронту) одновременно.

При использовании данной функции таймер выключается. Это необходимо для записи в регистр CFGR.

Аргументы:

  • Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
    • TIMER16_0;
    • TIMER16_1;
    • TIMER16_2.
  • uint8_t ActiveEdge - Активный фронт. Возможные значения:
    • TIMER16_ACTIVEEDGE_RISING - Нарастающий фронт является активным. Подрежим энкодера 1;
    • TIMER16_ACTIVEEDGE_FOLLING - Спадающий фронт является активным. Подрежим энкодера 2;
    • TIMER16_ACTIVEEDGE_BOTH - Оба фронта являются активными фронтами. Подрежим энкодера 3.
void HAL_Timer16_SetSourceClock(Timer16_HandleTypeDef *htimer16, uint8_t SourceClock)

Описание:

Выбрать источник тактирования, который будет использовать Timer16.

При использовании данной функции таймер выключается. Это необходимо для записи в регистр CFGR.

Аргументы:

  • 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, но не по двум (нарастающему и спадающему фронту) одновременно.

При использовании данной функции таймер выключается. Это необходимо для записи в регистр CFGR.

Аргументы:

  • 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.

При использовании данной функции таймер выключается. Это необходимо для записи в регистр CFGR.

Аргументы:

  • Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
    • TIMER16_0;
    • TIMER16_1;
    • TIMER16_2.
void HAL_Timer16_SetPreload(Timer16_HandleTypeDef *htimer16, uint8_t Preload)

Описание:

Задать режим обновления регистров ARR - значение автоматической перезагрузки и CMP - значение сравнения.

Для записи в ARR и CMP таймер должен быть включен.

При использовании данной функции таймер выключается. Это необходимо для записи в регистр CFGR.

Аргументы:

  • 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 триггерных входов.

При использовании данной функции таймер выключается. Это необходимо для записи в регистр CFGR.

Аргументы:

  • 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_15 - GPIO0_15 источник триггера для Timer16_0;
    • TIMER16_TRIGGER_TIM1_GPIO1_7 - GPIO1_7 источник триггера для Timer16_1;
    • TIMER16_TRIGGER_TIM2_GPIO2_1 - GPIO2_1 источник триггера для Timer16_2;
    • TIMER16_TRIGGER_TIM0_GPIO0_14 - GPIO0_14 источник триггера для 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 триггерных входов.

При использовании данной функции таймер выключается. Это необходимо для записи в регистр CFGR.

Аргументы:

  • 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 пробуждается по событию совпадения сравнения.

При использовании данной функции таймер выключается. Это необходимо для записи в регистр CFGR.

Аргументы:

  • 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 сначала должен быть подан внутренний источник синхронизации.

В случае отсутствия внутреннего тактового сигнала цифровой фильтр должен быть деактивирован.

При использовании данной функции таймер выключается. Это необходимо для записи в регистр CFGR.

Аргументы:

  • 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 сначала должен быть подан внутренний источник синхронизации.

В случае отсутствия внутреннего тактового сигнала цифровой фильтр должен быть деактивирован.

При использовании данной функции таймер выключается. Это необходимо для записи в регистр CFGR.

Аргументы:

  • 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.

При использовании данной функции таймер выключается. Это необходимо для записи в регистр CFGR.

Аргументы:

  • 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.
void HAL_Timer16_StartOneShot(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.
void HAL_Timer16_StartSetOnes(Timer16_HandleTypeDef *htimer16, uint16_t Period, uint16_t Compare)

Описание:

Запустить таймер в однократном режиме.

При достижении значения CMP сигнал на выводе Output сменит свое состояние.

Аргументы:

  • Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
    • TIMER16_0;
    • TIMER16_1;
    • TIMER16_2.
  • uint16_t Period - значение автоматической перезагрузки. Число от 0 до 65535;
  • uint16_t Compare - значение при достижении которого сигнал на выводе Output сменит свое состояние. Число от 0 до 65534; Данное число всегда должно быть меньше значения Period.
void HAL_Timer16_ClearTriggerFlag(Timer16_HandleTypeDef *htimer16)

Описание:

Очистить флаг триггера - EXTTRIG.

Аргументы:

  • Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
    • TIMER16_0;
    • TIMER16_1;
    • TIMER16_2.
void HAL_Timer16_WaitTrigger(Timer16_HandleTypeDef *htimer16)

Описание:

Ожидать флаг триггера - EXTTRIG.

Аргументы:

  • Timer16_HandleTypeDef *htimer16 - указатель на структуру с настройками Timer16. Возможные значения:
    • TIMER16_0;
    • TIMER16_1;
    • TIMER16_2.