From e4f05bdf6a91ec4bf5bf7946675839c31dcf5152 Mon Sep 17 00:00:00 2001 From: Razvalyaev Date: Thu, 13 Nov 2025 18:56:29 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=BF=D0=BE=20=D0=BC=D0=BE=D0=BD=D0=B8=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=B8=D0=BD=D0=B3=D1=83=20=D1=81=D0=B5=D1=82=D0=B8?= =?UTF-8?q?=20=D0=B8=20=D0=BC=D0=BE=D0=B4=D0=B5=D0=BB=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Неудачная попытка добавить биквадратный фильтр для АЦП (уходит в разнос) --- .../Drivers/STM32_SIMULINK/stm32_matlab_tim.h | 2 +- MATLAB/MCU_STM32_Matlab/stm32_matlab_conf.c | 2 +- MATLAB/MCU_Wrapper/mcu_wrapper.c | 6 +- MATLAB/MCU_Wrapper/mcu_wrapper_conf.h | 6 +- MATLAB/app_wrapper/app_init.c | 1 + MATLAB/app_wrapper/app_io.c | 24 ++++ MATLAB/upp_r2023.slx | Bin 67995 -> 68917 bytes UPP/AllLibs/MyLibs | 2 +- UPP/Core/Configs/upp_config.h | 18 ++- UPP/Core/Inc/main.h | 6 +- UPP/Core/Inc/tim.h | 6 +- UPP/Core/PowerMonitor/adc_tools.c | 57 ++++++-- UPP/Core/PowerMonitor/adc_tools.h | 10 +- UPP/Core/PowerMonitor/power_monitor.c | 46 +++++-- UPP/Core/PowerMonitor/power_monitor.h | 6 +- UPP/Core/PowerMonitor/zero_cross.c | 110 ++++++--------- UPP/Core/PowerMonitor/zero_cross.h | 13 +- UPP/Core/Src/main.c | 2 +- UPP/Core/Src/tim.c | 126 ++++++++++++------ UPP/Core/UPP/upp_main.c | 1 + UPP/MDK-ARM/UPP.uvoptx | 2 +- UPP/MDK-ARM/UPP.uvprojx | 2 +- UPP/UPP.ioc | 116 ++++++++-------- 23 files changed, 341 insertions(+), 223 deletions(-) diff --git a/MATLAB/MCU_STM32_Matlab/Drivers/STM32_SIMULINK/stm32_matlab_tim.h b/MATLAB/MCU_STM32_Matlab/Drivers/STM32_SIMULINK/stm32_matlab_tim.h index 15572a8..bca554e 100644 --- a/MATLAB/MCU_STM32_Matlab/Drivers/STM32_SIMULINK/stm32_matlab_tim.h +++ b/MATLAB/MCU_STM32_Matlab/Drivers/STM32_SIMULINK/stm32_matlab_tim.h @@ -72,7 +72,7 @@ struct TIM_Sim int Updated; // счетчик таймера double tx_cnt; // счетчик таймера double tx_step; // шаг счета за один шаг симуляции - int RELOAD; // буфер, если PRELOAD = 1 + long long RELOAD; // буфер, если PRELOAD = 1 struct Channels_Sim Channels; // структура для симуляции каналов }; ///////////////////////////////////////////////////////////////////// diff --git a/MATLAB/MCU_STM32_Matlab/stm32_matlab_conf.c b/MATLAB/MCU_STM32_Matlab/stm32_matlab_conf.c index bd6379c..4107892 100644 --- a/MATLAB/MCU_STM32_Matlab/stm32_matlab_conf.c +++ b/MATLAB/MCU_STM32_Matlab/stm32_matlab_conf.c @@ -49,7 +49,7 @@ void deInitialize_MCU(void) ClearStruct(htim8); ClearStruct(htim11); ClearStruct(htim12); - ClearStruct(htim13); + ClearStruct(htim5); ClearStruct(hadc3); ClearStruct(hdma_adc3); } diff --git a/MATLAB/MCU_Wrapper/mcu_wrapper.c b/MATLAB/MCU_Wrapper/mcu_wrapper.c index 6a07287..d654635 100644 --- a/MATLAB/MCU_Wrapper/mcu_wrapper.c +++ b/MATLAB/MCU_Wrapper/mcu_wrapper.c @@ -37,14 +37,16 @@ const int inOffsets[IN_PORT_NUMB] = { */ const int outLengths[OUT_PORT_NUMB] = { THYR_PORT_1_WIDTH, - OUT_PORT_2_WIDTH + OUT_PORT_2_WIDTH, + OUT_PORT_3_WIDTH }; /** * @brief Таблица смещений в выходном массиве OUT */ const int outOffsets[OUT_PORT_NUMB] = { OFFSET_OUT_ARRAY_1, - OFFSET_OUT_ARRAY_2 + OFFSET_OUT_ARRAY_2, + OFFSET_OUT_ARRAY_3 }; // INPUT/OUTPUTS AUTO-PARAMS END diff --git a/MATLAB/MCU_Wrapper/mcu_wrapper_conf.h b/MATLAB/MCU_Wrapper/mcu_wrapper_conf.h index 93edc3f..534cd4a 100644 --- a/MATLAB/MCU_Wrapper/mcu_wrapper_conf.h +++ b/MATLAB/MCU_Wrapper/mcu_wrapper_conf.h @@ -53,9 +53,10 @@ #define ADC_PORT_1_WIDTH 6 #define IN_PORT_2_WIDTH 1 -#define OUT_PORT_NUMB 2 +#define OUT_PORT_NUMB 3 #define THYR_PORT_1_WIDTH 6 #define OUT_PORT_2_WIDTH 6 +#define OUT_PORT_3_WIDTH 16 // INPUT/OUTPUTS PARAMS END /** WRAPPER_CONF @@ -94,11 +95,12 @@ #define OFFSET_IN_ARRAY_2 (OFFSET_IN_ARRAY_1 + ADC_PORT_1_WIDTH) /// === Полный размер буфера === -#define TOTAL_OUT_SIZE (THYR_PORT_1_WIDTH + OUT_PORT_2_WIDTH) +#define TOTAL_OUT_SIZE (THYR_PORT_1_WIDTH + OUT_PORT_2_WIDTH + OUT_PORT_3_WIDTH) /// === Смещения массивов (внутри общего буфера) === #define OFFSET_OUT_ARRAY_1 0 #define OFFSET_OUT_ARRAY_2 (OFFSET_OUT_ARRAY_1 + THYR_PORT_1_WIDTH) +#define OFFSET_OUT_ARRAY_3 (OFFSET_OUT_ARRAY_2 + OUT_PORT_2_WIDTH) // INPUT/OUTPUTS AUTO-PARAMS END diff --git a/MATLAB/app_wrapper/app_init.c b/MATLAB/app_wrapper/app_init.c index 854cc3a..176d679 100644 --- a/MATLAB/app_wrapper/app_init.c +++ b/MATLAB/app_wrapper/app_init.c @@ -21,6 +21,7 @@ void app_init(void) { MX_TIM1_Init(); MX_TIM3_Init(); MX_TIM8_Init(); + MX_TIM5_Init(); MX_ADC3_Init(); UPP_Init(); UPP_PreWhile(); diff --git a/MATLAB/app_wrapper/app_io.c b/MATLAB/app_wrapper/app_io.c index 170e597..2f0e131 100644 --- a/MATLAB/app_wrapper/app_io.c +++ b/MATLAB/app_wrapper/app_io.c @@ -54,6 +54,10 @@ void app_writeOutputBuffer(real_T* Buffer) { { WriteOutputArray(pm.ZC_Detected[i], 0, i); } + for (int i = 0; i < 2; i++) + { + WriteOutputArray(pm.zc.Channel[i].DebounceCounter, 0, i+2); + } extern ADC_Periodic_t adc; @@ -61,5 +65,25 @@ void app_writeOutputBuffer(real_T* Buffer) { { WriteOutputArray(pm.adc.Data[i], 1, i); } + + + + + for (int i = 0; i < 3; i++) + { + WriteOutputArray(pm.U[i], 2, i); + } + for (int i = 0; i < 3; i++) + { + WriteOutputArray(pm.ZC_Detected[i], 2, i + 3); + } + for (int i = 0; i < 3; i++) + { + WriteOutputArray(pm.I[i], 2, i + 6); + } + for (int i = 0; i < 3; i++) + { + WriteOutputArray(pm.F[i], 2, i + 9); + } // USER APP OUTPUT END } \ No newline at end of file diff --git a/MATLAB/upp_r2023.slx b/MATLAB/upp_r2023.slx index 50d8c6faafe3df4ca8c3fb0a831b89dbd74f080c..2f5d6e8c00c6340e7f9015f555c5b34b4b8d2539 100644 GIT binary patch delta 50629 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

Ub1pJwN{-T&%43KW>KYs2%PXnZy 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 b|GOFn0m1oSEw-M4kcgnPP=CPw)8qdEOWNTA diff --git a/UPP/AllLibs/MyLibs b/UPP/AllLibs/MyLibs index 9b9969d..48dacce 160000 --- a/UPP/AllLibs/MyLibs +++ b/UPP/AllLibs/MyLibs @@ -1 +1 @@ -Subproject commit 9b9969dd7ce85e3e317e6fef71c9e1e591d52e46 +Subproject commit 48daccef2d1fefe965f020e5b342ed683fe40a62 diff --git a/UPP/Core/Configs/upp_config.h b/UPP/Core/Configs/upp_config.h index 38c29af..5c60f54 100644 --- a/UPP/Core/Configs/upp_config.h +++ b/UPP/Core/Configs/upp_config.h @@ -14,10 +14,24 @@ #define _UPP_CONFIG_H_ #include "stm32f4xx_hal.h" -#define PM_ADC_PERIOD 1800-1 + +#define U_BA 0 +#define U_AC 1 +#define U_BC 2 +#define I_C 0 +#define I_A 1 +#define I_B 2 +#define TEMP_1 0 +#define TEMP_2 1 + +#define PM_U_BASE 1216.0 +#define PM_I_BASE 53.0 +#define PM_ADC_PERIOD_MKS 10 #define PM_ZERO_CROSS_HYSTERESIS_V 10 -#define PM_ZERO_CROSS_DEBOUNCE_10US 3 +#define PM_ZERO_CROSS_DEBOUNCE_10US 2.5*100 // (2.5 * 100 = 2.5 мс) +// Рассчитанные дефайны +#define PM_ADC_PERIOD (180*PM_ADC_PERIOD_MKS)-1 #endif //_UPP_CONFIG_H_ diff --git a/UPP/Core/Inc/main.h b/UPP/Core/Inc/main.h index e875bd5..a2211ec 100644 --- a/UPP/Core/Inc/main.h +++ b/UPP/Core/Inc/main.h @@ -40,7 +40,6 @@ extern "C" { /* Exported types ------------------------------------------------------------*/ /* USER CODE BEGIN ET */ - /* USER CODE END ET */ /* Exported constants --------------------------------------------------------*/ @@ -74,8 +73,9 @@ extern __IO uint32_t micros; #define adc_tim htim8 #define hpwm2 htim2 #define mb_dbg_huart huart6 -#define ustim htim13 +#define ustim htim5 #define hpwm1 htim1 +#define usTick ustim.Instance->CNT #define UM_LED_GREEN2_Pin GPIO_PIN_2 #define UM_LED_GREEN2_GPIO_Port GPIOE #define CEN_O_Pin GPIO_PIN_3 @@ -168,7 +168,7 @@ extern __IO uint32_t micros; #define UM_LED_GREEN1_GPIO_Port GPIOE /* USER CODE BEGIN Private defines */ - +extern TIM_HandleTypeDef ustim; /* USER CODE END Private defines */ #ifdef __cplusplus diff --git a/UPP/Core/Inc/tim.h b/UPP/Core/Inc/tim.h index 2dfa292..6a9d43b 100644 --- a/UPP/Core/Inc/tim.h +++ b/UPP/Core/Inc/tim.h @@ -36,24 +36,24 @@ extern TIM_HandleTypeDef htim1; extern TIM_HandleTypeDef htim3; +extern TIM_HandleTypeDef htim5; + extern TIM_HandleTypeDef htim8; extern TIM_HandleTypeDef htim11; extern TIM_HandleTypeDef htim12; -extern TIM_HandleTypeDef htim13; - /* USER CODE BEGIN Private defines */ /* USER CODE END Private defines */ void MX_TIM1_Init(void); void MX_TIM3_Init(void); +void MX_TIM5_Init(void); void MX_TIM8_Init(void); void MX_TIM11_Init(void); void MX_TIM12_Init(void); -void MX_TIM13_Init(void); void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); diff --git a/UPP/Core/PowerMonitor/adc_tools.c b/UPP/Core/PowerMonitor/adc_tools.c index fc49b7a..cd95ac9 100644 --- a/UPP/Core/PowerMonitor/adc_tools.c +++ b/UPP/Core/PowerMonitor/adc_tools.c @@ -7,7 +7,31 @@ ******************************************************************************/ #include "adc_tools.h" +//Полосовой фильтр 45-55 Гц +static float coefs_biquad_U[5] = { + 0.000010f, // b0 + 0.000020f, // b1 + 0.000010f, // b2 + -1.900000f, // a1 + 0.950000f // a2 +}; +// ФНЧ 100 Гц +static float coefs_biquad_I[5] = { + 0.000010f, // b0 + 0.000020f, // b1 + 0.000010f, // b2 + -1.900000f, // a1 + 0.950000f // a2 +}; +// ФНЧ 10 Гц +static float coefs_biquad_T[5] = { + 0.0002f, // b0 + 0.0004f, // b1 + 0.0002f, // b2 + -1.98f, // a1 + 0.980f // a2 +}; // Проверка корректности структуры АЦП #define assert_adc(_adc_) check_null_ptr_2(_adc_, (_adc_)->f.Initialized) @@ -20,11 +44,17 @@ static void ADC_EnableAllFilters(ADC_Periodic_t *adc) } static void ADC_InitAllFilters(ADC_Periodic_t *adc) { +// Filter_Init(&adc->filter[ADC_CHANNEL_UBA], coefs_biquad_U); +// Filter_Init(&adc->filter[ADC_CHANNEL_UAC], coefs_biquad_U); +// Filter_Init(&adc->filter[ADC_CHANNEL_IC], coefs_biquad_I); +// Filter_Init(&adc->filter[ADC_CHANNEL_IA], coefs_biquad_I); +// Filter_Init(&adc->filter[ADC_CHANNEL_TEMP1], coefs_biquad_T); +// Filter_Init(&adc->filter[ADC_CHANNEL_TEMP2], coefs_biquad_T); + for(int i = 0; i < ADC_NUMB_OF_CHANNELS; i++) { - Filter_Init(&adc->filter[i], Filter_Coef); + Filter_Init(&adc->filter[i], Filter_Initializator); } - FilterLUTInt_Init(&adc->temp_map[0], (int32_t *)adc_temp_quants, (int32_t *)adc_temp_vals, @@ -147,16 +177,6 @@ HAL_StatusTypeDef ADC_Handle(ADC_Periodic_t *adc) uint16_t *raw = adc->RawData; float *data = adc->Data; - // Фильтрация от шумов для всех каналов - for(int i = 0; i < ADC_NUMB_OF_CHANNELS; i++) - { - if(Filter_GetState(&adc->filter[i]) == FILTER_ENABLE) - { - // заменяем сырое на отфильтровоное сырое - raw[i] = Filter_Process(&adc->filter[i], raw[i]); - } - } - // Перерасчеты Напряжений/Токов в единицы измерения for(int i = 0; i < ADC_NUMB_OF_REGULAR_CHANNELS; i++) { @@ -165,6 +185,17 @@ HAL_StatusTypeDef ADC_Handle(ADC_Periodic_t *adc) ADC_UpdateStatistics(adc, i, ADC_LEVEL_AC); } + // Фильтрация от шумов для всех каналов + for(int i = 0; i < ADC_NUMB_OF_CHANNELS; i++) + { + if(Filter_isEnable(&adc->filter[i])) + { + // заменяем данные на отфильтрованные данные + data[i] = Filter_Process(&adc->filter[i], data[i]); + } + } + + // Преобразования температуры по таблице for (int i = ADC_TEMP_CHANNELS_START; i < ADC_NUMB_OF_CHANNELS; i++) { @@ -221,7 +252,7 @@ void ADC_UpdateStatistics(ADC_Periodic_t *adc, uint8_t channel, ADC_StatLevel_t stat->SampleCount++; // Расчет Avg/RMS (периодически или по запросу) - if (stat->SampleCount >= 1000) { // Пример: пересчет каждые 1000 samples + if (stat->SampleCount >= 4000) { // Пример: пересчет каждые 1000 samples stat->Avg = stat->Sum / stat->SampleCount; stat->RMS = sqrtf(stat->SumSquares / stat->SampleCount); // Сброс накопителей diff --git a/UPP/Core/PowerMonitor/adc_tools.h b/UPP/Core/PowerMonitor/adc_tools.h index 47fa0f6..ad5c6e9 100644 --- a/UPP/Core/PowerMonitor/adc_tools.h +++ b/UPP/Core/PowerMonitor/adc_tools.h @@ -51,10 +51,9 @@ static const int32_t adc_temp_vals[] = ADC_TEMPERATURES; static const int32_t adc_temp_quants[] = ADC_TEMPERATURES_QUANTS; -#define Filter_t FilterMedianInt_t -#define Filter_Init FilterMedianInt_Init -#define Filter_Process FilterMedianInt_Process -#define Filter_Coef 10 +#define Filter_t FilterMedian_t +#define Filter_Init FilterMedian_Init +#define Filter_Initializator 5 /** * @brief Коэфициенты канала АЦП для пересчета в единицы измерения @@ -88,8 +87,6 @@ typedef struct float SumSquares; ///< Накопитель для RMS }ADC_Statistics; - - /** * @brief Хендл АЦП */ @@ -104,6 +101,7 @@ typedef struct ADC_Coefs_t Coefs[ADC_NUMB_OF_REGULAR_CHANNELS]; ///< Коэффициенты @ref ADC_Coefs_t для регулярных каналов (не температуры) Filter_t filter[ADC_NUMB_OF_CHANNELS]; ///< Фильтр от шумов АЦП + FilterLUTInt_t temp_map[2]; ///< Коррекция нелинейности датчиков температуры float Data[ADC_NUMB_OF_CHANNELS]; ///< Пересчитанные значения АЦП (в Вольтах/Амперах) diff --git a/UPP/Core/PowerMonitor/power_monitor.c b/UPP/Core/PowerMonitor/power_monitor.c index d456648..c16178a 100644 --- a/UPP/Core/PowerMonitor/power_monitor.c +++ b/UPP/Core/PowerMonitor/power_monitor.c @@ -15,23 +15,25 @@ HAL_StatusTypeDef PowerMonitor_Init(PowerMonitor_t *hpm) if(ADC_Init(&hpm->adc, &adc_tim, &hadc3) != HAL_OK) return HAL_ERROR; - if(ADC_ConfigChannel(&hpm->adc, ADC_CHANNEL_UBA, 2048, 1216, 4095) != HAL_OK) + if(ADC_ConfigChannel(&hpm->adc, ADC_CHANNEL_UBA, 2048, PM_U_BASE, 4095) != HAL_OK) return HAL_ERROR; - if(ADC_ConfigChannel(&hpm->adc, ADC_CHANNEL_UAC, 2048, 1216, 4095) != HAL_OK) + if(ADC_ConfigChannel(&hpm->adc, ADC_CHANNEL_UAC, 2048, PM_U_BASE, 4095) != HAL_OK) return HAL_ERROR; - if(ADC_ConfigChannel(&hpm->adc, ADC_CHANNEL_IC, 2048, 53, 4095) != HAL_OK) + if(ADC_ConfigChannel(&hpm->adc, ADC_CHANNEL_IC, 2048, PM_I_BASE, 4095) != HAL_OK) return HAL_ERROR; - if(ADC_ConfigChannel(&hpm->adc, ADC_CHANNEL_IA, 2048, 53, 4095) != HAL_OK) + if(ADC_ConfigChannel(&hpm->adc, ADC_CHANNEL_IA, 2048, PM_I_BASE, 4095) != HAL_OK) return HAL_ERROR; - if(ZC_Init(&hpm->zc, ADC_NUMB_OF_U_CHANNELS, PM_ZERO_CROSS_HYSTERESIS_V, PM_ZERO_CROSS_DEBOUNCE_10US) != HAL_OK) + if(ZC_Init(&hpm->zc, 3, PM_ZERO_CROSS_HYSTERESIS_V, PM_ZERO_CROSS_DEBOUNCE_10US) != HAL_OK) return HAL_ERROR; - if(ZC_ConfigChannel(&hpm->zc, ADC_CHANNEL_UBA, ZC_BOTH_EDGES) != HAL_OK) - return HAL_ERROR; - if(ZC_ConfigChannel(&hpm->zc, ADC_CHANNEL_UAC, ZC_BOTH_EDGES) != HAL_OK) + if(ZC_ConfigChannel(&hpm->zc, U_BA, ZC_BOTH_EDGES) != HAL_OK) return HAL_ERROR; + if(ZC_ConfigChannel(&hpm->zc, U_AC, ZC_BOTH_EDGES) != HAL_OK) + return HAL_ERROR; + if(ZC_ConfigChannel(&hpm->zc, U_BC, ZC_BOTH_EDGES) != HAL_OK) + return HAL_ERROR; return HAL_OK; } @@ -49,15 +51,31 @@ HAL_StatusTypeDef PowerMonitor_Start(PowerMonitor_t *hpm) void PowerMonitor_Handle(PowerMonitor_t *hpm) { - static uint32_t last_zc_cnt[ADC_NUMB_OF_U_CHANNELS] = {0}; + static uint32_t last_zc_state[ADC_NUMB_OF_U_CHANNELS] = {0}; ADC_Handle(&hpm->adc); - ZC_ProcessAllChannels(&hpm->zc, hpm->adc.Data, uwTick); - for(int i = 0; i < ADC_NUMB_OF_U_CHANNELS; i++) + + hpm->U[U_BA] = hpm->adc.Data[ADC_CHANNEL_UBA]; + hpm->U[U_AC] = hpm->adc.Data[ADC_CHANNEL_UAC]; + hpm->U[U_BC] = -hpm->U[U_BA] - hpm->U[U_AC]; + + hpm->I[I_C] = hpm->adc.Data[ADC_CHANNEL_IC]; + hpm->I[I_A] = hpm->adc.Data[ADC_CHANNEL_IA]; + hpm->I[I_B] = -hpm->I[I_A] - hpm->I[I_C]; + + hpm->T[TEMP_1] = hpm->adc.Data[ADC_CHANNEL_TEMP1]; + hpm->T[TEMP_2] = hpm->adc.Data[ADC_CHANNEL_TEMP2]; + + ZC_ProcessAllChannels(&hpm->zc, hpm->U, usTick); + for(int i = 0; i < 3; i++) { - if(last_zc_cnt[i] != ZC_GetCrossCount(&hpm->zc, i)) + if(last_zc_state[i] != ZC_GetStableState(&hpm->zc, i)) { - last_zc_cnt[i] = ZC_GetCrossCount(&hpm->zc, i); + last_zc_state[i] = ZC_GetStableState(&hpm->zc, i); hpm->ZC_Detected[i] = !hpm->ZC_Detected[i]; } - } + } + + hpm->F[U_BA] = (hpm->zc.Channel[U_BA].Frequency) / 2; + hpm->F[U_AC] = (hpm->zc.Channel[U_AC].Frequency) / 2; + hpm->F[U_BC] = (hpm->zc.Channel[U_BC].Frequency) / 2; } \ No newline at end of file diff --git a/UPP/Core/PowerMonitor/power_monitor.h b/UPP/Core/PowerMonitor/power_monitor.h index ad34cf0..858a8a0 100644 --- a/UPP/Core/PowerMonitor/power_monitor.h +++ b/UPP/Core/PowerMonitor/power_monitor.h @@ -14,12 +14,12 @@ typedef struct { ADC_Periodic_t adc; ZeroCross_Handle_t zc; - uint32_t ZC_Detected[ADC_NUMB_OF_U_CHANNELS]; + uint32_t ZC_Detected[3]; float U[3]; + float F[3]; float I[3]; - float T[3]; - + float T[3]; }PowerMonitor_t; extern PowerMonitor_t pm; diff --git a/UPP/Core/PowerMonitor/zero_cross.c b/UPP/Core/PowerMonitor/zero_cross.c index 6322067..e6ae71f 100644 --- a/UPP/Core/PowerMonitor/zero_cross.c +++ b/UPP/Core/PowerMonitor/zero_cross.c @@ -18,7 +18,7 @@ * @return HAL Status. */ HAL_StatusTypeDef ZC_Init(ZeroCross_Handle_t *zc, uint8_t num_channels, - float hysteresis, uint8_t debounce_samples) + float hysteresis, uint16_t debounce_samples) { if (zc == NULL || num_channels == 0 || num_channels > ZC_MAX_CHANNELS) { return HAL_ERROR; @@ -93,18 +93,18 @@ void ZC_ProcessChannel(ZeroCross_Handle_t *zc, uint8_t channel, float value, uin { if (zc == NULL || !zc->f.Initialized || !zc->f.Monitoring) { return; - } - + } if (channel >= zc->NumChannels) { return; } + int zc_detected = 0; ZC_Channel_t *zc_ch = &zc->Channel[channel]; zc_ch->CurrentValue = value; // Фильтрация дребезга - if(zc_ch->DebounceCounter) + if(zc_ch->DebounceCounter > 0) { zc_ch->DebounceCounter--; return; @@ -112,43 +112,59 @@ void ZC_ProcessChannel(ZeroCross_Handle_t *zc, uint8_t channel, float value, uin // Детектирование rising edge (отрицательное -> положительное) if ((zc_ch->LastValue <= -zc->Hysteresis) && - (value >= zc->Hysteresis)) { + (value >= zc->Hysteresis)) + { if (zc_ch->EdgeType == ZC_RISING_EDGE || zc_ch->EdgeType == ZC_BOTH_EDGES) { - // Переход подтвержден сразу (без дебаунса) - if (zc_ch->LastCrossTime != 0) { - // Расчет периода и частоты - zc_ch->Period = timestamp - zc_ch->LastCrossTime; - if (zc_ch->Period > 0) { - zc_ch->Frequency = 1000000.0f / zc_ch->Period; + if(zc->DebounceSamples) + { + if(zc_ch->DebounceCounter == 0) + { + zc_ch->DebounceCounter = zc->DebounceSamples; } } - zc_ch->LastCrossTime = timestamp; - zc_ch->CrossCount++; - zc_ch->StableState = 1; + zc_detected = 1; } } // Детектирование falling edge (положительное -> отрицательное) else if ((zc_ch->LastValue >= zc->Hysteresis) && - (value <= -zc->Hysteresis)) { + (value <= -zc->Hysteresis)) + { if (zc_ch->EdgeType == ZC_FALLING_EDGE || zc_ch->EdgeType == ZC_BOTH_EDGES) { - // Переход подтвержден сразу (без дебаунса) - if (zc_ch->LastCrossTime != 0) { - // Расчет периода и частоты - zc_ch->Period = timestamp - zc_ch->LastCrossTime; - if (zc_ch->Period > 0) { - zc_ch->Frequency = 1000000.0f / zc_ch->Period; + if(zc->DebounceSamples) + { + if(zc_ch->DebounceCounter == 0) + { + zc_ch->DebounceCounter = zc->DebounceSamples; } } - zc_ch->LastCrossTime = timestamp; - zc_ch->CrossCount++; - zc_ch->StableState = 0; + zc_detected = -1; } } + if(zc_detected) + { + zc_ch->StableState = zc_detected == 1? 1:0; + + uint32_t RealTimeShift = zc->DebounceSamples*(timestamp - zc->LastTick); // коло-во тиков * период вызова функции + + // Переход подтвержден сразу + uint32_t RealTimestamp = timestamp-RealTimeShift; + if (zc_ch->LastCrossTime != 0) { + // Расчет периода и частоты + zc_ch->Period = RealTimestamp - zc_ch->LastCrossTime; + if (zc_ch->Period > 0) { + zc_ch->Frequency = 1000000.0f / zc_ch->Period; + } + } + + zc_ch->LastCrossTime = RealTimestamp; + zc_ch->CrossCount++; + } + // Сохраняем текущее значение для следующей итерации в случае если оно не в мертвой зоне if((value > zc->Hysteresis) || (value < -zc->Hysteresis)) { @@ -162,7 +178,7 @@ void ZC_ProcessChannel(ZeroCross_Handle_t *zc, uint8_t channel, float value, uin * @param values Массив значений сигналов * @param timestamp Временная метка измерения */ -void ZC_ProcessAllChannels(ZeroCross_Handle_t *zc, float values[], uint32_t timestamp) +void ZC_ProcessAllChannels(ZeroCross_Handle_t *zc, float *values, uint32_t timestamp) { if (zc == NULL || !zc->f.Initialized || !zc->f.Monitoring || values == NULL) { return; @@ -171,6 +187,8 @@ void ZC_ProcessAllChannels(ZeroCross_Handle_t *zc, float values[], uint32_t time for (int ch = 0; ch < zc->NumChannels; ch++) { ZC_ProcessChannel(zc, ch, values[ch], timestamp); } + + zc->LastTick = timestamp; } /** @@ -296,46 +314,4 @@ void ZC_Reset(ZeroCross_Handle_t *zc, uint8_t channel) zc->Channel[i].CrossCount = 0; } } -} - -/** - * @brief Установка гистерезиса для хендла. - * @param zc Указатель на хендл детектора нуля - * @param hysteresis Значение гистерезиса - */ -void ZC_SetHysteresis(ZeroCross_Handle_t *zc, float hysteresis) -{ - if (zc == NULL || !zc->f.Initialized) { - return; - } - - zc->Hysteresis = hysteresis; -} - -/** - * @brief Установка дебаунс samples для хендла. - * @param zc Указатель на хендл детектора нуля - * @param debounce_samples Количество samples для антидребезга - */ -void ZC_SetDebounceSamples(ZeroCross_Handle_t *zc, uint8_t debounce_samples) -{ - if (zc == NULL || !zc->f.Initialized) { - return; - } - - zc->DebounceSamples = debounce_samples; -} - -/** - * @brief Получение количества каналов хендла. - * @param zc Указатель на хендл детектора нуля - * @return Количество каналов. - */ -uint8_t ZC_GetNumChannels(ZeroCross_Handle_t *zc) -{ - if (zc == NULL || !zc->f.Initialized) { - return 0; - } - - return zc->NumChannels; } \ No newline at end of file diff --git a/UPP/Core/PowerMonitor/zero_cross.h b/UPP/Core/PowerMonitor/zero_cross.h index a109023..fc91202 100644 --- a/UPP/Core/PowerMonitor/zero_cross.h +++ b/UPP/Core/PowerMonitor/zero_cross.h @@ -72,7 +72,7 @@ ZC_Init(&zc_low_sensitivity, 2, 0.5f, 2); // 0.5 гистерезис, 2 samp #include "main.h" #ifndef ZC_MAX_CHANNELS -#define ZC_MAX_CHANNELS 8 ///< Максимальное количество каналов на хендл +#define ZC_MAX_CHANNELS 3 ///< Максимальное количество каналов на хендл #endif /** @@ -91,7 +91,7 @@ typedef struct { uint32_t CrossCount; ///< Счетчик переходов float LastValue; ///< Предыдущее значение float CurrentValue; ///< Текущее значение - uint8_t DebounceCounter; ///< Счетчик антидребезга + uint16_t DebounceCounter; ///< Счетчик антидребезга uint8_t StableState; ///< Стабильное состояние (0=отриц, 1=полож) uint32_t LastCrossTime; ///< Время последнего перехода uint32_t Period; ///< Период сигнала (в тактах таймера) @@ -106,16 +106,19 @@ typedef struct { ZC_Channel_t Channel[ZC_MAX_CHANNELS]; ///< Каналы @ref ZC_Channel_t uint8_t NumChannels; ///< Количество используемых каналов для этого хендла float Hysteresis; ///< Гистерезис для избежания дребезга - uint8_t DebounceSamples; ///< Количество samples для антидребезга + uint16_t DebounceSamples; ///< Количество samples для антидребезга + struct { unsigned Initialized:1; ///< Флаг инициализации unsigned Monitoring:1; ///< Флаг активности мониторинга } f; ///< Флаги + + uint32_t LastTick; ///< Послднее время вызова } ZeroCross_Handle_t; /* Инициализация детектора нуля с индивидуальными настройками */ HAL_StatusTypeDef ZC_Init(ZeroCross_Handle_t *zc, uint8_t num_channels, - float hysteresis, uint8_t debounce_samples); + float hysteresis, uint16_t debounce_samples); /* Настройка канала детектора */ HAL_StatusTypeDef ZC_ConfigChannel(ZeroCross_Handle_t *zc, uint8_t channel, @@ -126,7 +129,7 @@ void ZC_ProcessChannel(ZeroCross_Handle_t *zc, uint8_t channel, float value, uint32_t timestamp); /* Пакетная обработка всех каналов */ -void ZC_ProcessAllChannels(ZeroCross_Handle_t *zc, float values[], +void ZC_ProcessAllChannels(ZeroCross_Handle_t *zc, float *values, uint32_t timestamp); /* Получение частоты сигнала */ diff --git a/UPP/Core/Src/main.c b/UPP/Core/Src/main.c index bfbb14c..16e30e8 100644 --- a/UPP/Core/Src/main.c +++ b/UPP/Core/Src/main.c @@ -98,7 +98,6 @@ int main(void) MX_USART3_UART_Init(); MX_CAN1_Init(); MX_IWDG_Init(); - MX_TIM13_Init(); MX_RTC_Init(); MX_TIM1_Init(); MX_TIM3_Init(); @@ -107,6 +106,7 @@ int main(void) MX_TIM11_Init(); MX_TIM12_Init(); MX_TIM8_Init(); + MX_TIM5_Init(); /* USER CODE BEGIN 2 */ #else //MATLAB #endif //MATLAB diff --git a/UPP/Core/Src/tim.c b/UPP/Core/Src/tim.c index 943d2fa..a9cc642 100644 --- a/UPP/Core/Src/tim.c +++ b/UPP/Core/Src/tim.c @@ -26,10 +26,10 @@ TIM_HandleTypeDef htim1; TIM_HandleTypeDef htim3; +TIM_HandleTypeDef htim5; TIM_HandleTypeDef htim8; TIM_HandleTypeDef htim11; TIM_HandleTypeDef htim12; -TIM_HandleTypeDef htim13; /* TIM1 init function */ void MX_TIM1_Init(void) @@ -170,6 +170,49 @@ void MX_TIM3_Init(void) /* USER CODE END TIM3_Init 2 */ HAL_TIM_MspPostInit(&htim3); +} +/* TIM5 init function */ +void MX_TIM5_Init(void) +{ + + /* USER CODE BEGIN TIM5_Init 0 */ + + /* USER CODE END TIM5_Init 0 */ + + TIM_MasterConfigTypeDef sMasterConfig = {0}; + TIM_IC_InitTypeDef sConfigIC = {0}; + + /* USER CODE BEGIN TIM5_Init 1 */ + + /* USER CODE END TIM5_Init 1 */ + htim5.Instance = TIM5; + htim5.Init.Prescaler = 90-1; + htim5.Init.CounterMode = TIM_COUNTERMODE_UP; + htim5.Init.Period = 4294967295; + htim5.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim5.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_IC_Init(&htim5) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim5, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_RISING; + sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI; + sConfigIC.ICPrescaler = TIM_ICPSC_DIV1; + sConfigIC.ICFilter = 0; + if (HAL_TIM_IC_ConfigChannel(&htim5, &sConfigIC, TIM_CHANNEL_1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM5_Init 2 */ + + /* USER CODE END TIM5_Init 2 */ + } /* TIM8 init function */ void MX_TIM8_Init(void) @@ -270,32 +313,6 @@ void MX_TIM12_Init(void) /* USER CODE END TIM12_Init 2 */ -} -/* TIM13 init function */ -void MX_TIM13_Init(void) -{ - - /* USER CODE BEGIN TIM13_Init 0 */ - - /* USER CODE END TIM13_Init 0 */ - - /* USER CODE BEGIN TIM13_Init 1 */ - - /* USER CODE END TIM13_Init 1 */ - htim13.Instance = TIM13; - htim13.Init.Prescaler = 90-1; - htim13.Init.CounterMode = TIM_COUNTERMODE_UP; - htim13.Init.Period = 65535; - htim13.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim13.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim13) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM13_Init 2 */ - - /* USER CODE END TIM13_Init 2 */ - } void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) @@ -360,16 +377,34 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) /* USER CODE END TIM12_MspInit 1 */ } - else if(tim_baseHandle->Instance==TIM13) +} + +void HAL_TIM_IC_MspInit(TIM_HandleTypeDef* tim_icHandle) +{ + + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(tim_icHandle->Instance==TIM5) { - /* USER CODE BEGIN TIM13_MspInit 0 */ + /* USER CODE BEGIN TIM5_MspInit 0 */ - /* USER CODE END TIM13_MspInit 0 */ - /* TIM13 clock enable */ - __HAL_RCC_TIM13_CLK_ENABLE(); - /* USER CODE BEGIN TIM13_MspInit 1 */ + /* USER CODE END TIM5_MspInit 0 */ + /* TIM5 clock enable */ + __HAL_RCC_TIM5_CLK_ENABLE(); - /* USER CODE END TIM13_MspInit 1 */ + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**TIM5 GPIO Configuration + PA0/WKUP ------> TIM5_CH1 + */ + GPIO_InitStruct.Pin = GPIO_PIN_0; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF2_TIM5; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN TIM5_MspInit 1 */ + + /* USER CODE END TIM5_MspInit 1 */ } } void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle) @@ -485,16 +520,27 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle) /* USER CODE END TIM12_MspDeInit 1 */ } - else if(tim_baseHandle->Instance==TIM13) +} + +void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef* tim_icHandle) +{ + + if(tim_icHandle->Instance==TIM5) { - /* USER CODE BEGIN TIM13_MspDeInit 0 */ + /* USER CODE BEGIN TIM5_MspDeInit 0 */ - /* USER CODE END TIM13_MspDeInit 0 */ + /* USER CODE END TIM5_MspDeInit 0 */ /* Peripheral clock disable */ - __HAL_RCC_TIM13_CLK_DISABLE(); - /* USER CODE BEGIN TIM13_MspDeInit 1 */ + __HAL_RCC_TIM5_CLK_DISABLE(); - /* USER CODE END TIM13_MspDeInit 1 */ + /**TIM5 GPIO Configuration + PA0/WKUP ------> TIM5_CH1 + */ + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_0); + + /* USER CODE BEGIN TIM5_MspDeInit 1 */ + + /* USER CODE END TIM5_MspDeInit 1 */ } } diff --git a/UPP/Core/UPP/upp_main.c b/UPP/Core/UPP/upp_main.c index 7f56710..052684c 100644 --- a/UPP/Core/UPP/upp_main.c +++ b/UPP/Core/UPP/upp_main.c @@ -16,6 +16,7 @@ PowerMonitor_t pm; */ int UPP_Init(void) { + HAL_TIM_Base_Start(&ustim); PowerMonitor_Init(&pm); return 0; } diff --git a/UPP/MDK-ARM/UPP.uvoptx b/UPP/MDK-ARM/UPP.uvoptx index 082976d..ba12a47 100644 --- a/UPP/MDK-ARM/UPP.uvoptx +++ b/UPP/MDK-ARM/UPP.uvoptx @@ -1283,7 +1283,7 @@ ::Compiler - 0 + 1 0 0 1 diff --git a/UPP/MDK-ARM/UPP.uvprojx b/UPP/MDK-ARM/UPP.uvprojx index 02feebd..6284731 100644 --- a/UPP/MDK-ARM/UPP.uvprojx +++ b/UPP/MDK-ARM/UPP.uvprojx @@ -339,7 +339,7 @@ 0 - USE_HAL_DRIVER,STM32F427xx + USE_HAL_DRIVER,STM32F427xx, ARM_MATH_CM4 ../Core/Inc;../Drivers/STM32F4xx_HAL_Driver/Inc;../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F4xx/Include;../Drivers/CMSIS/Include;../AllLibs/ExtMemory/Inc;../AllLibs/Modbus/Inc;../AllLibs/MyLibs/MyLibs/Inc;../AllLibs/MyLibs/RTT;../AllLibs/PeriphGeneral/Inc;../Core/Configs;../Core/PowerMonitor;../Core/Thyristors;../Core/UPP diff --git a/UPP/UPP.ioc b/UPP/UPP.ioc index 78d8d19..af2d530 100644 --- a/UPP/UPP.ioc +++ b/UPP/UPP.ioc @@ -55,10 +55,10 @@ Mcu.Family=STM32F4 Mcu.IP0=ADC3 Mcu.IP1=CAN1 Mcu.IP10=TIM3 -Mcu.IP11=TIM8 -Mcu.IP12=TIM11 -Mcu.IP13=TIM12 -Mcu.IP14=TIM13 +Mcu.IP11=TIM5 +Mcu.IP12=TIM8 +Mcu.IP13=TIM11 +Mcu.IP14=TIM12 Mcu.IP15=USART3 Mcu.IP16=USART6 Mcu.IP2=DMA @@ -80,64 +80,64 @@ Mcu.Pin12=PF10 Mcu.Pin13=PH0/OSC_IN Mcu.Pin14=PH1/OSC_OUT Mcu.Pin15=PC0 -Mcu.Pin16=PA4 -Mcu.Pin17=PA5 -Mcu.Pin18=PA6 -Mcu.Pin19=PB0 +Mcu.Pin16=PA0/WKUP +Mcu.Pin17=PA4 +Mcu.Pin18=PA5 +Mcu.Pin19=PA6 Mcu.Pin2=PE4 -Mcu.Pin20=PB1 -Mcu.Pin21=PF11 -Mcu.Pin22=PB10 -Mcu.Pin23=PB11 -Mcu.Pin24=PB13 -Mcu.Pin25=PG6 -Mcu.Pin26=PC6 -Mcu.Pin27=PC7 -Mcu.Pin28=PC8 -Mcu.Pin29=PC9 +Mcu.Pin20=PB0 +Mcu.Pin21=PB1 +Mcu.Pin22=PF11 +Mcu.Pin23=PB10 +Mcu.Pin24=PB11 +Mcu.Pin25=PB13 +Mcu.Pin26=PG6 +Mcu.Pin27=PC6 +Mcu.Pin28=PC7 +Mcu.Pin29=PC8 Mcu.Pin3=PE5 -Mcu.Pin30=PA8 -Mcu.Pin31=PA9 -Mcu.Pin32=PA10 -Mcu.Pin33=PA11 -Mcu.Pin34=PA12 -Mcu.Pin35=PA13 -Mcu.Pin36=PA14 -Mcu.Pin37=PA15 -Mcu.Pin38=PC10 -Mcu.Pin39=PC11 +Mcu.Pin30=PC9 +Mcu.Pin31=PA8 +Mcu.Pin32=PA9 +Mcu.Pin33=PA10 +Mcu.Pin34=PA11 +Mcu.Pin35=PA12 +Mcu.Pin36=PA13 +Mcu.Pin37=PA14 +Mcu.Pin38=PA15 +Mcu.Pin39=PC10 Mcu.Pin4=PE6 -Mcu.Pin40=PC12 -Mcu.Pin41=PD2 -Mcu.Pin42=PD3 -Mcu.Pin43=PD6 -Mcu.Pin44=PG12 -Mcu.Pin45=PG15 -Mcu.Pin46=PB3 -Mcu.Pin47=PB6 -Mcu.Pin48=PB7 -Mcu.Pin49=PB8 +Mcu.Pin40=PC11 +Mcu.Pin41=PC12 +Mcu.Pin42=PD2 +Mcu.Pin43=PD3 +Mcu.Pin44=PD6 +Mcu.Pin45=PG12 +Mcu.Pin46=PG15 +Mcu.Pin47=PB3 +Mcu.Pin48=PB6 +Mcu.Pin49=PB7 Mcu.Pin5=PC13 -Mcu.Pin50=PB9 -Mcu.Pin51=PE0 -Mcu.Pin52=PE1 -Mcu.Pin53=VP_IWDG_VS_IWDG -Mcu.Pin54=VP_RTC_VS_RTC_Activate -Mcu.Pin55=VP_RTC_VS_RTC_Calendar -Mcu.Pin56=VP_SYS_VS_tim14 -Mcu.Pin57=VP_TIM1_VS_ClockSourceINT -Mcu.Pin58=VP_TIM3_VS_ClockSourceINT -Mcu.Pin59=VP_TIM8_VS_ClockSourceINT +Mcu.Pin50=PB8 +Mcu.Pin51=PB9 +Mcu.Pin52=PE0 +Mcu.Pin53=PE1 +Mcu.Pin54=VP_IWDG_VS_IWDG +Mcu.Pin55=VP_RTC_VS_RTC_Activate +Mcu.Pin56=VP_RTC_VS_RTC_Calendar +Mcu.Pin57=VP_SYS_VS_tim14 +Mcu.Pin58=VP_TIM1_VS_ClockSourceINT +Mcu.Pin59=VP_TIM3_VS_ClockSourceINT Mcu.Pin6=PC14/OSC32_IN -Mcu.Pin60=VP_TIM11_VS_ClockSourceINT -Mcu.Pin61=VP_TIM12_VS_ClockSourceINT -Mcu.Pin62=VP_TIM13_VS_ClockSourceINT +Mcu.Pin60=VP_TIM8_VS_ClockSourceINT +Mcu.Pin61=VP_TIM11_VS_ClockSourceINT +Mcu.Pin62=VP_TIM12_VS_ClockSourceINT Mcu.Pin7=PC15/OSC32_OUT Mcu.Pin8=PF6 Mcu.Pin9=PF7 Mcu.PinsNb=63 Mcu.ThirdPartyNb=0 -Mcu.UserConstants=mb_huart,huart3;mbdbg_htim,htim11;PWM_CHANNEL_1,TIM_CHANNEL_1;PWM_CHANNEL_2,TIM_CHANNEL_2;PWM_CHANNEL_3,TIM_CHANNEL_3;PWM_CHANNEL_4,TIM_CHANNEL_4;mem_hspi,hspi3;PWM_CHANNEL_5,TIM_CHANNEL_3;PWM_CHANNEL_6,TIM_CHANNEL_4;mb_htim,htim12;adc_tim,htim8;hpwm2,htim2;mb_dbg_huart,huart6;ustim,htim13;hpwm1,htim1 +Mcu.UserConstants=mb_huart,huart3;mbdbg_htim,htim11;PWM_CHANNEL_1,TIM_CHANNEL_1;PWM_CHANNEL_2,TIM_CHANNEL_2;PWM_CHANNEL_3,TIM_CHANNEL_3;PWM_CHANNEL_4,TIM_CHANNEL_4;mem_hspi,hspi3;PWM_CHANNEL_5,TIM_CHANNEL_3;PWM_CHANNEL_6,TIM_CHANNEL_4;mb_htim,htim12;adc_tim,htim8;hpwm2,htim2;mb_dbg_huart,huart6;ustim,htim5;hpwm1,htim1;usTick,ustim.Instance->CNT Mcu.UserName=STM32F427ZGTx MxCube.Version=6.12.1 MxDb.Version=DB.6.0.121 @@ -156,6 +156,7 @@ NVIC.TIM8_TRG_COM_TIM14_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:true NVIC.TimeBase=TIM8_TRG_COM_TIM14_IRQn NVIC.TimeBaseIP=TIM14 NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +PA0/WKUP.Signal=S_TIM5_CH1 PA10.GPIOParameters=GPIO_Label PA10.GPIO_Label=PWM3 PA10.Locked=true @@ -394,7 +395,7 @@ ProjectManager.ToolChainLocation= ProjectManager.UAScriptAfterPath= ProjectManager.UAScriptBeforePath= ProjectManager.UnderRoot=false -ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-true-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_ADC3_Init-ADC3-false-HAL-true,5-MX_USART3_UART_Init-USART3-false-HAL-true,6-MX_CAN1_Init-CAN1-false-HAL-true,7-MX_IWDG_Init-IWDG-false-HAL-true,8-MX_TIM13_Init-TIM13-false-HAL-true,9-MX_RTC_Init-RTC-false-HAL-true,10-MX_TIM1_Init-TIM1-false-HAL-true,11-MX_TIM3_Init-TIM3-false-HAL-true,12-MX_USART6_UART_Init-USART6-false-HAL-true,13-MX_SPI3_Init-SPI3-false-HAL-true,14-MX_TIM11_Init-TIM11-false-HAL-true,15-MX_TIM12_Init-TIM12-false-HAL-true,16-MX_TIM8_Init-TIM8-false-HAL-true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-true-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_ADC3_Init-ADC3-false-HAL-true,5-MX_USART3_UART_Init-USART3-false-HAL-true,6-MX_CAN1_Init-CAN1-false-HAL-true,7-MX_IWDG_Init-IWDG-false-HAL-true,8-MX_TIM13_Init-TIM13-false-HAL-true,8-MX_RTC_Init-RTC-false-HAL-true,9-MX_TIM1_Init-TIM1-false-HAL-true,10-MX_TIM3_Init-TIM3-false-HAL-true,11-MX_USART6_UART_Init-USART6-false-HAL-true,12-MX_SPI3_Init-SPI3-false-HAL-true,13-MX_TIM11_Init-TIM11-false-HAL-true,14-MX_TIM12_Init-TIM12-false-HAL-true,15-MX_TIM8_Init-TIM8-false-HAL-true RCC.48MHZClocksFreq_Value=90000000 RCC.AHBFreq_Value=180000000 RCC.APB1CLKDivider=RCC_HCLK_DIV4 @@ -453,6 +454,8 @@ SH.S_TIM3_CH3.0=TIM3_CH3,PWM Generation3 CH3 SH.S_TIM3_CH3.ConfNb=1 SH.S_TIM3_CH4.0=TIM3_CH4,PWM Generation4 CH4 SH.S_TIM3_CH4.ConfNb=1 +SH.S_TIM5_CH1.0=TIM5_CH1,Input_Capture1_from_TI1 +SH.S_TIM5_CH1.ConfNb=1 SPI3.CalculateBaudRate=22.5 MBits/s SPI3.Direction=SPI_DIRECTION_2LINES SPI3.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate @@ -468,11 +471,12 @@ TIM11.IPParameters=Prescaler TIM11.Prescaler=180-1 TIM12.IPParameters=Prescaler TIM12.Prescaler=90-1 -TIM13.IPParameters=Prescaler -TIM13.Prescaler=90-1 TIM3.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3 TIM3.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4 TIM3.IPParameters=Channel-PWM Generation3 CH3,Channel-PWM Generation4 CH4 +TIM5.Channel-Input_Capture1_from_TI1=TIM_CHANNEL_1 +TIM5.IPParameters=Channel-Input_Capture1_from_TI1,Prescaler +TIM5.Prescaler=90-1 TIM8.IPParameters=Prescaler,Period,TIM_MasterSlaveMode,TIM_MasterOutputTrigger TIM8.Period=1800-1 TIM8.Prescaler=0 @@ -494,8 +498,6 @@ VP_TIM11_VS_ClockSourceINT.Mode=Enable_Timer VP_TIM11_VS_ClockSourceINT.Signal=TIM11_VS_ClockSourceINT VP_TIM12_VS_ClockSourceINT.Mode=Internal VP_TIM12_VS_ClockSourceINT.Signal=TIM12_VS_ClockSourceINT -VP_TIM13_VS_ClockSourceINT.Mode=Enable_Timer -VP_TIM13_VS_ClockSourceINT.Signal=TIM13_VS_ClockSourceINT VP_TIM1_VS_ClockSourceINT.Mode=Internal VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT VP_TIM3_VS_ClockSourceINT.Mode=Internal