HAL Timer16: различия между версиями

Материал из MIK32 микроконтроллер
Нет описания правки
Нет описания правки
Строка 233: Строка 233:


===== '''void HAL_Timer16_ClearCMPFlag(Timer16_HandleTypeDef *htimer16)''' =====
===== '''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)''' =====
===== '''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)''' =====
===== '''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)''' =====
===== '''void HAL_Timer16_SetTimeOut(Timer16_HandleTypeDef *htimer16, uint8_t TimeOut)''' =====

Версия от 13:26, 8 февраля 2023

Константы

Структуры

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)
void HAL_Timer16_SetFilterExternalClock(Timer16_HandleTypeDef *htimer16, uint8_t FilterExternalClock)
void HAL_Timer16_SetFilterTrigger(Timer16_HandleTypeDef *htimer16, uint8_t FilterTrigger)
void HAL_Timer16_SetEncoderMode(Timer16_HandleTypeDef *htimer16, uint8_t EncoderMode)
void HAL_Timer16_Init(Timer16_HandleTypeDef *htimer16)
uint16_t HAL_Timer16_GetCounterValue(Timer16_HandleTypeDef *htimer16)
uint8_t HAL_Timer16_CheckCMP(Timer16_HandleTypeDef *htimer16)
void HAL_Timer16_WaitCMP(Timer16_HandleTypeDef *htimer16)
void HAL_Timer16_StartSingleMode(Timer16_HandleTypeDef *htimer16)
void HAL_Timer16_StartContinuousMode(Timer16_HandleTypeDef *htimer16)
void HAL_Timer16_InvertOutput(Timer16_HandleTypeDef *htimer16)
void HAL_Timer16_StartPWM(Timer16_HandleTypeDef *htimer16, uint16_t Period, uint16_t Compare)
void HAL_Timer16_StartOneShot(Timer16_HandleTypeDef *htimer16, uint16_t Period, uint16_t Compare)
void HAL_Timer16_StartSetOnes(Timer16_HandleTypeDef *htimer16, uint16_t Period, uint16_t Compare)
void HAL_Timer16_ClearTriggerFlag(Timer16_HandleTypeDef *htimer16)
void HAL_Timer16_WaitTrigger(Timer16_HandleTypeDef *htimer16)