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

Материал из MIK32 микроконтроллер
Нет описания правки
Нет описания правки
Строка 62: Строка 62:
== '''Функции''' ==
== '''Функции''' ==


==== '''void HAL_Timer16_Disable(Timer16_HandleTypeDef *htimer16)''' ====
===== '''void HAL_Timer16_Disable(Timer16_HandleTypeDef *htimer16)''' =====
Описание:  
Описание:  


Строка 74: Строка 74:
** TIMER16_2.
** TIMER16_2.


==== '''void HAL_Timer16_Enable(Timer16_HandleTypeDef *htimer16)''' ====
===== '''void HAL_Timer16_Enable(Timer16_HandleTypeDef *htimer16)''' =====
Описание:  
Описание:  


Строка 86: Строка 86:
** TIMER16_2.
** TIMER16_2.


==== '''void HAL_Timer16_SetActiveEdge(Timer16_HandleTypeDef *htimer16, uint8_t ActiveEdge)''' ====
===== '''void HAL_Timer16_SetActiveEdge(Timer16_HandleTypeDef *htimer16, uint8_t ActiveEdge)''' =====
Описание:  
Описание:  


Строка 106: Строка 106:
** TIMER16_ACTIVEEDGE_BOTH - Оба фронта являются активными фронтами.
** TIMER16_ACTIVEEDGE_BOTH - Оба фронта являются активными фронтами.


==== '''void HAL_Timer16_SetSourceClock(Timer16_HandleTypeDef *htimer16, uint8_t SourceClock)''' ====
===== '''void HAL_Timer16_SetSourceClock(Timer16_HandleTypeDef *htimer16, uint8_t SourceClock)''' =====
Описание:
Описание:


Строка 126: Строка 126:
** TIMER16_SOURCE_EXTERNAL_INPUT1 - Тактирование от внешнего вывода Input1.
** TIMER16_SOURCE_EXTERNAL_INPUT1 - Тактирование от внешнего вывода Input1.


==== '''void HAL_Timer16_SetCountMode(Timer16_HandleTypeDef *htimer16, uint8_t CountMode)''' ====
===== '''void HAL_Timer16_SetCountMode(Timer16_HandleTypeDef *htimer16, uint8_t CountMode)''' =====
Описание:
Описание:


Строка 143: Строка 143:
**TIMER16_COUNTMODE_EXTERNAL - Счетчик увеличивается после каждого действительного тактового импульса на внешнем выводе lnput1.
**TIMER16_COUNTMODE_EXTERNAL - Счетчик увеличивается после каждого действительного тактового импульса на внешнем выводе lnput1.


==== '''void HAL_Timer16_ClockInit(Timer16_HandleTypeDef *htimer16)''' ====
===== '''void HAL_Timer16_ClockInit(Timer16_HandleTypeDef *htimer16)''' =====
Описание:
Описание:


Выбрать источник тактового сигнала для синхронизации счетчика Timer16.
Инициализация тактирования в соответствии с параметрами 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 таймер должен быть включен.


Аргументы:  
Аргументы:  
Строка 154: Строка 168:
** TIMER16_1;
** TIMER16_1;
** TIMER16_2.
** TIMER16_2.
*uint8_t Preload - режим обновления регистров ARR и CMP. Возможные значения:
**TIMER16_PRELOAD_AFTERWRITE - Регистры обновляются после каждого доступа к записи на шине APB;
**TIMER16_PRELOAD_ENDPERIOD - Регистры обновляются в конце текущего периода Timer16.
===== '''void HAL_Timer16_WaitARROK(Timer16_HandleTypeDef *htimer16)''' =====
Описание:
Ожидание флага ARROK, установка которого означает успешную запись в регистр ARR - значение автоматической перезагрузки.


==== '''void HAL_Timer16_SetPreload(Timer16_HandleTypeDef *htimer16, uint8_t Preload)''' ====
Аргументы:


==== '''void HAL_Timer16_WaitARROK(Timer16_HandleTypeDef *htimer16)''' ====
* Timer16_HandleTypeDef *htimer16 - Экземпляр Timer16. Возможные значения:
** TIMER16_0;
** TIMER16_1;
** TIMER16_2.


==== '''void HAL_Timer16_WaitCMPOK(Timer16_HandleTypeDef *htimer16)''' ====
===== '''void HAL_Timer16_WaitCMPOK(Timer16_HandleTypeDef *htimer16)''' =====


==== '''void HAL_Timer16_SetARR(Timer16_HandleTypeDef *htimer16, uint16_t Period)''' ====
===== '''void HAL_Timer16_SetARR(Timer16_HandleTypeDef *htimer16, uint16_t Period)''' =====


==== '''void HAL_Timer16_SetCMP(Timer16_HandleTypeDef *htimer16, uint16_t Compare)''' ====
===== '''void HAL_Timer16_SetCMP(Timer16_HandleTypeDef *htimer16, uint16_t Compare)''' =====


==== '''void HAL_Timer16_ClearCMPFlag(Timer16_HandleTypeDef *htimer16)''' ====
===== '''void HAL_Timer16_ClearCMPFlag(Timer16_HandleTypeDef *htimer16)''' =====


==== '''void HAL_Timer16_SelectTrigger(Timer16_HandleTypeDef *htimer16, uint8_t TriggerSource)''' ====
===== '''void HAL_Timer16_SelectTrigger(Timer16_HandleTypeDef *htimer16, uint8_t TriggerSource)''' =====


==== '''void HAL_Timer16_SetTriggerEdge(Timer16_HandleTypeDef *htimer16, uint8_t TriggerEdge)''' ====
===== '''void HAL_Timer16_SetTriggerEdge(Timer16_HandleTypeDef *htimer16, uint8_t TriggerEdge)''' =====


==== '''void HAL_Timer16_SetTimeOut(Timer16_HandleTypeDef *htimer16, uint8_t TimeOut)''' ====
===== '''void HAL_Timer16_SetTimeOut(Timer16_HandleTypeDef *htimer16, uint8_t TimeOut)''' =====


==== '''void HAL_Timer16_SetFilterExternalClock(Timer16_HandleTypeDef *htimer16, uint8_t FilterExternalClock)''' ====
===== '''void HAL_Timer16_SetFilterExternalClock(Timer16_HandleTypeDef *htimer16, uint8_t FilterExternalClock)''' =====


==== '''void HAL_Timer16_SetFilterTrigger(Timer16_HandleTypeDef *htimer16, uint8_t FilterTrigger)''' ====
===== '''void HAL_Timer16_SetFilterTrigger(Timer16_HandleTypeDef *htimer16, uint8_t FilterTrigger)''' =====


==== '''void HAL_Timer16_SetEncoderMode(Timer16_HandleTypeDef *htimer16, uint8_t EncoderMode)''' ====
===== '''void HAL_Timer16_SetEncoderMode(Timer16_HandleTypeDef *htimer16, uint8_t EncoderMode)''' =====


==== '''void HAL_Timer16_Init(Timer16_HandleTypeDef *htimer16)''' ====
===== '''void HAL_Timer16_Init(Timer16_HandleTypeDef *htimer16)''' =====


==== '''uint16_t HAL_Timer16_GetCounterValue(Timer16_HandleTypeDef *htimer16)''' ====
===== '''uint16_t HAL_Timer16_GetCounterValue(Timer16_HandleTypeDef *htimer16)''' =====


==== '''uint8_t HAL_Timer16_CheckCMP(Timer16_HandleTypeDef *htimer16)''' ====
===== '''uint8_t HAL_Timer16_CheckCMP(Timer16_HandleTypeDef *htimer16)''' =====


==== '''void HAL_Timer16_WaitCMP(Timer16_HandleTypeDef *htimer16)''' ====
===== '''void HAL_Timer16_WaitCMP(Timer16_HandleTypeDef *htimer16)''' =====


==== '''void HAL_Timer16_StartSingleMode(Timer16_HandleTypeDef *htimer16)''' ====
===== '''void HAL_Timer16_StartSingleMode(Timer16_HandleTypeDef *htimer16)''' =====


==== '''void HAL_Timer16_StartContinuousMode(Timer16_HandleTypeDef *htimer16)''' ====
===== '''void HAL_Timer16_StartContinuousMode(Timer16_HandleTypeDef *htimer16)''' =====


==== '''void HAL_Timer16_InvertOutput(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_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_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_StartSetOnes(Timer16_HandleTypeDef *htimer16, uint16_t Period, uint16_t Compare)''' =====


==== '''void HAL_Timer16_ClearTriggerFlag(Timer16_HandleTypeDef *htimer16)''' ====
===== '''void HAL_Timer16_ClearTriggerFlag(Timer16_HandleTypeDef *htimer16)''' =====


==== '''void HAL_Timer16_WaitTrigger(Timer16_HandleTypeDef *htimer16)''' ====
===== '''void HAL_Timer16_WaitTrigger(Timer16_HandleTypeDef *htimer16)''' =====

Версия от 12:40, 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)
void HAL_Timer16_SetARR(Timer16_HandleTypeDef *htimer16, uint16_t Period)
void HAL_Timer16_SetCMP(Timer16_HandleTypeDef *htimer16, uint16_t Compare)
void HAL_Timer16_ClearCMPFlag(Timer16_HandleTypeDef *htimer16)
void HAL_Timer16_SelectTrigger(Timer16_HandleTypeDef *htimer16, uint8_t TriggerSource)
void HAL_Timer16_SetTriggerEdge(Timer16_HandleTypeDef *htimer16, uint8_t TriggerEdge)
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)