Loading...
Searching...
No Matches
TIM Simulator
STM32 Simulation » STM32 Simulator

Симулятор для таймеров 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 | – структура таймера для симуляции.

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

- Overflow_Check()
- Slave_Mode_Check_Source()
- TIMx_Count()
- Channels_Simulation()

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 | – структура таймера для симуляции.

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

- call_IRQHandller()

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 | – структура таймера для симуляции.

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

- CC_PWM_Ch1_Simulation()
- CC_PWM_Ch2_Simulation()
- CC_PWM_Ch3_Simulation()
- CC_PWM_Ch4_Simulation()
- Write_OC_to_GPIO()
- Write_OC_to_TRGO()

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.