STM MATLAB Simulator
Loading...
Searching...
No Matches
Data Structures | Macros | Functions

Симулятор для таймеров More...

+ Collaboration diagram for TIM Simulator:

Data Structures

struct  SlaveChannels
 Структура для управления Слейв Таймерами More...
 
struct  Channels_Sim
 Структура для моделирования каналов таймера More...
 
struct  TIM_Sim
 Структура для моделирования таймера More...
 

Macros

#define TIM_OCMODE_SECOND_SHIFT   (TIM_CCMR1_OC2M_Pos - TIM_CCMR1_OC1M_Pos)
 Дефайн для сдвига между первой и второй половиной CCMRx регистров
 
#define Check_OCx_GPIO_Output(_tims_, _OCx_GPIOx_, _OCx_PIN_SHIFT_)   (_tims_->Channels._OCx_GPIOx_->MODER & (0b11<<(2*_tims_->Channels._OCx_PIN_SHIFT_))) == (0b10<<(2*_tims_->Channels._OCx_PIN_SHIFT_))
 Дефайн для проверки выводить ли канал таймера на GPIO.
 
#define Check_OC1_GPIO_Output(_tims_)   Check_OCx_GPIO_Output(_tims_, OC1_GPIOx, OC1_PIN_SHIFT)
 Дефайн для проверки выводить ли канал 1 на GPIO (настроен ли GPIO на альтернативную функцию)
 
#define Check_OC2_GPIO_Output(_tims_)   Check_OCx_GPIO_Output(_tims_, OC2_GPIOx, OC2_PIN_SHIFT)
 Дефайн для проверки выводить ли канал 2 на GPIO (настроен ли GPIO на альтернативную функцию)
 
#define Check_OC3_GPIO_Output(_tims_)   Check_OCx_GPIO_Output(_tims_, OC3_GPIOx, OC3_PIN_SHIFT)
 Дефайн для проверки выводить ли канал 3 на GPIO (настроен ли GPIO на альтернативную функцию)
 
#define Check_OC4_GPIO_Output(_tims_)   Check_OCx_GPIO_Output(_tims_, OC4_GPIOx, OC4_PIN_SHIFT)
 Дефайн для проверки выводить ли канал 4 на GPIO (настроен ли GPIO на альтернативную функцию)
 

Functions

void TIM_Simulation (TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
 Симуляция таймера на один такт симуляции.
 
void TIMx_Count (TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
 Симуляция счетчика таймера на один такт симуляции.
 
void Overflow_Check (TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
 Проверка на переполнение и дальнейшая его обработка.
 
void call_IRQHandller (TIM_TypeDef *TIMx)
 Вызов прерывания таймера TIMx.
 
void Channels_Simulation (TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
 Симуляция каналов таймера.
 
void CC_PWM_Ch1_Simulation (TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
 Выбор режима первого канала и его симуляция.
 
void CC_PWM_Ch2_Simulation (TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
 Выбор режима второго канала и его симуляция.
 
void CC_PWM_Ch3_Simulation (TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
 Выбор режима третьего канала и его симуляция.
 
void CC_PWM_Ch4_Simulation (TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
 Выбор режима четвертого канала и его симуляция.
 
void Write_OC_to_GPIO (TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
 Запись каналов таймера в порты GPIO.
 
void Write_OC_to_TRGO (TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
 Запись каналов таймера в глабальную структуру с TRIGGER OUTPUT.
 
void Slave_Mode_Check_Source (TIM_TypeDef *TIMx)
 Определение источника для запуска таймера в SLAVE MODE.
 
void Simulate_TIMs (void)
 Симуляция выбранных таймеров.
 
void TIM_SIM_DEINIT (void)
 Деинициализирование выбранных таймеров.
 

Detailed Description

Симулятор для таймеров

Дефайны и функции для симуляции таймеров.

Macro Definition Documentation

◆ TIM_OCMODE_SECOND_SHIFT

#define TIM_OCMODE_SECOND_SHIFT   (TIM_CCMR1_OC2M_Pos - TIM_CCMR1_OC1M_Pos)

Дефайн для сдвига между первой и второй половиной CCMRx регистров

Definition at line 28 of file stm32f4xx_matlab_tim.h.

◆ Check_OCx_GPIO_Output

#define Check_OCx_GPIO_Output ( _tims_,
_OCx_GPIOx_,
_OCx_PIN_SHIFT_ )   (_tims_->Channels._OCx_GPIOx_->MODER & (0b11<<(2*_tims_->Channels._OCx_PIN_SHIFT_))) == (0b10<<(2*_tims_->Channels._OCx_PIN_SHIFT_))

Дефайн для проверки выводить ли канал таймера на GPIO.

Данный дефайн проверяет, настроен ли пин GPIO на альтернативную функцию. Если да - то таймер выводиться на этот пин

Definition at line 34 of file stm32f4xx_matlab_tim.h.

◆ Check_OC1_GPIO_Output

#define Check_OC1_GPIO_Output ( _tims_)    Check_OCx_GPIO_Output(_tims_, OC1_GPIOx, OC1_PIN_SHIFT)

Дефайн для проверки выводить ли канал 1 на GPIO (настроен ли GPIO на альтернативную функцию)

Definition at line 38 of file stm32f4xx_matlab_tim.h.

◆ Check_OC2_GPIO_Output

#define Check_OC2_GPIO_Output ( _tims_)    Check_OCx_GPIO_Output(_tims_, OC2_GPIOx, OC2_PIN_SHIFT)

Дефайн для проверки выводить ли канал 2 на GPIO (настроен ли GPIO на альтернативную функцию)

Definition at line 42 of file stm32f4xx_matlab_tim.h.

◆ Check_OC3_GPIO_Output

#define Check_OC3_GPIO_Output ( _tims_)    Check_OCx_GPIO_Output(_tims_, OC3_GPIOx, OC3_PIN_SHIFT)

Дефайн для проверки выводить ли канал 3 на GPIO (настроен ли GPIO на альтернативную функцию)

Definition at line 46 of file stm32f4xx_matlab_tim.h.

◆ Check_OC4_GPIO_Output

#define Check_OC4_GPIO_Output ( _tims_)    Check_OCx_GPIO_Output(_tims_, OC4_GPIOx, OC4_PIN_SHIFT)

Дефайн для проверки выводить ли канал 4 на GPIO (настроен ли GPIO на альтернативную функцию)

Definition at line 50 of file stm32f4xx_matlab_tim.h.

Function Documentation

◆ TIM_Simulation()

void TIM_Simulation ( TIM_TypeDef * TIMx,
struct TIM_Sim * TIMS )

Симуляция таймера на один такт симуляции.

Parameters
TIMx– таймер, каналы которого надо записать.
TIMS– структура таймера для симуляции.

Это базовая функция для симуляции таймера: она вызывается каждый шаг симуляции и вызывает все другие функции, необходимые для симуляции:

Definition at line 28 of file stm32f4xx_matlab_tim.c.

+ Here is the call graph for this function:

◆ TIMx_Count()

void TIMx_Count ( TIM_TypeDef * TIMx,
struct TIM_Sim * TIMS )

Симуляция счетчика таймера на один такт симуляции.

Parameters
TIMx– таймер, каналы которого надо записать.
TIMS– структура таймера для симуляции.

Данная функция проверяет направление таймера и увеличивает или уменьшает значение счетчика на то число, на которое оно бы увеличилось за шаг симуляции.

Note
Для счетчика используется double формат, т.к. кол-во счетов за шаг симуляции может быть дробным. После в конце функции double счетчик записывает с округлением в регистр таймера CNT.

Definition at line 63 of file stm32f4xx_matlab_tim.c.

◆ Overflow_Check()

void Overflow_Check ( TIM_TypeDef * TIMx,
struct TIM_Sim * TIMS )

Проверка на переполнение и дальнейшая его обработка.

Parameters
TIMx– таймер, каналы которого надо записать.
TIMS– структура таймера для симуляции.

Данная функция проверяет когда таймер переполниться и если надо, вызывает соответствующее прерывание:

Definition at line 80 of file stm32f4xx_matlab_tim.c.

+ Here is the call graph for this function:

◆ call_IRQHandller()

void call_IRQHandller ( TIM_TypeDef * TIMx)

Вызов прерывания таймера TIMx.

Parameters
TIMx– таймер, прерываний которого надо вызвать.

Данная функция симулирует аппаратный вызов прерывания таймера по какому-либо событию.

Definition at line 665 of file stm32f4xx_matlab_tim.c.

+ Here is the call graph for this function:

◆ Channels_Simulation()

void Channels_Simulation ( TIM_TypeDef * TIMx,
struct TIM_Sim * TIMS )

Симуляция каналов таймера.

Parameters
TIMx– таймер, каналы которого надо записать.
TIMS– структура таймера для симуляции.

Данная функция симулирует работу всех каналов таймера. Она вызывает функции:

Definition at line 118 of file stm32f4xx_matlab_tim.c.

+ Here is the call graph for this function:

◆ CC_PWM_Ch1_Simulation()

void CC_PWM_Ch1_Simulation ( TIM_TypeDef * TIMx,
struct TIM_Sim * TIMS )

Выбор режима первого канала и его симуляция.

Parameters
TIMx– таймер, каналы которого надо записать.
TIMS– структура таймера для симуляции.

Данная функция по регистрам таймера проверяет как настроен первый канал и соответствующе симулирует его работу.

Definition at line 137 of file stm32f4xx_matlab_tim.c.

◆ CC_PWM_Ch2_Simulation()

void CC_PWM_Ch2_Simulation ( TIM_TypeDef * TIMx,
struct TIM_Sim * TIMS )

Выбор режима второго канала и его симуляция.

Parameters
TIMx– таймер, каналы которого надо записать.
TIMS– структура таймера для симуляции.

Данная функция по регистрам таймера проверяет как настроен второй канал и соответствующе симулирует его работу.

Definition at line 185 of file stm32f4xx_matlab_tim.c.

◆ CC_PWM_Ch3_Simulation()

void CC_PWM_Ch3_Simulation ( TIM_TypeDef * TIMx,
struct TIM_Sim * TIMS )

Выбор режима третьего канала и его симуляция.

Parameters
TIMx– таймер, каналы которого надо записать.
TIMS– структура таймера для симуляции.

Данная функция по регистрам таймера проверяет как настроен третий канал и соответствующе симулирует его работу.

Definition at line 233 of file stm32f4xx_matlab_tim.c.

◆ CC_PWM_Ch4_Simulation()

void CC_PWM_Ch4_Simulation ( TIM_TypeDef * TIMx,
struct TIM_Sim * TIMS )

Выбор режима четвертого канала и его симуляция.

Parameters
TIMx– таймер, каналы которого надо записать.
TIMS– структура таймера для симуляции.

Данная функция по регистрам таймера проверяет как настроен четвертый канал и соответствующе симулирует его работу.

Definition at line 281 of file stm32f4xx_matlab_tim.c.

◆ Write_OC_to_GPIO()

void Write_OC_to_GPIO ( TIM_TypeDef * TIMx,
struct TIM_Sim * TIMS )

Запись каналов таймера в порты GPIO.

Parameters
TIMx– таймер, каналы которого надо записать.
TIMS– структура того же таймера для симуляции.

Данная функция записывает каналы OC в порты GPIO, определенные в TIMS. Запись происходит только если пин настроен на альтернативную функцию.

Definition at line 330 of file stm32f4xx_matlab_tim.c.

◆ Write_OC_to_TRGO()

void Write_OC_to_TRGO ( TIM_TypeDef * TIMx,
struct TIM_Sim * TIMS )

Запись каналов таймера в глабальную структуру с TRIGGER OUTPUT.

Запись результата compare в глабальную структуру с TRIGGER OUTPUT

Parameters
TIMx– таймер, каналы которого надо записать.
TIMS– структура того же таймера для симуляции.

Данная функция считывает каналы OC и записывает их в внешний канал триггера TRGO.

Definition at line 410 of file stm32f4xx_matlab_tim.c.

◆ Slave_Mode_Check_Source()

void Slave_Mode_Check_Source ( TIM_TypeDef * TIMx)

Определение источника для запуска таймера в SLAVE MODE.

Определение источника для запуска таймера в SLAVE MODE

Parameters
TIMx– таймер, который надо включить.
TIMx– таймер, прерываний которого надо вызвать.

Данная функция проверяет какой триггер выбран для запуска таймера, после записывает значение канала триггера в бит включения таймера. Таким образом, при лог.1 в канале триггера - таймер включиться.

Definition at line 464 of file stm32f4xx_matlab_tim.c.

◆ Simulate_TIMs()

void Simulate_TIMs ( void )

Симуляция выбранных таймеров.

Симулирование выбранных через дефайн таймеров

Таймеры для симуляции выбираются через дефайны в stm32f4xx_matlab_conf.h. Функция вызывается на каждом шаге симуляции.

Definition at line 521 of file stm32f4xx_matlab_tim.c.

+ Here is the call graph for this function:

◆ TIM_SIM_DEINIT()

void TIM_SIM_DEINIT ( void )

Деинициализирование выбранных таймеров.

Таймеры для деинициализизации выбираются через дефайны в stm32f4xx_matlab_conf.h. Функция вызывается в конце симуляции.

Definition at line 571 of file stm32f4xx_matlab_tim.c.