12#include "stm32f4xx_hal.h" 
   13#include "stm32f4xx_it.h" 
   28#define TIM_OCMODE_SECOND_SHIFT                 (TIM_CCMR1_OC2M_Pos - TIM_CCMR1_OC1M_Pos) 
   34#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_)) 
   38#define Check_OC1_GPIO_Output(_tims_)           Check_OCx_GPIO_Output(_tims_, OC1_GPIOx, OC1_PIN_SHIFT) 
   42#define Check_OC2_GPIO_Output(_tims_)           Check_OCx_GPIO_Output(_tims_, OC2_GPIOx, OC2_PIN_SHIFT) 
   46#define Check_OC3_GPIO_Output(_tims_)           Check_OCx_GPIO_Output(_tims_, OC3_GPIOx, OC3_PIN_SHIFT) 
   50#define Check_OC4_GPIO_Output(_tims_)           Check_OCx_GPIO_Output(_tims_, OC4_GPIOx, OC4_PIN_SHIFT) 
void Overflow_Check(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
Проверка на переполнение и дальнейшая его обработка.
 
void Write_OC_to_GPIO(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
Запись каналов таймера в порты GPIO.
 
void Simulate_TIMs(void)
Симуляция выбранных таймеров.
 
void TIM_Simulation(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
Симуляция таймера на один такт симуляции.
 
void Write_OC_to_TRGO(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
Запись каналов таймера в глабальную структуру с TRIGGER OUTPUT.
 
void TIM_SIM_DEINIT(void)
Деинициализирование выбранных таймеров.
 
void TIMx_Count(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
Симуляция счетчика таймера на один такт симуляции.
 
void CC_PWM_Ch1_Simulation(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
Выбор режима первого канала и его симуляция.
 
void Slave_Mode_Check_Source(TIM_TypeDef *TIMx)
Определение источника для запуска таймера в SLAVE MODE.
 
void Channels_Simulation(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
Симуляция каналов таймера.
 
void CC_PWM_Ch3_Simulation(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
Выбор режима третьего канала и его симуляция.
 
void call_IRQHandller(TIM_TypeDef *TIMx)
Вызов прерывания таймера TIMx.
 
void CC_PWM_Ch4_Simulation(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
Выбор режима четвертого канала и его симуляция.
 
void CC_PWM_Ch2_Simulation(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
Выбор режима второго канала и его симуляция.
 
Заголовочный файл для оболочки МК.
 
Структура для моделирования каналов таймера
 
GPIO_TypeDef * OC2_GPIOx
Порт второго канала
 
unsigned OC4REF
Четвертый канал
 
uint32_t OC1_PIN_SHIFT
Пин первого канала
 
GPIO_TypeDef * OC1_GPIOx
Порт первого канала
 
GPIO_TypeDef * OC3_GPIOx
Порт третьего канала
 
GPIO_TypeDef * OC4_GPIOx
Порт четвертого канала
 
unsigned OC2REF
Второй канал
 
uint32_t OC4_PIN_SHIFT
Пин четвертого канала
 
unsigned OC1REF
Первый канал
 
unsigned OC3REF
Третьий канал
 
uint32_t OC3_PIN_SHIFT
Пин третьего канала
 
uint32_t OC2_PIN_SHIFT
Пин второго канала
 
Структура для управления Слейв Таймерами
 
unsigned TIM1_TRGO
Синган синхронизации таймера 1.
 
unsigned TIM6_TRGO
Синган синхронизации таймера 6.
 
unsigned TIM8_TRGO
Синган синхронизации таймера 8
 
unsigned TIM2_TRGO
Синган синхронизации таймера 2.
 
unsigned TIM7_TRGO
Синган синхронизации таймера 7.
 
unsigned TIM5_TRGO
Синган синхронизации таймера 5.
 
unsigned TIM3_TRGO
Синган синхронизации таймера 3.
 
unsigned TIM4_TRGO
Синган синхронизации таймера 4.
 
Структура для моделирования таймера
 
int RELOAD
Буфер для периода таймера (для реализации функции PRELOAD)
 
double tx_cnt
Счетчик таймера (double, т.к. кол-во тактов за шаг симуляции может быть дробным)
 
struct Channels_Sim Channels
Структура для симуляции каналов
 
double tx_step
Шаг счета за один шаг симуляции (double, т.к. кол-во тактов за шаг симуляции может быть дробным)