ELIOT1 HAL
Загрузка...
Поиск...
Не найдено
Драйвер модуля TIM

Драйвер таймеров общего назначения Подробнее...

Файлы

файл  hal_timer.h
 Интерфейс драйвера модуля таймеров общего назначения
 

Структуры данных

struct  timer_hardware_config
 Конфигурация аппаратной части таймера общего назначения Подробнее...
 

Макросы

#define TIMER_COUNT   3
 
#define TIMER_HARDWARE_FIELD_MAX   (0xFFFFFFFFUL)
 
#define TIMER_SOFTWARE_FIELD_MAX   (0xFFFFFFFFFFFFFFFFULL)
 
#define TIMER_SOFTWARE_FIELD_HIGH_OFFSET   (32)
 

Определения типов

typedef void(* callback_t) (TIM_Type *base)
 Функция обратного вызова
 

Перечисления

enum  timer_status
 Статусы драйвера таймеров общего назначения Подробнее...
 
enum  timer_type_of_counting
 Режимы счета импульсов таймером Подробнее...
 
enum  timer_work_mode
 Режим работы таймера общего назначения Подробнее...
 

Интерфейс драйвера

enum timer_status TIMER_Init (TIM_Type *base, struct timer_hardware_config config, enum timer_work_mode mode, callback_t callback, uint32_t ticks_h)
 Инициализация таймера общего назначения
 
enum timer_status TIMER_Deinit (TIM_Type *base)
 Деинициализация таймера общего назначения
 
enum timer_status TIMER_Run (TIM_Type *base)
 Запуск таймера общего назначения
 
enum timer_status TIMER_Stop (TIM_Type *base)
 Остановка таймера общего назначения
 
enum timer_status TIMER_Reset (TIM_Type *base)
 Сброс таймера общего назначения
 
uint64_t TIMER_GetTicks (TIM_Type *base)
 Получение количества тиков
 
enum timer_status TIMER_SetTick (TIM_Type *base, uint64_t ticks)
 Установка количества тиков
 
enum timer_status TIMER_GetAPIStatus ()
 Получение результата выполнения последней функции
 
static uint32_t TIMER_GetTimerHardwareValue (TIM_Type *base)
 Получение значения регистра счетчика таймера
 
enum timer_status TIMER_SetConfig (TIM_Type *base, struct timer_hardware_config config, enum timer_work_mode mode, callback_t callback, uint32_t ticks_h)
 Инициализация структуры таймера общего назначения
 
enum timer_status TIMER_IRQEnable (TIM_Type *base)
 Включение прерывания
 
enum timer_status TIMER_IRQDisable (TIM_Type *base)
 Отключение прерывания
 
uint32_t TIMER_IRQGetStatus (TIM_Type *base)
 Чтение статуса прерывания
 
enum timer_status TIMER_IRQClear (TIM_Type *base)
 Сброс прерывания
 

Подробное описание

Драйвер таймеров общего назначения

Драйвер модуля таймеров общего назначения управляет таймерами TIM и TIM1 общего назначения и таймера LPTIM, для работы в режимах энергосбережения.

Макросы

◆ TIMER_COUNT

#define TIMER_COUNT   3

Количество таймеров общего назначения

◆ TIMER_HARDWARE_FIELD_MAX

#define TIMER_HARDWARE_FIELD_MAX   (0xFFFFFFFFUL)

Максимально возможное аппаратное значение поля счетчика

◆ TIMER_SOFTWARE_FIELD_HIGH_OFFSET

#define TIMER_SOFTWARE_FIELD_HIGH_OFFSET   (32)

Смещение старшей части программного значения поля счетчика

◆ TIMER_SOFTWARE_FIELD_MAX

#define TIMER_SOFTWARE_FIELD_MAX   (0xFFFFFFFFFFFFFFFFULL)

Максимально возможное программное значение поля счетчика

Перечисления

◆ timer_status

Статусы драйвера таймеров общего назначения

Элементы перечислений
TIMER_Status_Ok 

Нет ошибок

TIMER_Status_InvalidArgument 

Недопустимый аргумент

TIMER_Status_TimerBusy 

Таймер уже занят

TIMER_Status_BadConfigure 

Недопустимая конфигурация

TIMER_Status_NotIni 

Работа с неинициализированным таймером

TIMER_Status_NotSupport 

Функция не поддерживается

◆ timer_type_of_counting

Режимы счета импульсов таймером

Элементы перечислений
TIMER_Work 

Стандартный счет частоты

TIMER_Debug 

Счет частоты с учетом отладки (CTI)

◆ timer_work_mode

Режим работы таймера общего назначения

Элементы перечислений
TIMER_Hardware 

Работа в 32-битном режиме по аппаратным настройкам

TIMER_Software 

Работа в режиме эмуляции 64-битного таймера

Функции

◆ TIMER_Deinit()

enum timer_status TIMER_Deinit ( TIM_Type * base)

Деинициализация таймера общего назначения

Аргументы
baseТаймер
Возвращаемые значения
TIMER_Status_Ok
TIMER_Status_InvalidArgument

◆ TIMER_GetAPIStatus()

enum timer_status TIMER_GetAPIStatus ( )

Получение результата выполнения последней функции

Возвращает статус выполнения последней функции, у которой тип возвращаемого значения отличен от timer_status.

Возвращаемые значения
TIMER_Status_Ok
TIMER_Status_InvalidArgument
TIMER_Status_TimerBusy
TIMER_Status_BadConfigure
TIMER_Status_NotIni
TIMER_Status_NotSupport

◆ TIMER_GetTicks()

uint64_t TIMER_GetTicks ( TIM_Type * base)

Получение количества тиков

Аргументы
baseТаймер
Возвращает
Количество подсчитанных тактов

◆ TIMER_GetTimerHardwareValue()

static uint32_t TIMER_GetTimerHardwareValue ( TIM_Type * base)
inlinestatic

Получение значения регистра счетчика таймера

Аргументы
baseТаймер
Возвращает
Количество подсчитанных тактов

◆ TIMER_Init()

enum timer_status TIMER_Init ( TIM_Type * base,
struct timer_hardware_config config,
enum timer_work_mode mode,
callback_t callback,
uint32_t ticks_h )

Инициализация таймера общего назначения

Заметки
Конфигурация аппаратуры таймера используется полностью при режиме работы TIMER_Hardware, а при TIMER_Software - только поля work_type и start_enable.
Аргументы
baseТаймер
configКонфигурация аппаратуры таймера
modeРежим работы
callbackФункция обратного вызова
ticks_hНачальное значение для старшей части счетчика обратного счета при режиме работы TIMER_Software
Возвращаемые значения
TIMER_Status_Ok
TIMER_Status_InvalidArgument
TIMER_Status_TimerBusy

◆ TIMER_IRQClear()

enum timer_status TIMER_IRQClear ( TIM_Type * base)

Сброс прерывания

Аргументы
baseБазовый адрес
Возвращаемые значения
TIMER_Status_Ok
TIMER_Status_InvalidArgument

◆ TIMER_IRQDisable()

enum timer_status TIMER_IRQDisable ( TIM_Type * base)

Отключение прерывания

Выключает прерывание в таймере; NVIC не конфигурирует.

Аргументы
baseБазовый адрес
Возвращаемые значения
TIMER_Status_Ok
TIMER_Status_InvalidArgument

◆ TIMER_IRQEnable()

enum timer_status TIMER_IRQEnable ( TIM_Type * base)

Включение прерывания

Включает прерывание в таймере; NVIC не конфигурирует.

Аргументы
baseБазовый адрес
Возвращаемые значения
TIMER_Status_Ok
TIMER_Status_InvalidArgument

◆ TIMER_IRQGetStatus()

uint32_t TIMER_IRQGetStatus ( TIM_Type * base)

Чтение статуса прерывания

Аргументы
baseБазовый адрес
Возвращаемые значения
0- прерывание отсутствует
1- прерывание присутствует

◆ TIMER_Reset()

enum timer_status TIMER_Reset ( TIM_Type * base)

Сброс таймера общего назначения

Аргументы
baseТаймер
Возвращаемые значения
TIMER_Status_NotSupport
TIMER_Status_InvalidArgument

◆ TIMER_Run()

enum timer_status TIMER_Run ( TIM_Type * base)

Запуск таймера общего назначения

Аргументы
baseТаймер
Возвращаемые значения
TIMER_Status_Ok
TIMER_Status_InvalidArgument

◆ TIMER_SetConfig()

enum timer_status TIMER_SetConfig ( TIM_Type * base,
struct timer_hardware_config config,
enum timer_work_mode mode,
callback_t callback,
uint32_t ticks_h )

Инициализация структуры таймера общего назначения

Заметки
Конфигурация аппаратуры таймера используется полностью при режиме работы TIMER_Hardware, а при TIMER_Software - только поля work_type и start_enable.
Аргументы
baseТаймер
configКонфигурация аппаратуры таймера
modeРежим работы
callbackФункция обратного вызова
ticks_hНачальное значение для старшей части счетчика обратного счета при режиме работы TIMER_Software
Возвращаемые значения
TIMER_Status_Ok
TIMER_Status_InvalidArgument
TIMER_Status_TimerBusy

◆ TIMER_SetTick()

enum timer_status TIMER_SetTick ( TIM_Type * base,
uint64_t ticks )

Установка количества тиков

Аргументы
baseТаймер
ticksКоличество тиков
Возвращаемые значения
TIMER_Status_NotSupport

◆ TIMER_Stop()

enum timer_status TIMER_Stop ( TIM_Type * base)

Остановка таймера общего назначения

Аргументы
baseТаймер
Возвращаемые значения
TIMER_Status_Ok
TIMER_Status_InvalidArgument