STM MATLAB Simulator
Loading...
Searching...
No Matches
stm32f4xx_matlab_tim.h
Go to the documentation of this file.
1/**************************************************************************
2Данный файл содержит объявления всякого для симуляции таймеров STM32F407xx.
3
4**************************************************************************/
5#ifndef _MATLAB_TIM_H_
6#define _MATLAB_TIM_H_
7
8#include "stm32f4xx_hal.h"
9#include "stm32f4xx_it.h"
10#include "mcu_wrapper_conf.h"
11
21
22#define TIM_OCMODE_SECOND_SHIFT (TIM_CCMR1_OC2M_Pos - TIM_CCMR1_OC1M_Pos)
23
25#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_))
27#define Check_OC1_GPIO_Output(_tims_) Check_OCx_GPIO_Output(_tims_, OC1_GPIOx, OC1_PIN_SHIFT)
29#define Check_OC2_GPIO_Output(_tims_) Check_OCx_GPIO_Output(_tims_, OC2_GPIOx, OC2_PIN_SHIFT)
31#define Check_OC3_GPIO_Output(_tims_) Check_OCx_GPIO_Output(_tims_, OC3_GPIOx, OC3_PIN_SHIFT)
33#define Check_OC4_GPIO_Output(_tims_) Check_OCx_GPIO_Output(_tims_, OC4_GPIOx, OC4_PIN_SHIFT)
34
36
37
38
40
42{
43 unsigned TIM1_TRGO : 1;
44 unsigned TIM2_TRGO : 1;
45 unsigned TIM3_TRGO : 1;
46 unsigned TIM4_TRGO : 1;
47 unsigned TIM5_TRGO : 1;
48 unsigned TIM6_TRGO : 1;
49 unsigned TIM7_TRGO : 1;
50 unsigned TIM8_TRGO : 1;
51
52};
53
56{
57 // Каналы таймера
58 unsigned OC1REF:1;
59 unsigned OC2REF:1;
60 unsigned OC3REF:1;
61 unsigned OC4REF:1;
62
63 // связанные с каналами GPIO порты и пины
66
69
72
75
76};
77
79struct TIM_Sim
80{
81 double tx_cnt;
82 double tx_step;
83 int RELOAD;
85};
87
88
89
91
92//----------------------TIMER BASE FUNCTIONS-----------------------//
93/* Базовая функция для симуляции таймера: она вызывается каждый шаг симуляции */
94void TIM_Simulation(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS);
95/* Счет таймера за один такт */
96void TIMx_Count(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS);
97/* Проверка на переполнение и дальнейшая его обработка */
98void Overflow_Check(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS);
99/* Вызов прерывания */
100void call_IRQHandller(TIM_TypeDef *TIMx);
101//-----------------------------------------------------------------//
102
103
104//------------------------CHANNELS FUNCTIONS-----------------------//
105/* Симуляция каналов таймера */
106void Channels_Simulation(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS);
107/*---------------- - CAPTURE COPMARE & PWM FUNCTIONS------------------*/
108/* Выбор режима CaptureCompare или PWM и симуляция для каждого канала */
109void CC_PWM_Ch1_Simulation(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS);
110void CC_PWM_Ch2_Simulation(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS);
111void CC_PWM_Ch3_Simulation(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS);
112void CC_PWM_Ch4_Simulation(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS);
113/* Запись каналов таймера в порты GPIO */
114void Write_OC_to_GPIO(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS);
115/* Запись результата compare в глабальную структуру с TRIGGER OUTPUT */
116void Write_OC_to_TRGO(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS);
117//------------------------------------------------------------------//
118
119
120//--------------------MISC (temporary) FUNCTIONS--------------------//
121/* Определение источника для запуска таймера в SLAVE MODE */
122void Slave_Mode_Check_Source(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS);
123//------------------------------------------------------------------//
124
125
126//------------------------SIMULINK FUNCTIONS------------------------//
127// Симулирование выбранных таймеров
128void Simulate_TIMs(void);
129// Деинициализирование выбранных таймеров (вызывается в конце симуляции)
130void TIM_SIM_DEINIT(void);
131//------------------------------------------------------------------//
135#endif // _MATLAB_TIM_H_
void Overflow_Check(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
Definition stm32f4xx_matlab_tim.c:49
void Write_OC_to_GPIO(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
Definition stm32f4xx_matlab_tim.c:255
void Simulate_TIMs(void)
Definition stm32f4xx_matlab_tim.c:427
void TIM_Simulation(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
Definition stm32f4xx_matlab_tim.c:14
void Write_OC_to_TRGO(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
Definition stm32f4xx_matlab_tim.c:329
void TIM_SIM_DEINIT(void)
Definition stm32f4xx_matlab_tim.c:473
void TIMx_Count(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
Definition stm32f4xx_matlab_tim.c:40
void CC_PWM_Ch1_Simulation(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
Definition stm32f4xx_matlab_tim.c:87
void Channels_Simulation(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
Definition stm32f4xx_matlab_tim.c:74
void Slave_Mode_Check_Source(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
Definition stm32f4xx_matlab_tim.c:375
void CC_PWM_Ch3_Simulation(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
Definition stm32f4xx_matlab_tim.c:171
void call_IRQHandller(TIM_TypeDef *TIMx)
Definition stm32f4xx_matlab_tim.c:562
void CC_PWM_Ch4_Simulation(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
Definition stm32f4xx_matlab_tim.c:213
void CC_PWM_Ch2_Simulation(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
Definition stm32f4xx_matlab_tim.c:129
unsigned int uint32_t
Definition stdint.h:64
Definition stm32f4xx_matlab_tim.h:56
GPIO_TypeDef * OC2_GPIOx
Порт второго канала
Definition stm32f4xx_matlab_tim.h:67
unsigned OC4REF
Четвертый канал
Definition stm32f4xx_matlab_tim.h:61
uint32_t OC1_PIN_SHIFT
Пин первого канала
Definition stm32f4xx_matlab_tim.h:65
GPIO_TypeDef * OC1_GPIOx
Порт первого канала
Definition stm32f4xx_matlab_tim.h:64
GPIO_TypeDef * OC3_GPIOx
Порт третьего канала
Definition stm32f4xx_matlab_tim.h:70
GPIO_TypeDef * OC4_GPIOx
Порт четвертого канала
Definition stm32f4xx_matlab_tim.h:73
unsigned OC2REF
Второй канал
Definition stm32f4xx_matlab_tim.h:59
uint32_t OC4_PIN_SHIFT
Пин четвертого канала
Definition stm32f4xx_matlab_tim.h:74
unsigned OC1REF
Первый канал
Definition stm32f4xx_matlab_tim.h:58
unsigned OC3REF
Третьий канал
Definition stm32f4xx_matlab_tim.h:60
uint32_t OC3_PIN_SHIFT
Пин третьего канала
Definition stm32f4xx_matlab_tim.h:71
uint32_t OC2_PIN_SHIFT
Пин второго канала
Definition stm32f4xx_matlab_tim.h:68
General Purpose I/O.
Definition stm32f407xx_matlab.h:539
Definition stm32f4xx_matlab_tim.h:42
unsigned TIM1_TRGO
Синган синхронизации таймера 1.
Definition stm32f4xx_matlab_tim.h:43
unsigned TIM6_TRGO
Синган синхронизации таймера 6.
Definition stm32f4xx_matlab_tim.h:48
unsigned TIM8_TRGO
Синган синхронизации таймера 8
Definition stm32f4xx_matlab_tim.h:50
unsigned TIM2_TRGO
Синган синхронизации таймера 2.
Definition stm32f4xx_matlab_tim.h:44
unsigned TIM7_TRGO
Синган синхронизации таймера 7.
Definition stm32f4xx_matlab_tim.h:49
unsigned TIM5_TRGO
Синган синхронизации таймера 5.
Definition stm32f4xx_matlab_tim.h:47
unsigned TIM3_TRGO
Синган синхронизации таймера 3.
Definition stm32f4xx_matlab_tim.h:45
unsigned TIM4_TRGO
Синган синхронизации таймера 4.
Definition stm32f4xx_matlab_tim.h:46
Definition stm32f4xx_matlab_tim.h:80
int RELOAD
Буфер, если PRELOAD = 1.
Definition stm32f4xx_matlab_tim.h:83
double tx_cnt
Счетчик таймера
Definition stm32f4xx_matlab_tim.h:81
struct Channels_Sim Channels
Структура для симуляции каналов
Definition stm32f4xx_matlab_tim.h:84
double tx_step
Шаг счета за один шаг симуляции
Definition stm32f4xx_matlab_tim.h:82
TIM.
Definition stm32f407xx_matlab.h:741