/************************************************************************** Данный файл настраивает структуры для симуляции периферий, которые выбраны дефайнами в stm32_matlab_conf.h. **************************************************************************/ #include "stm32_matlab_conf.h" #include "mcu_wrapper_conf.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)); } /*------------------------------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_TIMx memset(&tim6s, 0, sizeof(tim6s)); tim6s.tx_cnt = TIMx->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 } /*-------------------------------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-----------------------------------*/ //-----------------------------------------------------------------------//