И почему то все равно MATLAB намертво блокирует mingw64.... Приходится перезапускать матлаб для перекомпиляции
344 lines
9.5 KiB
C
344 lines
9.5 KiB
C
/**************************************************************************
|
||
Данный файл настраивает структуры для симуляции периферий, которые выбраны
|
||
дефайнами в stm32_matlab_conf.h.
|
||
|
||
**************************************************************************/
|
||
#include "stm32_matlab_conf.h"
|
||
#include "mcu_wrapper_conf.h"
|
||
#include "app_includes.h"
|
||
|
||
MCU_MemoryTypeDef MCU_MEM;
|
||
DBGMCU_TypeDef DEBUG_MCU;
|
||
MCU_CortexMemoryTypeDef MCU_CORTEX_MEM;
|
||
|
||
//-----------------------------------------------------------------------//
|
||
/*------------------------------FUNCTIONS--------------------------------*/
|
||
// MCU PERIPH INIT
|
||
void Initialize_Periph_Sim(void)
|
||
{
|
||
Init_TIM_SIM();
|
||
Init_ADC_SIM();
|
||
}
|
||
|
||
// MCU PERIPH SIM
|
||
void Simulate_Periph_Sim(void)
|
||
{
|
||
Simulate_TIMs();
|
||
Simulate_ADCs();
|
||
}
|
||
|
||
// MCU PERIPH DEINIT
|
||
void deInitialize_Periph_Sim(void)
|
||
{
|
||
TIM_SIM_DEINIT();
|
||
ADC_SIM_DEINIT();
|
||
}
|
||
// MCU DEINIT
|
||
void deInitialize_MCU(void)
|
||
{
|
||
// обнуление структуры, управляющей программой МК
|
||
memset(&hmcu, 0, sizeof(hmcu));
|
||
// обнуление структур, симулирующих память МК
|
||
memset(&MCU_MEM, 0, sizeof(MCU_MEM));
|
||
memset(&MCU_CORTEX_MEM, 0, sizeof(MCU_CORTEX_MEM));
|
||
memset(&htim1, 0, sizeof(htim1));
|
||
|
||
|
||
ClearStruct(htim1);
|
||
ClearStruct(htim3);
|
||
ClearStruct(htim8);
|
||
ClearStruct(htim11);
|
||
ClearStruct(htim12);
|
||
ClearStruct(htim13);
|
||
ClearStruct(hadc3);
|
||
ClearStruct(hdma_adc3);
|
||
}
|
||
|
||
/*------------------------------FUNCTIONS--------------------------------*/
|
||
//-----------------------------------------------------------------------//
|
||
|
||
//-----------------------------------------------------------------------//
|
||
/*-------------------------------TIMERS----------------------------------*/
|
||
// defines structure for simulate
|
||
#ifdef USE_TIM1
|
||
struct TIM_Sim tim1s;
|
||
#endif
|
||
#ifdef USE_TIM2
|
||
struct TIM_Sim tim2s;
|
||
#endif
|
||
#ifdef USE_TIM3
|
||
struct TIM_Sim tim3s;
|
||
#endif
|
||
#ifdef USE_TIM4
|
||
struct TIM_Sim tim4s;
|
||
#endif
|
||
#ifdef USE_TIM5
|
||
struct TIM_Sim tim5s;
|
||
#endif
|
||
#ifdef USE_TIM6
|
||
struct TIM_Sim tim6s;
|
||
#endif
|
||
#ifdef USE_TIM7
|
||
struct TIM_Sim tim7s;
|
||
#endif
|
||
#ifdef USE_TIM8
|
||
struct TIM_Sim tim8s;
|
||
#endif
|
||
#ifdef USE_TIM9
|
||
struct TIM_Sim tim9s;
|
||
#endif
|
||
#ifdef USE_TIM10
|
||
struct TIM_Sim tim10s;
|
||
#endif
|
||
#ifdef USE_TIM11
|
||
struct TIM_Sim tim11s;
|
||
#endif
|
||
#ifdef USE_TIM12
|
||
struct TIM_Sim tim12s;
|
||
#endif
|
||
#ifdef USE_TIM13
|
||
struct TIM_Sim tim13s;
|
||
#endif
|
||
#ifdef USE_TIM14
|
||
struct TIM_Sim tim14s;
|
||
#endif
|
||
|
||
// defines function for filling structure for simulate
|
||
void Init_TIM_SIM(void)
|
||
{
|
||
#ifdef USE_TIM1
|
||
memset(&tim1s, 0, sizeof(tim1s));
|
||
tim1s.tx_cnt = TIM1->CNT;
|
||
tim1s.tx_step = hmcu.sSimSampleTime * ABP2_TIMS_Value;
|
||
|
||
tim1s.Channels.OC1_GPIOx = GPIOA;
|
||
tim1s.Channels.OC1_PIN_SHIFT = 8;
|
||
tim1s.Channels.OC2_GPIOx = GPIOA;
|
||
tim1s.Channels.OC2_PIN_SHIFT = 9;
|
||
tim1s.Channels.OC3_GPIOx = GPIOA;
|
||
tim1s.Channels.OC3_PIN_SHIFT = 10;
|
||
tim1s.Channels.OC4_GPIOx = GPIOA;
|
||
tim1s.Channels.OC4_PIN_SHIFT = 11;
|
||
#endif
|
||
#ifdef USE_TIM2
|
||
memset(&tim2s, 0, sizeof(tim2s));
|
||
tim2s.tx_cnt = TIM2->CNT;
|
||
tim2s.tx_step = hmcu.sSimSampleTime * ABP1_TIMS_Value;
|
||
|
||
tim2s.Channels.OC1_GPIOx = GPIOA;
|
||
tim2s.Channels.OC1_PIN_SHIFT = 5;
|
||
tim2s.Channels.OC2_GPIOx = GPIOA;
|
||
tim2s.Channels.OC2_PIN_SHIFT = 1;
|
||
tim2s.Channels.OC3_GPIOx = GPIOA;
|
||
tim2s.Channels.OC3_PIN_SHIFT = 2;
|
||
tim2s.Channels.OC4_GPIOx = GPIOA;
|
||
tim2s.Channels.OC4_PIN_SHIFT = 3;
|
||
#endif
|
||
#ifdef USE_TIM3
|
||
memset(&tim3s, 0, sizeof(tim3s));
|
||
tim3s.tx_cnt = TIM3->CNT;
|
||
tim3s.tx_step = hmcu.sSimSampleTime * ABP1_TIMS_Value;
|
||
|
||
tim3s.Channels.OC1_GPIOx = GPIOB;
|
||
tim3s.Channels.OC1_PIN_SHIFT = 4;
|
||
tim3s.Channels.OC2_GPIOx = GPIOA;
|
||
tim3s.Channels.OC2_PIN_SHIFT = 7;
|
||
tim3s.Channels.OC3_GPIOx = GPIOC;
|
||
tim3s.Channels.OC3_PIN_SHIFT = 8;
|
||
tim3s.Channels.OC4_GPIOx = GPIOC;
|
||
tim3s.Channels.OC4_PIN_SHIFT = 9;
|
||
#endif
|
||
#ifdef USE_TIM4
|
||
memset(&tim4s, 0, sizeof(tim4s));
|
||
tim4s.tx_cnt = TIM4->CNT;
|
||
tim4s.tx_step = hmcu.sSimSampleTime * ABP1_TIMS_Value;
|
||
|
||
tim4s.Channels.OC1_GPIOx = GPIOD;
|
||
tim4s.Channels.OC1_PIN_SHIFT = 12;
|
||
tim4s.Channels.OC2_GPIOx = GPIOB;
|
||
tim4s.Channels.OC2_PIN_SHIFT = 7;
|
||
tim4s.Channels.OC3_GPIOx = GPIOB;
|
||
tim4s.Channels.OC3_PIN_SHIFT = 8;
|
||
tim4s.Channels.OC4_GPIOx = GPIOB;
|
||
tim4s.Channels.OC4_PIN_SHIFT = 9;
|
||
#endif
|
||
#ifdef USE_TIM5
|
||
memset(&tim5s, 0, sizeof(tim5s));
|
||
tim5s.tx_cnt = TIM5->CNT;
|
||
tim5s.tx_step = hmcu.sSimSampleTime * ABP1_TIMS_Value;
|
||
|
||
tim5s.Channels.OC1_GPIOx = GPIOA;
|
||
tim5s.Channels.OC1_PIN_SHIFT = 0;
|
||
tim5s.Channels.OC2_GPIOx = GPIOA;
|
||
tim5s.Channels.OC2_PIN_SHIFT = 1;
|
||
tim5s.Channels.OC3_GPIOx = GPIOA;
|
||
tim5s.Channels.OC3_PIN_SHIFT = 2;
|
||
tim5s.Channels.OC4_GPIOx = GPIOA;
|
||
tim5s.Channels.OC4_PIN_SHIFT = 3;
|
||
#endif
|
||
#ifdef USE_TIM6
|
||
memset(&tim6s, 0, sizeof(tim6s));
|
||
tim6s.tx_cnt = TIM6->CNT;
|
||
tim6s.tx_step = hmcu.sSimSampleTime * ABP1_TIMS_Value;
|
||
|
||
tim6s.Channels.OC1_GPIOx = GPIOA;
|
||
tim6s.Channels.OC1_PIN_SHIFT = 0;
|
||
tim6s.Channels.OC2_GPIOx = GPIOA;
|
||
tim6s.Channels.OC2_PIN_SHIFT = 0;
|
||
tim6s.Channels.OC3_GPIOx = GPIOA;
|
||
tim6s.Channels.OC3_PIN_SHIFT = 0;
|
||
tim6s.Channels.OC4_GPIOx = GPIOA;
|
||
tim6s.Channels.OC4_PIN_SHIFT = 0;
|
||
#endif
|
||
#ifdef USE_TIM7
|
||
memset(&tim7s, 0, sizeof(tim7s));
|
||
tim7s.tx_cnt = TIM7->CNT;
|
||
tim7s.tx_step = hmcu.sSimSampleTime * ABP1_TIMS_Value;
|
||
|
||
tim7s.Channels.OC1_GPIOx = GPIOA;
|
||
tim7s.Channels.OC1_PIN_SHIFT = 0;
|
||
tim7s.Channels.OC2_GPIOx = GPIOA;
|
||
tim7s.Channels.OC2_PIN_SHIFT = 0;
|
||
tim7s.Channels.OC3_GPIOx = GPIOA;
|
||
tim7s.Channels.OC3_PIN_SHIFT = 0;
|
||
tim7s.Channels.OC4_GPIOx = GPIOA;
|
||
tim7s.Channels.OC4_PIN_SHIFT = 0;
|
||
#endif
|
||
#ifdef USE_TIM8
|
||
memset(&tim8s, 0, sizeof(tim8s));
|
||
tim8s.tx_cnt = TIM8->CNT;
|
||
tim8s.tx_step = hmcu.sSimSampleTime * ABP2_TIMS_Value;
|
||
|
||
tim8s.Channels.OC1_GPIOx = GPIOA;
|
||
tim8s.Channels.OC1_PIN_SHIFT = 0;
|
||
tim8s.Channels.OC2_GPIOx = GPIOA;
|
||
tim8s.Channels.OC2_PIN_SHIFT = 0;
|
||
tim8s.Channels.OC3_GPIOx = GPIOA;
|
||
tim8s.Channels.OC3_PIN_SHIFT = 0;
|
||
tim8s.Channels.OC4_GPIOx = GPIOA;
|
||
tim8s.Channels.OC4_PIN_SHIFT = 0;
|
||
#endif
|
||
#ifdef USE_TIM9
|
||
memset(&tim9s, 0, sizeof(tim9s));
|
||
tim9s.tx_cnt = TIM9->CNT;
|
||
tim9s.tx_step = hmcu.sSimSampleTime * ABP2_TIMS_Value;
|
||
|
||
tim9s.Channels.OC1_GPIOx = GPIOA;
|
||
tim9s.Channels.OC1_PIN_SHIFT = 0;
|
||
tim9s.Channels.OC2_GPIOx = GPIOA;
|
||
tim9s.Channels.OC2_PIN_SHIFT = 0;
|
||
tim9s.Channels.OC3_GPIOx = GPIOA;
|
||
tim9s.Channels.OC3_PIN_SHIFT = 0;
|
||
tim9s.Channels.OC4_GPIOx = GPIOA;
|
||
tim9s.Channels.OC4_PIN_SHIFT = 0;
|
||
#endif
|
||
#ifdef USE_TIM10
|
||
memset(&tim10s, 0, sizeof(tim10s));
|
||
tim10s.tx_cnt = TIM10->CNT;
|
||
tim10s.tx_step = hmcu.sSimSampleTime * ABP2_TIMS_Value;
|
||
|
||
tim10s.Channels.OC1_GPIOx = GPIOA;
|
||
tim10s.Channels.OC1_PIN_SHIFT = 0;
|
||
tim10s.Channels.OC2_GPIOx = GPIOA;
|
||
tim10s.Channels.OC2_PIN_SHIFT = 0;
|
||
tim10s.Channels.OC3_GPIOx = GPIOA;
|
||
tim10s.Channels.OC3_PIN_SHIFT = 0;
|
||
tim10s.Channels.OC4_GPIOx = GPIOA;
|
||
tim10s.Channels.OC4_PIN_SHIFT = 0;
|
||
#endif
|
||
#ifdef USE_TIM11
|
||
memset(&tim11s, 0, sizeof(tim11s));
|
||
tim11s.tx_cnt = TIM11->CNT;
|
||
tim11s.tx_step = hmcu.sSimSampleTime * ABP2_TIMS_Value;
|
||
|
||
tim11s.Channels.OC1_GPIOx = GPIOA;
|
||
tim11s.Channels.OC1_PIN_SHIFT = 0;
|
||
tim11s.Channels.OC2_GPIOx = GPIOA;
|
||
tim11s.Channels.OC2_PIN_SHIFT = 0;
|
||
tim11s.Channels.OC3_GPIOx = GPIOA;
|
||
tim11s.Channels.OC3_PIN_SHIFT = 0;
|
||
tim11s.Channels.OC4_GPIOx = GPIOA;
|
||
tim11s.Channels.OC4_PIN_SHIFT = 0;
|
||
#endif
|
||
#ifdef USE_TIM12
|
||
memset(&tim12s, 0, sizeof(tim12s));
|
||
tim12s.tx_cnt = TIM12->CNT;
|
||
tim12s.tx_step = hmcu.sSimSampleTime * ABP1_TIMS_Value;
|
||
|
||
tim12s.Channels.OC1_GPIOx = GPIOA;
|
||
tim12s.Channels.OC1_PIN_SHIFT = 0;
|
||
tim12s.Channels.OC2_GPIOx = GPIOA;
|
||
tim12s.Channels.OC2_PIN_SHIFT = 0;
|
||
tim12s.Channels.OC3_GPIOx = GPIOA;
|
||
tim12s.Channels.OC3_PIN_SHIFT = 0;
|
||
tim12s.Channels.OC4_GPIOx = GPIOA;
|
||
tim12s.Channels.OC4_PIN_SHIFT = 0;
|
||
#endif
|
||
#ifdef USE_TIM13
|
||
memset(&tim13s, 0, sizeof(tim13s));
|
||
tim13s.tx_cnt = TIM13->CNT;
|
||
tim13s.tx_step = hmcu.sSimSampleTime * ABP1_TIMS_Value;
|
||
|
||
tim13s.Channels.OC1_GPIOx = GPIOA;
|
||
tim13s.Channels.OC1_PIN_SHIFT = 0;
|
||
tim13s.Channels.OC2_GPIOx = GPIOA;
|
||
tim13s.Channels.OC2_PIN_SHIFT = 0;
|
||
tim13s.Channels.OC3_GPIOx = GPIOA;
|
||
tim13s.Channels.OC3_PIN_SHIFT = 0;
|
||
tim13s.Channels.OC4_GPIOx = GPIOA;
|
||
tim13s.Channels.OC4_PIN_SHIFT = 0;
|
||
#endif
|
||
#ifdef USE_TIM14
|
||
memset(&tim14s, 0, sizeof(tim14s));
|
||
tim14s.tx_cnt = TIM14->CNT;
|
||
tim14s.tx_step = hmcu.sSimSampleTime * ABP1_TIMS_Value;
|
||
|
||
tim14s.Channels.OC1_GPIOx = GPIOA;
|
||
tim14s.Channels.OC1_PIN_SHIFT = 0;
|
||
tim14s.Channels.OC2_GPIOx = GPIOA;
|
||
tim14s.Channels.OC2_PIN_SHIFT = 0;
|
||
tim14s.Channels.OC3_GPIOx = GPIOA;
|
||
tim14s.Channels.OC3_PIN_SHIFT = 0;
|
||
tim14s.Channels.OC4_GPIOx = GPIOA;
|
||
tim14s.Channels.OC4_PIN_SHIFT = 0;
|
||
#endif
|
||
}
|
||
/*-------------------------------TIMERS----------------------------------*/
|
||
//-----------------------------------------------------------------------//
|
||
|
||
|
||
|
||
//-----------------------------------------------------------------------//
|
||
/*---------------------------------ADC-----------------------------------*/
|
||
#ifdef USE_ADC1
|
||
struct ADC_Sim adc1s;
|
||
#endif
|
||
#ifdef USE_ADC2
|
||
struct ADC_Sim adc2s;
|
||
#endif
|
||
#ifdef USE_ADC3
|
||
struct ADC_Sim adc3s;
|
||
#endif
|
||
void Init_ADC_SIM(void)
|
||
{
|
||
#ifdef USE_ADC1
|
||
memset(&adc1s, 0, sizeof(adc1s));
|
||
adc1s.simulation_step = hmcu.sSimSampleTime;
|
||
adc1s.adc_clock_freq = ABP2_Value; // Частота APB2
|
||
#endif
|
||
|
||
#ifdef USE_ADC2
|
||
memset(&adc2s, 0, sizeof(adc2s));
|
||
adc2s.simulation_step = hmcu.sSimSampleTime;
|
||
adc2s.adc_clock_freq = ABP2_Value; // Частота APB2
|
||
#endif
|
||
|
||
#ifdef USE_ADC3
|
||
memset(&adc3s, 0, sizeof(adc3s));
|
||
adc3s.simulation_step = hmcu.sSimSampleTime;
|
||
adc3s.adc_clock_freq = ABP2_Value; // Частота APB2
|
||
#endif
|
||
}
|
||
/*---------------------------------ADC-----------------------------------*/
|
||
//-----------------------------------------------------------------------//
|