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

Драйвер универсального блока таймеров Подробнее...

Файлы

файл  hal_vtu.h
 Интерфейс драйвера универсального блока таймеров
 

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

struct  vtu_config
 Структура для конфигурации VTU. Подробнее...
 

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

typedef void(* vtu_callback) (VTU_Type *base, uint32_t timer, enum vtu_interrupt_control value)
 Функция обратного вызова
 

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

enum  vtu_status
 Статусы драйвера универсального блока таймеров Подробнее...
 
enum  vtu_mode
 Режимы работы тамеров универсального блока таймеров Подробнее...
 
enum  vtu_capture_edge_control
 Управление фронтами при режиме захвата Подробнее...
 
enum  vtu_pwm_polarity
 Управление полярностью ШИМ Подробнее...
 
enum  vtu_interrupt_control
 Управление прерываниями Подробнее...
 
enum  timer_num_mode
 Номер таймера и его режим работы для прерываний Подробнее...
 

Функции

enum vtu_status VTU_GetLastAPIStatus (void)
 Получение статуса выполнения функции, тип результата которой отличен от enum vtu_status.
 

Инициализация и деинициализации таймера

enum vtu_status VTU_GetDefaultConfig (struct vtu_config *config)
 Создание конфигурации по умолчанию
 
enum vtu_status VTU_Init (VTU_Type *base, uint32_t timer, struct vtu_config *config)
 Инициализация таймера
 
enum vtu_status VTU_Deinit (VTU_Type *base, uint32_t timer)
 Деинициализация таймера
 

Функции управления VTU

enum vtu_status VTU_EnableTimer (VTU_Type *base, uint32_t timer, bool enable)
 Разрешение работы таймера
 
enum vtu_status VTU_SetCounter (VTU_Type *base, uint32_t timer, uint16_t value, bool extended)
 Установка значения счетчика
 
uint16_t VTU_GetCounter (VTU_Type *base, uint32_t timer, bool extended)
 Получение значения счетчика
 
enum vtu_status VTU_SetPrescaler (VTU_Type *base, uint32_t timer, uint8_t value)
 Установка значения предделителя
 
uint8_t VTU_GetPrescaler (VTU_Type *base, uint32_t timer)
 Получение значения предделителя
 
enum vtu_status VTU_SetPeriodCapture (VTU_Type *base, uint32_t timer, uint16_t value, bool extended)
 Установка значения периода генерации шим без учета предделителя
 
uint16_t VTU_GetPeriodCapture (VTU_Type *base, uint32_t timer, bool extended)
 Получение значения периода генерации шим без учета предделителя
 
enum vtu_status VTU_SetDutyCycleCapture (VTU_Type *base, uint32_t timer, uint16_t value, bool extended)
 Установка периода импульса шим без учета предделителя
 
uint16_t VTU_GetDutyCycleCapture (VTU_Type *base, uint32_t timer, bool extended)
 Получение периода импульса шим без учета предделителя
 
void VTU_SetCallback (uint32_t timer, vtu_callback callback)
 Установка функции обратного вызова
 
enum vtu_status VTU_EnableTimerIRQ (VTU_Type *base, uint32_t timer, enum vtu_interrupt_control value, bool enable, enum vtu_mode mode)
 Разрешение работы прерывания
 
enum vtu_interrupt_control VTU_GetTimerIRQ (VTU_Type *base, uint32_t timer, enum vtu_mode mode)
 Получение прерываний
 
enum vtu_status VTU_ClearTimerIRQ (VTU_Type *base, uint32_t timer, enum vtu_interrupt_control values, enum vtu_mode mode)
 Очистка прерываний
 
enum vtu_status VTU_SetPWMPolarity (VTU_Type *base, uint32_t timer, enum vtu_pwm_polarity value1, enum vtu_pwm_polarity value2, bool use_value2)
 Установка полярности ШИМ
 
enum vtu_status VTU_GetPWMPolarity (VTU_Type *base, uint32_t timer, enum vtu_pwm_polarity *value1, enum vtu_pwm_polarity *value2, bool use_value2)
 Получение полярности ШИМ
 
enum vtu_status VTU_SetCaptureEdgeCtrl (VTU_Type *base, uint32_t timer, enum vtu_capture_edge_control value1, enum vtu_capture_edge_control value2, bool use_value2)
 Установка типа захвата
 
enum vtu_status VTU_GetCaptureEdgeCtrl (VTU_Type *base, uint32_t timer, enum vtu_capture_edge_control *value1, enum vtu_capture_edge_control *value2, bool use_value2)
 Получение типа захвата
 

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

Драйвер универсального блока таймеров

Драйвер модуля универсального блока таймеров.

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

◆ timer_num_mode

Номер таймера и его режим работы для прерываний

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

Таймер 0, режим 8 бит

VTU_Timer0Mode16bit 

Таймер 0, режим 16 бит

VTU_Timer1Mode8bit 

Таймер 1, режим 8 бит

VTU_Timer2Mode8bit 

Таймер 2, режим 8 бит

VTU_Timer2Mode16bit 

Таймер 2, режим 16 бит

VTU_Timer3Mode8bit 

Таймер 3, режим 8 бит

◆ vtu_capture_edge_control

Управление фронтами при режиме захвата

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

Захват по возрастающему фронту, сброса счетчика нет

VTU_CaptureFallingEdgeResetNo 

Захват по ниспадающему фронту, сброса счетчика нет

VTU_CaptureRisingEdgeResetYes 

Захват по возрастающему фронту, сброс счетчика есть

VTU_CaptureFallingEdgeResetYes 

Захват по ниспадающему фронту, сброс счетчика есть

VTU_CaptureBothEdgeResetNo 

Захват по возрастающему фронту, сброса счетчика нет

VTU_CaptureBothEdgeResetRisingEdge 

Захват по возрастающему фронту, сброс счетчика по возрастающему фронту

VTU_CaptureBothEdgeResetFallingEdge 

Захват по возрастающему фронту, сброс счетчика ниспадающему фронту

VTU_CaptureBothEdgeResetBothEdge 

Захват по возрастающему фронту, сброс счетчика обоим фронтам

◆ vtu_interrupt_control

Управление прерываниями

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

Отключение всех прерываний

VTU_LowByteDutyCycleMatch 

По совпадению цикла для первого сдвоенного таймера

VTU_LowBytePeriodMatch 

По совпадению периода для первого сдвоенного таймера

VTU_HighByteDutyCycleMatch 

По совпадению цикла для второго сдвоенного таймера

VTU_HighBytePeriodMatch 

По совпадению периода для второго сдвоенного таймера

VTU_DutyCycleMatch 

По совпадению цикла для таймера

VTU_PeriodMatch 

По совпадению периода для таймера

VTU_CaptureToPERCAPx 

Захват по началу импульса

VTU_CaptureToDTYCAPx 

Захват по концу импульса

VTU_CounterOverflow 

По переполнению счетчика

◆ vtu_mode

enum vtu_mode

Режимы работы тамеров универсального блока таймеров

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

Режим остановки таймера

VTU_PWMDual8Bit 

Режим сдвоенного 8-битного таймера

VTU_PWM16Bit 

Режим 16-битного таймера

VTU_Capture 

Режим захвата

◆ vtu_pwm_polarity

Управление полярностью ШИМ

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

Высокий уровень импульса

VTU_Zero 

Низкий уровень импульса

◆ vtu_status

enum vtu_status

Статусы драйвера универсального блока таймеров

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

Нет ошибок

VTU_Status_InvalidArgument 

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

VTU_Status_TimerBusy 

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

VTU_Status_BadConfigure 

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

VTU_Status_DriverError 

Ошибка драйвера

VTU_Status_DualTimerNotCanRun 

Cдвоенный таймера неможет быть запущен, так как второй таймер уже работает

VTU_Status_TimerNotInit 

Таймер не инициализирован

Функции

◆ VTU_ClearTimerIRQ()

enum vtu_status VTU_ClearTimerIRQ ( VTU_Type * base,
uint32_t timer,
enum vtu_interrupt_control values,
enum vtu_mode mode )

Очистка прерываний

Аргументы
baseПодсистема VTU
timerТаймер
valuesПрерывания
modeРежим таймера для интерпретации прерываний
Возвращает
Прерывания

◆ VTU_Deinit()

enum vtu_status VTU_Deinit ( VTU_Type * base,
uint32_t timer )

Деинициализация таймера

Функция деинициализации таймера

Аргументы
baseПодсистема VTU
timerТаймер
Возвращаемые значения
VTU_Status_Ok
VTU_Status_InvalidArgument

◆ VTU_EnableTimer()

enum vtu_status VTU_EnableTimer ( VTU_Type * base,
uint32_t timer,
bool enable )

Разрешение работы таймера

Аргументы
baseПодсистема VTU
timerТаймер
enableРазрешение работы (1) или запрещение работы (0)
Возвращает
Статус

◆ VTU_EnableTimerIRQ()

enum vtu_status VTU_EnableTimerIRQ ( VTU_Type * base,
uint32_t timer,
enum vtu_interrupt_control value,
bool enable,
enum vtu_mode mode )

Разрешение работы прерывания

Аргументы
baseПодсистема VTU
timerТаймер
valueПрерывания
enableРазрешены прерывания по маске (1) или запрещены прерывания по маске (0)
modeРежим таймера для интерпретации прерываний
Возвращает
Статус

◆ VTU_GetCaptureEdgeCtrl()

enum vtu_status VTU_GetCaptureEdgeCtrl ( VTU_Type * base,
uint32_t timer,
enum vtu_capture_edge_control * value1,
enum vtu_capture_edge_control * value2,
bool use_value2 )

Получение типа захвата

Аргументы
baseПодсистема VTU
timerТаймер
value1Полярность первого сигнала ШИМ
value2Полярность второго сигнала ШИМ
use_value2Использовать (1) или не использовать (0) второй сигнал ШИМ
Возвращает
Статус

◆ VTU_GetCounter()

uint16_t VTU_GetCounter ( VTU_Type * base,
uint32_t timer,
bool extended )

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

Аргументы
baseПодсистема VTU
timerТаймер
extendedВернуть двухбайтовое (1) или однобайтное (0) значение value
Возвращает
Значение счетчика

◆ VTU_GetDefaultConfig()

enum vtu_status VTU_GetDefaultConfig ( struct vtu_config * config)

Создание конфигурации по умолчанию

Функция инициализации структуры с настройками таймера "по умолчанию"

Аргументы
configКонфигурация таймера
Возвращаемые значения
VTU_Status_Ok
VTU_Status_InvalidArgument

◆ VTU_GetDutyCycleCapture()

uint16_t VTU_GetDutyCycleCapture ( VTU_Type * base,
uint32_t timer,
bool extended )

Получение периода импульса шим без учета предделителя

Аргументы
baseПодсистема VTU
timerТаймер
extendedВернуть двухбайтное (1) или однобайтное (0) значение value
Возвращает
Значение счетчика

◆ VTU_GetLastAPIStatus()

enum vtu_status VTU_GetLastAPIStatus ( void )

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

Возвращает
Статус

◆ VTU_GetPeriodCapture()

uint16_t VTU_GetPeriodCapture ( VTU_Type * base,
uint32_t timer,
bool extended )

Получение значения периода генерации шим без учета предделителя

Аргументы
baseПодсистема VTU
timerТаймер
extendedВернуть двухбайтное (1) или однобайтное (0) значение value
Возвращает
Значение счетчика

◆ VTU_GetPrescaler()

uint8_t VTU_GetPrescaler ( VTU_Type * base,
uint32_t timer )

Получение значения предделителя

Аргументы
baseПодсистема VTU
timerТаймер
Возвращает
Значение предделителя

◆ VTU_GetPWMPolarity()

enum vtu_status VTU_GetPWMPolarity ( VTU_Type * base,
uint32_t timer,
enum vtu_pwm_polarity * value1,
enum vtu_pwm_polarity * value2,
bool use_value2 )

Получение полярности ШИМ

Аргументы
baseПодсистема VTU
timerТаймер
value1Полярность первого сигнала ШИМ
value2Полярность второго сигнала ШИМ
use_value2Использовать (1) или не использовать (0) второй сигнал ШИМ
Возвращает
Статус

◆ VTU_GetTimerIRQ()

enum vtu_interrupt_control VTU_GetTimerIRQ ( VTU_Type * base,
uint32_t timer,
enum vtu_mode mode )

Получение прерываний

Аргументы
baseПодсистема VTU
timerТаймер
modeРежим таймера для интерпретации прерываний
Возвращает
Прерывания

◆ VTU_Init()

enum vtu_status VTU_Init ( VTU_Type * base,
uint32_t timer,
struct vtu_config * config )

Инициализация таймера

Функция инициализации таймера с указанными настройками

Аргументы
baseСистема VTU
timerТаймер в системе VTU
configКонфигурация таймера
Возвращаемые значения
VTU_Status_Ok
VTU_Status_InvalidArgument

◆ VTU_SetCallback()

void VTU_SetCallback ( uint32_t timer,
vtu_callback callback )

Установка функции обратного вызова

Аргументы
callbackУказатель на пользовательскую функцию обратного вызова

◆ VTU_SetCaptureEdgeCtrl()

enum vtu_status VTU_SetCaptureEdgeCtrl ( VTU_Type * base,
uint32_t timer,
enum vtu_capture_edge_control value1,
enum vtu_capture_edge_control value2,
bool use_value2 )

Установка типа захвата

Аргументы
baseПодсистема VTU
timerТаймер
value1Полярность первого сигнала ШИМ
value2Полярность второго сигнала ШИМ
use_value2Использовать (1) или не использовать (0) второй сигнал ШИМ
Возвращает
Статус

◆ VTU_SetCounter()

enum vtu_status VTU_SetCounter ( VTU_Type * base,
uint32_t timer,
uint16_t value,
bool extended )

Установка значения счетчика

Аргументы
baseПодсистема VTU
timerТаймер
valueЗначение
extendedИспользовать (1) или не использовать (0) двухбайтное значение value
Возвращает
Статус

◆ VTU_SetDutyCycleCapture()

enum vtu_status VTU_SetDutyCycleCapture ( VTU_Type * base,
uint32_t timer,
uint16_t value,
bool extended )

Установка периода импульса шим без учета предделителя

Аргументы
baseПодсистема VTU
timerТаймер
valueЗначение
extendedИспользовать (1) или не использовать (0) двухбайтное значение value
Возвращает
Статус

◆ VTU_SetPeriodCapture()

enum vtu_status VTU_SetPeriodCapture ( VTU_Type * base,
uint32_t timer,
uint16_t value,
bool extended )

Установка значения периода генерации шим без учета предделителя

Аргументы
baseПодсистема VTU
timerТаймер
valueЗначение
extendedИспользовать (1) или не использовать (0) двухбайтное значение value
Возвращает
Статус

◆ VTU_SetPrescaler()

enum vtu_status VTU_SetPrescaler ( VTU_Type * base,
uint32_t timer,
uint8_t value )

Установка значения предделителя

Аргументы
baseПодсистема VTU
timerТаймер
valueЗначение
Возвращает
Статус

◆ VTU_SetPWMPolarity()

enum vtu_status VTU_SetPWMPolarity ( VTU_Type * base,
uint32_t timer,
enum vtu_pwm_polarity value1,
enum vtu_pwm_polarity value2,
bool use_value2 )

Установка полярности ШИМ

Аргументы
baseПодсистема VTU
timerТаймер
value1Полярность первого сигнала ШИМ
value2Полярность второго сигнала ШИМ
use_value2Использовать (1) или не использовать (0) второй сигнал ШИМ
Возвращает
Статус