Начата работа с документацией
This commit is contained in:
@@ -1,7 +1,12 @@
|
||||
#include "stm32f4xx_matlab_gpio.h"
|
||||
|
||||
#include "modbus.h"
|
||||
|
||||
/**
|
||||
* @brief Write S-Function disc ports from MCU GPIOs.
|
||||
* @param disc - discrete array of S-Function. Outputs would be written from disc.
|
||||
* @details Функция для записи дискретных выходов S-Function из GPIO.
|
||||
После в @ref SIM_writeOutputs из disc формируются выходы S-Function.
|
||||
*/
|
||||
void GPIO_to_SFUNC(real_T* disc)
|
||||
{
|
||||
for (int i = 0; i < PORT_WIDTH; i++)
|
||||
@@ -23,6 +28,12 @@ void GPIO_to_SFUNC(real_T* disc)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Write S-Function inputs to MCU.
|
||||
* @param disc - discrete array of S-Function. Outputs would be written from disc.
|
||||
* @details Функция для считывания входов S-Function в МК.
|
||||
Можно абстрагироваться от считывания в GPIO и записывать напрямую в переменные МК.
|
||||
*/
|
||||
void SFUNC_to_GPIO(real_T* in)
|
||||
{
|
||||
// write pwm ctrl registers
|
||||
|
||||
@@ -5,7 +5,20 @@
|
||||
#include "simstruc.h"
|
||||
#include "mcu_wrapper_conf.h"
|
||||
|
||||
/**
|
||||
* @addtogroup GPIO_SIMULATOR
|
||||
* @ingroup MAIN_SIMULATOR
|
||||
* @brief Simulator for GPIO
|
||||
* @details Определяет взаимодействие портов МК и оболочки (S-Function)
|
||||
* @{
|
||||
*/
|
||||
|
||||
/* Функция для записи дискретных выходов S-Function из GPIO */
|
||||
void SFUNC_to_GPIO(real_T* disc);
|
||||
/* Функция для считывания входов S-Function в МК */
|
||||
void GPIO_to_SFUNC(real_T* in);
|
||||
|
||||
/** GPIO_SIMULATOR
|
||||
* @}
|
||||
*/
|
||||
#endif // _MATLAB_GPIO_H_
|
||||
@@ -3,6 +3,14 @@
|
||||
|
||||
#include "mcu_wrapper_conf.h"
|
||||
|
||||
/**
|
||||
* @addtogroup RCC_SIMULATOR
|
||||
* @ingroup MAIN_SIMULATOR
|
||||
* @brief Simulator for RCC and Clocks
|
||||
* @details Определ¤ет параметры тактирования МК.
|
||||
Содержит дефайны дл¤ скипа бесконечных циклов ожидающих выставление флагов
|
||||
* @{
|
||||
*/
|
||||
|
||||
|
||||
//#define SYSLCK_Value ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)
|
||||
@@ -15,8 +23,8 @@
|
||||
#define ABP2_Value (double)72000000;
|
||||
#define ABP2_TIMS_Value (double)72000000;
|
||||
|
||||
/* Ýòè äåôàéíû äîáàâëåíû â êîä stm32f4xx_hal_rcc.c, ÷òîáû íå ïîïàñòü â áåñêîíå÷íûé öèêë */
|
||||
/* Ìá ïåðåíåñòè â MCU_Periph_Simulation(), íî ÷åò íå õî÷åòñÿ íàãðóæàòü ñèìóëÿöèþ ýòîé õåðíåé*/
|
||||
/* Эти дефайны добавлены в код stm32f4xx_hal_rcc.c, чтобы не попасть в бесконечный цикл */
|
||||
/* Мб перенести в MCU_Periph_Simulation(), но чет не хочется нагружать симуляцию этой херней*/
|
||||
#define _RCC_SET_FLAG(__FLAG__) \
|
||||
if(((__FLAG__) >> 5U) == 1U) RCC->CR |= (1U << ((__FLAG__) & RCC_FLAG_MASK)); \
|
||||
else if(((__FLAG__) >> 5U) == 2U) RCC->BDCR |= (1U << ((__FLAG__) & RCC_FLAG_MASK)); \
|
||||
@@ -35,4 +43,8 @@ if(_condition_) _RCC_CLEAR_FLAG(_flag_)
|
||||
#define Clear_Flag_If_Its_Expected(_flag_, _condition_) \
|
||||
if(_condition_) _RCC_SET_FLAG(_flag_)
|
||||
|
||||
/** RCC_SIMULATOR
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif // _MATLAB_RCC_H_
|
||||
@@ -6,11 +6,11 @@
|
||||
|
||||
|
||||
|
||||
struct SlaveChannels Slave_Channels; // структура для связи и синхронизации таймеров
|
||||
struct SlaveChannels Slave_Channels; ///< структура для связи и синхронизации таймеров
|
||||
|
||||
|
||||
//----------------------TIMER BASE FUNCTIONS-----------------------//
|
||||
/* Базовая функция для симуляции таймера: она вызывается каждый шаг симуляции */
|
||||
/** Базовая функция для симуляции таймера: она вызывается каждый шаг симуляции */
|
||||
void TIM_Simulation(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
|
||||
{
|
||||
Overflow_Check(TIMx, TIMS);
|
||||
@@ -36,7 +36,7 @@ switch (TIMx->SMCR & TIM_SMCR_SMS) // TIMER MODE
|
||||
}
|
||||
|
||||
}
|
||||
/* Счет таймера за один такт */
|
||||
/** Счет таймера за один такт */
|
||||
void TIMx_Count(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS)
|
||||
{
|
||||
if ((TIMx->CR1 & TIM_CR1_DIR) && TIMx->CR1) // up COUNTER and COUNTER ENABLE
|
||||
@@ -45,7 +45,7 @@ void TIMx_Count(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS)
|
||||
TIMS->tx_cnt += TIMS->tx_step / TIMx->PSC;
|
||||
TIMx->CNT = (uint32_t)TIMS->tx_cnt;
|
||||
}
|
||||
/* Проверка на переполнение и дальнейшая его обработка */
|
||||
/** Проверка на переполнение и дальнейшая его обработка */
|
||||
void Overflow_Check(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS)
|
||||
{
|
||||
// Переполнение таймера: сброс таймера и вызов прерывания
|
||||
@@ -70,7 +70,7 @@ void Overflow_Check(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS)
|
||||
|
||||
|
||||
//----------------------------CHANNELS-----------------------------//
|
||||
/* Симуляция каналов таймера */
|
||||
/** Симуляция каналов таймера */
|
||||
void Channels_Simulation(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS)
|
||||
{
|
||||
CC_PWM_Ch1_Simulation(TIMx, TIMS);
|
||||
@@ -83,7 +83,7 @@ void Channels_Simulation(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS)
|
||||
Write_OC_to_TRGO(TIMx, TIMS);
|
||||
}
|
||||
//-----------------CAPTURE COPMARE & PWM FUNCTIONS------------------//
|
||||
/* Выбор режима CaptureCompare или PWM и симуляция для каждого канала */
|
||||
/** Выбор режима CaptureCompare или PWM и симуляция для первого канала */
|
||||
void CC_PWM_Ch1_Simulation(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
|
||||
{ // определяет режим канала
|
||||
switch (TIMx->CCMR1 & TIM_CCMR1_OC1M)
|
||||
@@ -125,6 +125,7 @@ switch (TIMx->CCMR1 & TIM_CCMR1_OC1M)
|
||||
|
||||
}
|
||||
}
|
||||
/** Выбор режима CaptureCompare или PWM и симуляция для второго канала */
|
||||
void CC_PWM_Ch2_Simulation(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
|
||||
{ // определяет режим канала
|
||||
switch (TIMx->CCMR1 & TIM_CCMR1_OC2M)
|
||||
@@ -166,6 +167,7 @@ switch (TIMx->CCMR1 & TIM_CCMR1_OC2M)
|
||||
|
||||
}
|
||||
}
|
||||
/** Выбор режима CaptureCompare или PWM и симуляция для третьего канала */
|
||||
void CC_PWM_Ch3_Simulation(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
|
||||
{ // определяет режим канала
|
||||
switch (TIMx->CCMR2 & TIM_CCMR1_OC1M)
|
||||
@@ -207,6 +209,7 @@ switch (TIMx->CCMR2 & TIM_CCMR1_OC1M)
|
||||
|
||||
}
|
||||
}
|
||||
/** Выбор режима CaptureCompare или PWM и симуляция для четвертого канала */
|
||||
void CC_PWM_Ch4_Simulation(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
|
||||
{ // определяет режим канала
|
||||
switch (TIMx->CCMR2 & TIM_CCMR1_OC2M)
|
||||
@@ -248,7 +251,7 @@ switch (TIMx->CCMR2 & TIM_CCMR1_OC2M)
|
||||
|
||||
}
|
||||
}
|
||||
/* Запись каналов таймера в порты GPIO */
|
||||
/** Запись каналов таймера в порты GPIO */
|
||||
void Write_OC_to_GPIO(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
|
||||
{
|
||||
// write gpio pin if need
|
||||
@@ -322,7 +325,7 @@ void Write_OC_to_GPIO(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS)
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Запись результата compare в глабальную структуру с TRIGGER OUTPUT */
|
||||
/** Запись результата compare в глабальную структуру с TRIGGER OUTPUT */
|
||||
void Write_OC_to_TRGO(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS)
|
||||
{
|
||||
// write trigger output from OCxREF pin if need
|
||||
@@ -368,7 +371,7 @@ void Write_OC_to_TRGO(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS)
|
||||
|
||||
|
||||
//--------------------MISC (temporary) FUNCTIONS--------------------//
|
||||
/* Определение источника для запуска таймера в SLAVE MODE */
|
||||
/** Определение источника для запуска таймера в SLAVE MODE */
|
||||
void Slave_Mode_Check_Source(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS)
|
||||
{
|
||||
if (TIMx == TIM2)
|
||||
@@ -420,7 +423,7 @@ void Slave_Mode_Check_Source(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS)
|
||||
|
||||
|
||||
//------------------------SIMULINK FUNCTIONS------------------------//
|
||||
// Симулирование выбранных таймеров
|
||||
/** Симулирование выбранных через дефайн таймеров */
|
||||
void Simulate_TIMs(void)
|
||||
{
|
||||
#ifdef USE_TIM1
|
||||
@@ -466,7 +469,7 @@ void Simulate_TIMs(void)
|
||||
TIM_Simulation(TIM14, &tim14s);
|
||||
#endif
|
||||
}
|
||||
// Деинициализирование выбранных таймеров (вызывается в конце симуляции)
|
||||
/* Деинициализирование выбранных через дефайн таймеров (вызывается в конце симуляции) */
|
||||
void TIM_SIM_DEINIT(void)
|
||||
{
|
||||
#ifdef USE_TIM1
|
||||
@@ -555,7 +558,7 @@ void TIM8_BRK_TIM12_IRQHandler(void) {}
|
||||
void TIM8_TRG_COM_TIM14_IRQHandler(void) {}
|
||||
#endif
|
||||
|
||||
/* Вызов прерывания */
|
||||
/** Вызов прерывания */
|
||||
void call_IRQHandller(TIM_TypeDef* TIMx)
|
||||
{ // calling HANDLER
|
||||
if ((TIMx == TIM1) || (TIMx == TIM10))
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/**************************************************************************
|
||||
Äàííûé ôàéë ñîäåðæèò îáúÿâëåíèÿ âñÿêîãî äëÿ ñèìóëÿöèè òàéìåðîâ STM32F407xx.
|
||||
Данный файл содержит объявления всякого для симуляции таймеров STM32F407xx.
|
||||
|
||||
**************************************************************************/
|
||||
#ifndef _MATLAB_TIM_H_
|
||||
@@ -9,67 +9,79 @@
|
||||
#include "stm32f4xx_it.h"
|
||||
#include "mcu_wrapper_conf.h"
|
||||
|
||||
|
||||
/**
|
||||
* @addtogroup TIM_SIMULATOR
|
||||
* @ingroup MAIN_SIMULATOR
|
||||
* @brief Simulator for TIM
|
||||
* @details Дефайны и функции для симуляции таймеров.
|
||||
* @{
|
||||
*/
|
||||
|
||||
/////////////////////////////---DEFINES---/////////////////////////////
|
||||
/* äåôàéí äëÿ ñäâèãà ìåæäó ïåðâîé è âòîðîé ïîëîâèíîé CCMRx ðåãèñòðîâ */
|
||||
#define TIM_OCMODE_SECOND_SHIFT TIM_CCMR1_OC2M_Pos - TIM_CCMR1_OC1M_Pos
|
||||
/** Дефайн для сдвига между первой и второй половиной CCMRx регистров */
|
||||
#define TIM_OCMODE_SECOND_SHIFT (TIM_CCMR1_OC2M_Pos - TIM_CCMR1_OC1M_Pos)
|
||||
|
||||
/* äåôàéíû äëÿ ïðîâåðêè âûâîäèòü ëè êàíàë íà GPIO (íàñòðîåí ëè GPIO íà àëüòåðíàòèâíóþ ôóíêöèþ) */
|
||||
#define Check_OC1_GPIO_Output(_tims_) (_tims_->Channels.OC1_GPIOx->MODER & (0b11<<(2*_tims_->Channels.OC1_PIN_SHIFT))) == (0b10<<(2*_tims_->Channels.OC1_PIN_SHIFT))
|
||||
#define Check_OC2_GPIO_Output(_tims_) (_tims_->Channels.OC2_GPIOx->MODER & (0b11<<(2*_tims_->Channels.OC2_PIN_SHIFT))) == (0b10<<(2*_tims_->Channels.OC2_PIN_SHIFT))
|
||||
#define Check_OC3_GPIO_Output(_tims_) (_tims_->Channels.OC3_GPIOx->MODER & (0b11<<(2*_tims_->Channels.OC3_PIN_SHIFT))) == (0b10<<(2*_tims_->Channels.OC3_PIN_SHIFT))
|
||||
#define Check_OC4_GPIO_Output(_tims_) (_tims_->Channels.OC4_GPIOx->MODER & (0b11<<(2*_tims_->Channels.OC4_PIN_SHIFT))) == (0b10<<(2*_tims_->Channels.OC4_PIN_SHIFT))
|
||||
/** Дефайн для проверки выводить ли канал на GPIO (настроен ли GPIO на альтернативную функцию) */
|
||||
#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_))
|
||||
/** Дефайн для проверки выводить ли канал 1 на GPIO (настроен ли GPIO на альтернативную функцию) */
|
||||
#define Check_OC1_GPIO_Output(_tims_) Check_OCx_GPIO_Output(_tims_, OC1_GPIOx, OC1_PIN_SHIFT)
|
||||
/** Дефайн для проверки выводить ли канал 2 на GPIO (настроен ли GPIO на альтернативную функцию) */
|
||||
#define Check_OC2_GPIO_Output(_tims_) Check_OCx_GPIO_Output(_tims_, OC2_GPIOx, OC2_PIN_SHIFT)
|
||||
/** Дефайн для проверки выводить ли канал 3 на GPIO (настроен ли GPIO на альтернативную функцию) */
|
||||
#define Check_OC3_GPIO_Output(_tims_) Check_OCx_GPIO_Output(_tims_, OC3_GPIOx, OC3_PIN_SHIFT)
|
||||
/** Дефайн для проверки выводить ли канал 4 на GPIO (настроен ли GPIO на альтернативную функцию) */
|
||||
#define Check_OC4_GPIO_Output(_tims_) Check_OCx_GPIO_Output(_tims_, OC4_GPIOx, OC4_PIN_SHIFT)
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
///////////////////////////---STRUCTURES---//////////////////////////
|
||||
/* Ñòðóêòóðà äëÿ óïðàâëåíèÿ Ñëåéâ Òàéìåðàìè */
|
||||
/** Структура для управления Слейв Таймерами */
|
||||
struct SlaveChannels
|
||||
{
|
||||
unsigned TIM1_TRGO : 1;
|
||||
unsigned TIM2_TRGO : 1;
|
||||
unsigned TIM3_TRGO : 1;
|
||||
unsigned TIM4_TRGO : 1;
|
||||
unsigned TIM5_TRGO : 1;
|
||||
unsigned TIM6_TRGO : 1;
|
||||
unsigned TIM7_TRGO : 1;
|
||||
unsigned TIM8_TRGO : 1;
|
||||
unsigned TIM1_TRGO : 1; ///< Синган синхронизации таймера 1
|
||||
unsigned TIM2_TRGO : 1; ///< Синган синхронизации таймера 2
|
||||
unsigned TIM3_TRGO : 1; ///< Синган синхронизации таймера 3
|
||||
unsigned TIM4_TRGO : 1; ///< Синган синхронизации таймера 4
|
||||
unsigned TIM5_TRGO : 1; ///< Синган синхронизации таймера 5
|
||||
unsigned TIM6_TRGO : 1; ///< Синган синхронизации таймера 6
|
||||
unsigned TIM7_TRGO : 1; ///< Синган синхронизации таймера 7
|
||||
unsigned TIM8_TRGO : 1; ///< Синган синхронизации таймера 8
|
||||
|
||||
};
|
||||
|
||||
/* Ñòðóêòóðà äëÿ ìîäåëèðîâàíèÿ êàíàëîâ òàéìåðà */
|
||||
/** Структура для моделирования каналов таймера */
|
||||
struct Channels_Sim
|
||||
{
|
||||
// ñâÿçàííûå ñ êàíàëàìè GPIO ïîðòû è ïèíû
|
||||
GPIO_TypeDef *OC1_GPIOx;
|
||||
uint32_t OC1_PIN_SHIFT;
|
||||
// Каналы таймера
|
||||
unsigned OC1REF:1; ///< Первый канал
|
||||
unsigned OC2REF:1; ///< Второй канал
|
||||
unsigned OC3REF:1; ///< Третьий канал
|
||||
unsigned OC4REF:1; ///< Четвертый канал
|
||||
|
||||
GPIO_TypeDef *OC2_GPIOx;
|
||||
uint32_t OC2_PIN_SHIFT;
|
||||
// связанные с каналами GPIO порты и пины
|
||||
GPIO_TypeDef *OC1_GPIOx; ///< Порт первого канала
|
||||
uint32_t OC1_PIN_SHIFT; ///< Пин первого канала
|
||||
|
||||
GPIO_TypeDef *OC3_GPIOx;
|
||||
uint32_t OC3_PIN_SHIFT;
|
||||
GPIO_TypeDef *OC2_GPIOx; ///< Порт второго канала
|
||||
uint32_t OC2_PIN_SHIFT; ///< Пин второго канала
|
||||
|
||||
GPIO_TypeDef *OC4_GPIOx;
|
||||
uint32_t OC4_PIN_SHIFT;
|
||||
GPIO_TypeDef *OC3_GPIOx; ///< Порт третьего канала
|
||||
uint32_t OC3_PIN_SHIFT; ///< Пин третьего канала
|
||||
|
||||
GPIO_TypeDef *OC4_GPIOx; ///< Порт четвертого канала
|
||||
uint32_t OC4_PIN_SHIFT; ///< Пин четвертого канала
|
||||
|
||||
// Êàíàëû òàéìåðà
|
||||
unsigned OC1REF:1;
|
||||
unsigned OC2REF:1;
|
||||
unsigned OC3REF:1;
|
||||
unsigned OC4REF:1;
|
||||
};
|
||||
|
||||
/* Ñòðóêòóðà äëÿ ìîäåëèðîâàíèÿ òàéìåðà */
|
||||
/** Структура для моделирования таймера */
|
||||
struct TIM_Sim
|
||||
{
|
||||
double tx_cnt; // ñ÷åò÷èê òàéìåðà
|
||||
double tx_step; // øàã ñ÷åòà çà îäèí øàã ñèìóëÿöèè
|
||||
int RELOAD; // áóôåð, åñëè PRELOAD = 1
|
||||
struct Channels_Sim Channels; // ñòðóêòóðà äëÿ ñèìóëÿöèè êàíàëîâ
|
||||
double tx_cnt; ///< Счетчик таймера
|
||||
double tx_step; ///< Шаг счета за один шаг симуляции
|
||||
int RELOAD; ///< Буфер, если PRELOAD = 1
|
||||
struct Channels_Sim Channels; ///< Структура для симуляции каналов
|
||||
};
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -78,43 +90,46 @@ struct TIM_Sim
|
||||
///////////////////////////---FUNCTIONS---///////////////////////////
|
||||
|
||||
//----------------------TIMER BASE 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);
|
||||
//-----------------------------------------------------------------//
|
||||
|
||||
|
||||
//------------------------CHANNELS FUNCTIONS-----------------------//
|
||||
/* Ñèìóëÿöèÿ êàíàëîâ òàéìåðà */
|
||||
/* Симуляция каналов таймера */
|
||||
void Channels_Simulation(TIM_TypeDef *TIMx, struct TIM_Sim *TIMS);
|
||||
/*---------------- - CAPTURE COPMARE & PWM FUNCTIONS------------------*/
|
||||
/* Âûáîð ðåæèìà CaptureCompare èëè PWM è ñèìóëÿöèÿ äëÿ êàæäîãî êàíàëà */
|
||||
/* Выбор режима CaptureCompare или PWM и симуляция для каждого канала */
|
||||
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);
|
||||
/* Çàïèñü êàíàëîâ òàéìåðà â ïîðòû GPIO */
|
||||
/* Запись каналов таймера в порты GPIO */
|
||||
void Write_OC_to_GPIO(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS);
|
||||
/* Çàïèñü ðåçóëüòàòà compare â ãëàáàëüíóþ ñòðóêòóðó ñ TRIGGER OUTPUT */
|
||||
/* Запись результата compare в глабальную структуру с TRIGGER OUTPUT */
|
||||
void Write_OC_to_TRGO(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS);
|
||||
//------------------------------------------------------------------//
|
||||
|
||||
|
||||
//--------------------MISC (temporary) FUNCTIONS--------------------//
|
||||
/* Îïðåäåëåíèå èñòî÷íèêà äëÿ çàïóñêà òàéìåðà â SLAVE MODE */
|
||||
/* Определение источника для запуска таймера в SLAVE MODE */
|
||||
void Slave_Mode_Check_Source(TIM_TypeDef* TIMx, struct TIM_Sim* TIMS);
|
||||
//------------------------------------------------------------------//
|
||||
|
||||
|
||||
//------------------------SIMULINK FUNCTIONS------------------------//
|
||||
// Ñèìóëèðîâàíèå âûáðàííûõ òàéìåðîâ
|
||||
// Симулирование выбранных таймеров
|
||||
void Simulate_TIMs(void);
|
||||
// Äåèíèöèàëèçèðîâàíèå âûáðàííûõ òàéìåðîâ (âûçûâàåòñÿ â êîíöå ñèìóëÿöèè)
|
||||
// Деинициализирование выбранных таймеров (вызывается в конце симуляции)
|
||||
void TIM_SIM_DEINIT(void);
|
||||
//------------------------------------------------------------------//
|
||||
/** TIM_SIMULATOR
|
||||
* @}
|
||||
*/
|
||||
#endif // _MATLAB_TIM_H_
|
||||
|
||||
@@ -7,6 +7,13 @@
|
||||
**************************************************************************/
|
||||
#include "stm32f407xx_matlab.h"
|
||||
|
||||
/**
|
||||
* @addtogroup PERIPH_VARS_FOR_DEBUG
|
||||
* @ingroup STM_SIMULATION
|
||||
* @brief Varables of peripheral registers for debug watches
|
||||
* @{
|
||||
*/
|
||||
|
||||
|
||||
TIM_TypeDef* tim2 = TIM2;
|
||||
TIM_TypeDef* tim3 = TIM3;
|
||||
@@ -91,4 +98,9 @@ FSMC_Bank2_3_TypeDef* fsmc_bank2_3_r = FSMC_Bank2_3;
|
||||
FSMC_Bank4_TypeDef* fsmc_bank4_r = FSMC_Bank4;
|
||||
DBGMCU_TypeDef* dbgmcu = DBGMCU;
|
||||
USB_OTG_GlobalTypeDef* usb_otg_fs_periph = USB_OTG_FS;
|
||||
USB_OTG_GlobalTypeDef* usb_otg_hs_periph = USB_OTG_HS;
|
||||
USB_OTG_GlobalTypeDef* usb_otg_hs_periph = USB_OTG_HS;
|
||||
|
||||
|
||||
/** PERIPH_VARS_FOR_DEBUG
|
||||
* @}
|
||||
*/
|
||||
Reference in New Issue
Block a user