__STATIC_INLINE void LL_TIM_EnableCounter (TIM_TypeDef * TIMx)
Разрешает работу счетчика. Устанавливает бит CEN.
- TIMx – таймер (TIM1, TIM2,… ).
Ничего не возвращает.
LL_TIM_EnableCounter(TIM1); // разрешить счетчик 1
__STATIC_INLINE void LL_TIM_DisableCounter (TIM_TypeDef * TIMx)
Запрещает работу счетчика. Сбрасывает бит CEN.
- TIMx – таймер (TIM1, TIM2,… ).
Ничего не возвращает.
LL_TIM_DisableCounter(TIM1); // запретить счетчик 1
__STATIC_INLINE uint32_t LL_TIM_IsEnabledCounter (TIM_TypeDef * TIMx)
Проверяет, разрешена ли работа счетчика.
- TIMx – таймер (TIM1, TIM2,… ).
Возвращает: 1 или 0 (счетчик разрешен или нет).
if( LL_TIM_IsEnabledCounter(TIM1) ) {
// счетчик разрешен
}
__STATIC_INLINE void LL_TIM_EnableUpdateEvent (TIM_TypeDef * TIMx)
Разрешает перезагрузку счетчика. Сбрасывает бит UDIS.
- TIMx – таймер (TIM1, TIM2,… ).
Ничего не возвращает.
LL_TIM_EnableUpdateEvent(TIM1); // разрешить перезагрузку
__STATIC_INLINE void LL_TIM_DisableUpdateEvent (TIM_TypeDef * TIMx)
Запрещает перезагрузку счетчика. Устанавливает бит UDIS.
- TIMx – таймер (TIM1, TIM2,… ).
Ничего не возвращает.
LL_TIM_DisableUpdateEvent(TIM1); // запрет перезагрузки
__STATIC_INLINE uint32_t LL_TIM_IsEnabledUpdateEvent (TIM_TypeDef * TIMx)
Проверяет, разрешена ли перезагрузка счетчика.
- TIMx – таймер (TIM1, TIM2,… ).
Возвращает: 1 или 0 (перезагрузка разрешена или нет).
if( LL_TIM_IsEnabledUpdateEvent(TIM1) ) {
// перезагрузка разрешена
}
__STATIC_INLINE void LL_TIM_SetUpdateSource (TIM_TypeDef * TIMx, uint32_t UpdateSource)
Задает логику формирования события перезагрузки (UEV).
- TIMx – таймер (TIM1, TIM2,… ).
- UpdateSource – режим формирования UEV:
- LL_TIM_UPDATESOURCE_REGULAR – событие формируется по переполнению счетчика, программной инициацией (бит UG) и сигналом ведомого таймера.
- LL_TIM_UPDATESOURCE_COUNTER - событие формируется только по переполнению /обнулению счетчика.
Ничего не возвращает.
LL_TIM_SetUpdateSource(TIM1, LL_TIM_UPDATESOURCE_COUNTER ); // только счетчик
__STATIC_INLINE uint32_t LL_TIM_GetUpdateSource (TIM_TypeDef * TIMx)
Возвращает код логики формирования события перезагрузки (UEV).
TIMx – таймер (TIM1, TIM2,… ).
Возвращает:
LL_TIM_UPDATESOURCE_REGULAR – событие формируется по переполнению счетчика, программной инициацией (бит UG) и сигналом ведомого таймера.
LL_TIM_UPDATESOURCE_COUNTER - событие формируется только по переполнению /обнулению счетчика.
if( LL_TIM_GetUpdateSource(TIM1) == LL_TIM_UPDATESOURCE_COUNTER ) {
// UEV только по счетчику
}
__STATIC_INLINE void LL_TIM_SetCounterMode (TIM_TypeDef * TIMx, uint32_t CounterMode)
Устанавливает режим счетчика.
- TIMx – таймер (TIM1, TIM2,… ).
- CounterMode – режим счета:
- LL_TIM_COUNTERMODE_UP – прямой счет;
- LL_TIM_COUNTERMODE_DOWN – реверсивный счет;
- LL_TIM_COUNTERMODE_CENTER_UP – двунаправленный счет, флаг прерывания генерируется при счете в прямом направлении;
- LL_TIM_COUNTERMODE_CENTER_DOWN – двунаправленный счет, флаг прерывания генерируется при счете в обратном направлении;
- LL_TIM_COUNTERMODE_CENTER_UP_DOWN – двунаправленный счет, флаг прерывания генерируется при счете в обоих направлениях.
Ничего не возвращает.
LL_TIM_SetCounterMode(TIM1, LL_TIM_COUNTERMODE_UP); // прямой счет
__STATIC_INLINE uint32_t LL_TIM_GetCounterMode (TIM_TypeDef * TIMx)
Считывает режим счета.
TIMx – таймер (TIM1, TIM2,… ).
Возвращает:
- LL_TIM_COUNTERMODE_UP – прямой счет;
- LL_TIM_COUNTERMODE_DOWN – реверсивный счет;
- LL_TIM_COUNTERMODE_CENTER_UP – двунаправленный счет, флаг прерывания генерируется при счете в прямом направлении;
- LL_TIM_COUNTERMODE_CENTER_DOWN – двунаправленный счет, флаг прерывания генерируется при счете в обратном направлении;
- LL_TIM_COUNTERMODE_CENTER_UP_DOWN – двунаправленный счет, флаг прерывания генерируется при счете в обоих направлениях.
if( LL_TIM_GetCounterMode(TIM1) == LL_TIM_COUNTERMODE_UP ) {
// прямой счет
}
__STATIC_INLINE void LL_TIM_EnableARRPreload (TIM_TypeDef * TIMx)
Разрешает буферизацию регистра перезагрузки. Устанавливает бит ARPE.
TIMx – таймер (TIM1, TIM2,… ).
Ничего не возвращает.
LL_TIM_EnableARRPreload(TIM1); // регистр перезагрузки буферизирован
__STATIC_INLINE void LL_TIM_DisableARRPreload (TIM_TypeDef * TIMx)
Запрещает буферизацию регистра перезагрузки. Сбрасывает бит ARPE.
TIMx – таймер (TIM1, TIM2,… ).
Ничего не возвращает.
LL_TIM_DisableARRPreload(TIM1); // регистр перезагрузки небуферизирован
__STATIC_INLINE uint32_t LL_TIM_IsEnabledARRPreload (TIM_TypeDef * TIMx)
Проверяет, разрешена ли буферизация регистра перезагрузки.
- TIMx – таймер (TIM1, TIM2,… ).
Возвращает: 1 или 0 (буферизация разрешена или нет).
if( LL_TIM_IsEnabledARRPreload(TIM1) ) {
// буферизация разрешена
}
__STATIC_INLINE void LL_TIM_SetClockDivision (TIM_TypeDef * TIMx, uint32_t ClockDivision)
Задает коэффициент деления входной частоты для формирования тактовых импульсов цифровых фильтров и генератора ”мертвого” времени.
- TIMx – таймер (TIM1, TIM2, … ).
- ClockDivision – коэффициент деления частоты:
- LL_TIM_CLOCKDIVISION_DIV1 – 1;
- LL_TIM_CLOCKDIVISION_DIV2 – 2;
- LL_TIM_CLOCKDIVISION_DIV4 – 4.
Ничего не возвращает.
LL_TIM_SetClockDivision(TIM1, LL_TIM_CLOCKDIVISION_DIV2); // /2
__STATIC_INLINE uint32_t LL_TIM_GetClockDivision (TIM_TypeDef * TIMx)
Считывает коэффициент деления входной частоты для формирования тактовых импульсов цифровых фильтров и генератора ”мертвого” времени.
- TIMx – таймер (TIM1, TIM2, … ).
Возвращает коэффициент деления:
- LL_TIM_CLOCKDIVISION_DIV1 – 1;
- LL_TIM_CLOCKDIVISION_DIV2 – 2;
- LL_TIM_CLOCKDIVISION_DIV4 – 4.
if( LL_TIM_GetClockDivision(TIM1) == LL_TIM_CLOCKDIVISION_DIV2 ) {
// частота / 2
}
__STATIC_INLINE void LL_TIM_SetCounter (TIM_TypeDef * TIMx, uint32_t Counter)
Загружает значение в счетчик.
- TIMx – таймер (TIM1, TIM2, … ).
- Counter – загружаемое значение (0 ... 65535).
Ничего не возвращает.
LL_TIM_SetCounter(TIM1, 0); // обнулить счетчик
__STATIC_INLINE uint32_t LL_TIM_GetCounter (TIM_TypeDef * TIMx)
Считывает значение счетчика.
- TIMx – таймер (TIM1, TIM2, … ).
Возвращает значение счетчика.
counter = LL_TIM_GetCounter(TIM1); // считать счетчик
__STATIC_INLINE uint32_t LL_TIM_GetDirection
Возвращает текущее направление счета.
- TIMx – таймер (TIM1, TIM2, … ).
Возвращает направление счета:
- LL_TIM_COUNTERDIRECTION_UP – прямой счет;
- LL_TIM_COUNTERDIRECTION_DOWN – реверсивный счет.
if( LL_TIM_GetDirection(TIM1) == LL_TIM_COUNTERDIRECTION_UP ) {
// прямой счет
}
__STATIC_INLINE void LL_TIM_SetPrescaler (TIM_TypeDef * TIMx, uint32_t Prescaler)
Установка значения предделителя (PSC).
- TIMx – таймер (TIM1, TIM2, … ).
- Prescaler – значение предделителя (0 ... 65535).
Ничего не возвращает.
LL_TIM_SetPrescaler(TIM1, 720); // предделитель = 720
__STATIC_INLINE uint32_t LL_TIM_GetPrescaler (TIM_TypeDef * TIMx)
Возвращает значение регистра предделителя (PSC).
- TIMx – таймер (TIM1, TIM2,… ).
Возвращает значение предделителя.
if( LL_TIM_GetPrescaler(TIM1) == 720 ) {
// PSC = 720
}
__STATIC_INLINE void LL_TIM_SetAutoReload (TIM_TypeDef * TIMx, uint32_t AutoReload)
Установка значения перезагрузки (регистра перезагрузки).
- TIMx – таймер (TIM1, TIM2,… ).
- AutoReload – значение перезагрузки (0 … 65535).
Ничего не возвращает.
LL_TIM_SetAutoReload(TIM1, 10000); // перезагрузка при 10000
__STATIC_INLINE uint32_t LL_TIM_GetAutoReload (TIM_TypeDef * TIMx)
- TIMx – таймер (TIM1, TIM2,… ).
Возвращает значение регистра перезагрузки.
autoReload = LL_TIM_GetAutoReload(TIM1); // чтение регистра перезагрузки
__STATIC_INLINE void LL_TIM_SetRepetitionCounter (TIM_TypeDef * TIMx, uint32_t RepetitionCounter)
Установка регистра счетчика повторов (RCR).
- TIMx – таймер (TIM1, TIM2, … ).
- RepetitionCounter – значение регистра счетчика повторов (0 … 255).
Ничего не возвращает.
LL_TIM_SetRepetitionCounter(TIM1, 2); // 2 повтора
__STATIC_INLINE uint32_t LL_TIM_GetRepetitionCounter (TIM_TypeDef * TIMx)
Чтение регистра счетчика повторов (RCR).
- TIMx – таймер (TIM1, TIM2,… ).
Возвращает число повторов.
if( LL_TIM_GetRepetitionCounter(TIM1) == 2 ) {
// 2 повтора
}
__STATIC_INLINE void LL_TIM_EnableExternalClock (TIM_TypeDef * TIMx)
Разрешает внешнее тактирование в режиме 2.
- TIMx – таймер (TIM1, TIM2, … ).
Не возвращает ничего.
LL_TIM_EnableExternalClock(TIM1); // разрешить внешнее тактирование 2
__STATIC_INLINE void LL_TIM_DisableExternalClock (TIM_TypeDef * TIMx)
Запрещает внешнее тактирование в режиме 2.
- TIMx – таймер (TIM1, TIM2,… ).
Не возвращает ничего.
LL_TIM_DisableExternalClock(TIM1); // запретить внешнее тактирование 2
__STATIC_INLINE uint32_t LL_TIM_IsEnabledExternalClock (TIM_TypeDef * TIMx)
Проверка, разрешено ли внешнее тактирование в режиме 2.
- TIMx – таймер (TIM1, TIM2,… ).
Возвращает 1 или 0 (разрешено или запрещено).
if( LL_TIM_IsEnabledExternalClock(TIM1) == 1 ) {
// внешнее тактирование разрешено
}
__STATIC_INLINE void LL_TIM_SetClockSource (TIM_TypeDef * TIMx, uint32_t ClockSource)
Задает источник тактирования счетчика.
- TIMx – таймер (TIM1, TIM2, … ).
- ClockSource – источник тактирования:
- LL_TIM_CLOCKSOURCE_INTERNAL – внутреннее;
- LL_TIM_CLOCKSOURCE_EXT_MODE1 – внешнее режим 1;
- LL_TIM_CLOCKSOURCE_EXT_MODE2 – внешнее режим 2.
Не возвращает ничего.
LL_TIM_SetClockSource(TIM1, LL_TIM_CLOCKSOURCE_INTERNAL); // внутреннее тактирование
__STATIC_INLINE void LL_TIM_ClearFlag_UPDATE (TIM_TypeDef * TIMx)
Сбрасывает флаг прерывания по переполнению (UIF).
- TIMx – таймер (TIM1, TIM2,… ).
Не возвращает ничего.
LL_TIM_ClearFlag_UPDATE(TIM1); // сброс флага прерывания
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_UPDATE (TIM_TypeDef * TIMx)
Проверка состояния флага прерывания по переполнению (UIF).
- TIMx – таймер (TIM1, TIM2, … ).
Возвращает 1 или 0 (флаг активен или нет).
if( LL_TIM_IsActiveFlag_UPDATE(TIM1) == 1 ) {
// требование прерывания
}
__STATIC_INLINE void LL_TIM_EnableIT_UPDATE (TIM_TypeDef * TIMx)
Разрешает прерывание по переполнению. Устанавливает бит (UIE).
- TIMx – таймер (TIM1, TIM2,… ).
Не возвращает ничего.
LL_TIM_EnableIT_UPDATE(TIM1); // разрешение прерывания
__STATIC_INLINE void LL_TIM_DisableIT_UPDATE (TIM_TypeDef * TIMx)
Запрещает прерывание по переполнению. Устанавливает бит (UIE).
- TIMx – таймер (TIM1, TIM2,… ).
Не возвращает ничего.
LL_TIM_DisableIT_UPDATE (TIM1); // запрет прерывания
__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_UPDATE (TIM_TypeDef * TIMx)
Проверка, разрешено ли прерывание по переполнению (бит UIE).
- TIMx – таймер (TIM1, TIM2, … ).
Возвращает 1 или 0 (разрешено или нет).
if( LL_TIM_IsEnabledIT_UPDATE(TIM1) == 1 ) {
// прерывание разрешено
}
__STATIC_INLINE void LL_TIM_GenerateEvent_UPDATE (TIM_TypeDef * TIMx)
Программная генерация события переполнения (бит UG).
- TIMx – таймер (TIM1, TIM2, … ).
Не возвращает ничего.
LL_TIM_GenerateEvent_UPDATE(TIM1); // формирование перезагрузки
ErrorStatus LL_TIM_DeInit (TIM_TypeDef * TIMx)
Установка регистров таймера в состояние после сброса.
- TIMx – таймер (TIM1, TIM2,… ).
Возвращает:
- SUCCESS – успешно;
- ERROR – ошибка.
LL_TIM_DeInit(TIM1); // сброс регистров таймера
void LL_TIM_StructInit (LL_TIM_InitTypeDef * TIM_InitStruct)
Установка полей структуры инициализации типа LL_TIM_InitTypeDef в состояние после сброса.
- TIM_InitStruct – указатель на структуру инициализации типа LL_TIM_InitTypeDef.
Не возвращает ничего.
LL_TIM_InitTypeDef TIM_InitStruct;
LL_TIM_StructInit(&TIM_InitStruct); // сброс
ErrorStatus LL_TIM_Init (TIM_TypeDef * TIMx, LL_TIM_InitTypeDef * TIM_InitStruct)
Устанавливает конфигурацию таймера.
- TIMx – таймер (TIM1, TIM2, … ).
- TIM_InitStruct – указатель на структуру инициализации типа LL_TIM_InitTypeDef.
Возвращает:
- SUCCESS – успешно;
- ERROR – ошибка.
Структура инициализации.
typedef struct {
uint16_t Prescaler; // предделитель (0 … 65535)
uint32_t CounterMode; // режим счета
uint32_t Autoreload; // значение перезагрузки (0 … 65535)
uint32_t ClockDivision; // делитель для цифровой фильтрации и формирования мертвого времени
uint8_t RepetitionCounter; // значение повторов (0 … 255)
} LL_TIM_InitTypeDef;
Элемент CounterMode (режим счета) может принимать значения:
- LL_TIM_COUNTERMODE_UP – прямой счет;
- LL_TIM_COUNTERMODE_DOWN – реверсивный счет;
- LL_TIM_COUNTERMODE_CENTER_UP – двунаправленный счет, флаг прерывания генерируется при счете в прямом направлении;
- LL_TIM_COUNTERMODE_CENTER_DOWN – двунаправленный счет, флаг прерывания генерируется при счете в обратном направлении;
- LL_TIM_COUNTERMODE_CENTER_UP_DOWN – двунаправленный счет, флаг прерывания генерируется при счете в обоих направлениях.
Элемент ClockDivision может принимать значения:
- LL_TIM_CLOCKDIVISION_DIV1 – 1;
- LL_TIM_CLOCKDIVISION_DIV2 – 2;
- LL_TIM_CLOCKDIVISION_DIV4 – 4.
Пример инициализации таймера.
LL_TIM_InitTypeDef TIM_InitStruct = {0};
TIM_InitStruct.Prescaler = 719;
TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP;
TIM_InitStruct.Autoreload = 25000;
TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1;
TIM_InitStruct.RepetitionCounter = 0;
LL_TIM_Init(TIM1, &TIM_InitStruct); // установка конфигурации