diff --git a/MATLAB/MCU_STM32_Matlab/Drivers/STM32_SIMULINK/stm32_matlab_tim.c b/MATLAB/MCU_STM32_Matlab/Drivers/STM32_SIMULINK/stm32_matlab_tim.c index 74c2933..95453a7 100644 --- a/MATLAB/MCU_STM32_Matlab/Drivers/STM32_SIMULINK/stm32_matlab_tim.c +++ b/MATLAB/MCU_STM32_Matlab/Drivers/STM32_SIMULINK/stm32_matlab_tim.c @@ -737,15 +737,15 @@ void TIM_Call_IRQHandller(TIM_TypeDef* TIMx) TIM6_DAC_IRQHandler(); else if (TIMx == TIM7) TIM7_IRQHandler(); - else if ((TIMx == TIM8) || (TIMx == TIM13)) + else if (((TIMx == TIM8) && (TIM8->SR & TIM_SR_UIF)) || (TIMx == TIM13)) TIM8_UP_TIM13_IRQHandler(); - else if ((TIMx == TIM1) || (TIMx == TIM9)) + else if (((TIMx == TIM1) && 0) || (TIMx == TIM9)) TIM1_BRK_TIM9_IRQHandler(); - else if ((TIMx == TIM1) || (TIMx == TIM11)) + else if (((TIMx == TIM1) && (TIM1->SR & (TIM_SR_CC1IF|TIM_SR_CC2IF | TIM_SR_CC3IF | TIM_SR_CC4IF))) || (TIMx == TIM11)) TIM1_TRG_COM_TIM11_IRQHandler(); - else if ((TIMx == TIM8) || (TIMx == TIM12)) + else if (((TIMx == TIM8) && 0) || (TIMx == TIM12)) TIM8_BRK_TIM12_IRQHandler(); - else if ((TIMx == TIM8) || (TIMx == TIM14)) + else if (((TIMx == TIM8) && (TIM8->SR & (TIM_SR_CC1IF | TIM_SR_CC2IF | TIM_SR_CC3IF | TIM_SR_CC4IF))) || (TIMx == TIM14)) TIM8_TRG_COM_TIM14_IRQHandler(); SR_PROCESS(TIMx, SR); diff --git a/MATLAB/app_wrapper/app_io.c b/MATLAB/app_wrapper/app_io.c index 89def34..d9af256 100644 --- a/MATLAB/app_wrapper/app_io.c +++ b/MATLAB/app_wrapper/app_io.c @@ -11,12 +11,18 @@ float dbg[16]; void Write_UPP_Outputs(real_T* Buffer, int ind_port) { - int pwm1_pin = PIN_READ(PWM1); - int pwm2_pin = PIN_READ(PWM2); - int pwm3_pin = PIN_READ(PWM3); - int pwm4_pin = PIN_READ(PWM4); - int pwm5_pin = PIN_READ(PWM5); - int pwm6_pin = PIN_READ(PWM6); + //int pwm1_pin = PIN_READ(PWM1); + //int pwm2_pin = PIN_READ(PWM2); + //int pwm3_pin = PIN_READ(PWM3); + //int pwm4_pin = PIN_READ(PWM4); + //int pwm5_pin = PIN_READ(PWM5); + //int pwm6_pin = PIN_READ(PWM6); + int pwm1_pin = (upp.hpwm.AllPhases[PHASE_A_POS].State == PWM_THYR_TIM_ACTIVE); + int pwm2_pin = (upp.hpwm.AllPhases[PHASE_A_NEG].State == PWM_THYR_TIM_ACTIVE); + int pwm3_pin = (upp.hpwm.AllPhases[PHASE_B_POS].State == PWM_THYR_TIM_ACTIVE); + int pwm4_pin = (upp.hpwm.AllPhases[PHASE_B_NEG].State == PWM_THYR_TIM_ACTIVE); + int pwm5_pin = (upp.hpwm.AllPhases[PHASE_C_POS].State == PWM_THYR_TIM_ACTIVE); + int pwm6_pin = (upp.hpwm.AllPhases[PHASE_C_NEG].State == PWM_THYR_TIM_ACTIVE); int err = PIN_READ(RDO1); int work = PIN_READ(RDO2); int ready = PIN_READ(RDO3); @@ -86,7 +92,7 @@ void Write_PowerMonitor(real_T* Buffer, int ind_port) { //20-21 WriteOutputArray(upp.pm.isr_cnt, ind_port, nn++); - WriteOutputArray(upp.pm.slow_cnt, ind_port, nn++); + WriteOutputArray(upp.pm.slow_cnt%PM_SLOW_PERIOD_CNT, ind_port, nn++); } } diff --git a/MATLAB/upp_r2023.slx b/MATLAB/upp_r2023.slx index c6e9248..d3d073e 100644 Binary files a/MATLAB/upp_r2023.slx and b/MATLAB/upp_r2023.slx differ diff --git a/UPP/AllLibs/MyLibs b/UPP/AllLibs/MyLibs index 0fd9c78..c5a01c5 160000 --- a/UPP/AllLibs/MyLibs +++ b/UPP/AllLibs/MyLibs @@ -1 +1 @@ -Subproject commit 0fd9c78c32ed86a14026e72115f01ca000192464 +Subproject commit c5a01c56acd851843edc478bd65c7f276a9ac8e3 diff --git a/UPP/Core/Configs/upp_config.h b/UPP/Core/Configs/upp_config.h index aac2abc..33dee81 100644 --- a/UPP/Core/Configs/upp_config.h +++ b/UPP/Core/Configs/upp_config.h @@ -19,8 +19,8 @@ /* Дефайны для индексов */ /* Линейные напряжения */ -#define U_BA 0 -#define U_AC 1 +#define U_AB 0 +#define U_CA 1 #define U_BC 2 /* Токи фаз */ #define I_C 0 @@ -32,7 +32,7 @@ #define UPP_DISABLE_ERROR_BLOCK ///< Отключить блокировку УПП при ошибках -#define UPP_SIMULATE_I ///< Симулировт токи (Iref/2) а не брать с АЦП +//#define UPP_SIMULATE_I ///< Симулировт токи (Iref/2) а не брать с АЦП #define UPP_DISABLE_PROTECT_BOARDPOWER ///< Отключить проверки питания плат (+24, +5 В) #define UPP_DISABLE_PROTECT_LOSS_PHASE ///< Отключить проверки на потерянные фазы @@ -86,7 +86,7 @@ #define ANGLE_PID_KD_COEF_DEFAULT 0 /* Параметри мониторинга сети */ -#define PM_EXP_TAU_COEF_DEFAULT 0.05 +#define PM_EXP_TAU_COEF_DEFAULT 0.2 /* Параметры АЦП */ #define ADC_U_MAX_V_DEFAULT 1216.0 @@ -101,7 +101,7 @@ /* Параметры ШИМ для тиристоров */ #define PWM_THYR_FREQUENCY_HZ_DEFAULT 16000 #define PWM_THYR_DUTY_PERCENT_DEFAULT 0.5 -#define PWM_THYR_PULSE_NUMBER_DEFAULT 20 +#define PWM_THYR_PULSE_NUMBER_DEFAULT 10 /** //UPP_PARAMS_DEFAULT * @} diff --git a/UPP/Core/Inc/stm32f4xx_it.h b/UPP/Core/Inc/stm32f4xx_it.h index a95542f..7148ff7 100644 --- a/UPP/Core/Inc/stm32f4xx_it.h +++ b/UPP/Core/Inc/stm32f4xx_it.h @@ -57,6 +57,7 @@ void PendSV_Handler(void); void SysTick_Handler(void); void TIM1_UP_TIM10_IRQHandler(void); void TIM2_IRQHandler(void); +void TIM8_UP_TIM13_IRQHandler(void); void TIM8_TRG_COM_TIM14_IRQHandler(void); void DMA2_Stream0_IRQHandler(void); /* USER CODE BEGIN EFP */ diff --git a/UPP/Core/PowerMonitor/adc_tools.c b/UPP/Core/PowerMonitor/adc_tools.c index a84dfc9..1d48798 100644 --- a/UPP/Core/PowerMonitor/adc_tools.c +++ b/UPP/Core/PowerMonitor/adc_tools.c @@ -156,14 +156,14 @@ HAL_StatusTypeDef ADC_Handle(ADC_Periodic_t *adc) float *data = adc->Data; // // Фильтрация от импульсных шумов для всех каналов -// 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 = 0; i < ADC_NUMB_OF_CHANNELS; i++) + { + if(Filter_isEnable(&adc->filter[i])) + { + // заменяем сырые данные на отфильтрованные данные + raw[i] = Filter_Process(&adc->filter[i], raw[i]); + } + } // Перерасчеты Напряжений/Токов в единицы измерения for(int i = 0; i < ADC_NUMB_OF_REGULAR_CHANNELS; i++) diff --git a/UPP/Core/PowerMonitor/adc_tools.h b/UPP/Core/PowerMonitor/adc_tools.h index 1fd5db5..2367f97 100644 --- a/UPP/Core/PowerMonitor/adc_tools.h +++ b/UPP/Core/PowerMonitor/adc_tools.h @@ -53,7 +53,7 @@ static const float adc_temp_quants[] = ADC_TEMPERATURES_QUANTS; #define Filter_t FilterMedianInt_t #define Filter_Init FilterMedianInt_Init -#define Filter_Initializator 5 +#define Filter_Initializator 10, 2048 /** * @brief Коэфициенты канала АЦП для пересчета в единицы измерения diff --git a/UPP/Core/PowerMonitor/power_monitor.c b/UPP/Core/PowerMonitor/power_monitor.c index ed9a76c..8cc64b3 100644 --- a/UPP/Core/PowerMonitor/power_monitor.c +++ b/UPP/Core/PowerMonitor/power_monitor.c @@ -11,8 +11,8 @@ #include "adc.h" #include "tim.h" -#define U_BC_calc(_u1_, _u2_) (-((_u1_) + (_u2_))) -#define I_B_calc(_i1_, _i2_) (-((_i1_) + (_i2_))) +#define U_BC_calc(_uab_, _uca_) (-((_uab_) + (_uca_))) +#define I_B_calc(_ia_, _ic_) (-((_ia_) + (_ic_))) static void __SynchAvgFilters(PowerMonitor_t *hpm); @@ -61,9 +61,9 @@ HAL_StatusTypeDef PowerMonitor_Init(PowerMonitor_t *hpm) return HAL_ERROR; /* Инициализация каналов алгоритма перехода через ноль */ - if(ZC_ConfigChannel(&hpm->zc, U_BA, ZC_BOTH_EDGES) != HAL_OK) + if(ZC_ConfigChannel(&hpm->zc, U_AB, ZC_BOTH_EDGES) != HAL_OK) return HAL_ERROR; - if(ZC_ConfigChannel(&hpm->zc, U_AC, ZC_BOTH_EDGES) != HAL_OK) + if(ZC_ConfigChannel(&hpm->zc, U_CA, ZC_BOTH_EDGES) != HAL_OK) return HAL_ERROR; if(ZC_ConfigChannel(&hpm->zc, U_BC, ZC_BOTH_EDGES) != HAL_OK) return HAL_ERROR; @@ -96,7 +96,7 @@ HAL_StatusTypeDef PowerMonitor_Init(PowerMonitor_t *hpm) /* Инициализация среднего фильтра для частот */ for(int i = 0; i < 3; i++) { - if(FilterAverage_Init(&hpm->avg[AVG_FBA+i], MS_TO_SLOW_TICKS(PM_F_SLOW_PERIOD_MS), FILTER_MODE_DEFAULT)) + if(FilterAverage_Init(&hpm->avg[AVG_FAB+i], MS_TO_SLOW_TICKS(PM_F_SLOW_PERIOD_MS), FILTER_MODE_DEFAULT)) return HAL_ERROR; Filter_Start(&hpm->avg[ADC_TEMP_CHANNELS_START+i]); @@ -143,7 +143,7 @@ void PowerMonitor_SlowCalc(PowerMonitor_t *hpm) meas->final.T[TEMP_2] = Filter_Process(&hpm->avg[AVG_TEMP2], t2); /* Расчет третьей фазы */ - meas->slow.U[U_BC] = U_BC_calc(meas->slow.U[U_BA], meas->slow.U[U_AC]); + meas->slow.U[U_BC] = U_BC_calc(meas->slow.U[U_AB], meas->slow.U[U_CA]); meas->slow.I[I_B] = I_B_calc(meas->slow.I[I_A], meas->slow.I[I_C]); /* Расчет всякого для трех фаз отдельно */ @@ -156,13 +156,13 @@ void PowerMonitor_SlowCalc(PowerMonitor_t *hpm) for(int i = 0; i < 3; i++) { /* Получение частоты фазы */ - meas->final.F[i] = Filter_Process(&hpm->avg[AVG_FBA+i], ZC_GetFrequency(&hpm->zc, i)); + meas->final.F[i] = Filter_Process(&hpm->avg[AVG_FAB+i], ZC_GetFrequency(&hpm->zc, i)); meas->final.Offset[i] = ZC_GetOffset(&hpm->zc, i); fmean += meas->final.F[i]; /* Средниее напряжение фазы */ uphase_mean = fabsf(meas->slow.U[i]); - uphase_mean = Filter_Process(&hpm->exp[EXP_UBA+i], uphase_mean); + uphase_mean = Filter_Process(&hpm->exp[EXP_UAB+i], uphase_mean); meas->final.U[i] = uphase_mean*PI/2/SQRT2; /*PI/2 - получить амплитудное, SQRT2 - получить действующее */ /* Средний ток фазы */ @@ -188,7 +188,7 @@ void PowerMonitor_SlowCalc(PowerMonitor_t *hpm) /* Расчет амплитуд трехфазной сети */ - float uamp = vector_abs_linear_calc(meas->slow.U[U_BA], meas->slow.U[U_AC])/SQRT2; /* SQRT2 - получить действующее */ + float uamp = vector_abs_linear_calc(meas->slow.U[U_AB], meas->slow.U[U_CA])/SQRT2; /* SQRT2 - получить действующее */ float iamp = vector_abs_phase_calc(meas->slow.I[I_A], meas->slow.I[I_C])/SQRT2; /* SQRT2 - получить действующее */ meas->final.Uamp = Filter_Process(&hpm->exp[EXP_U], uamp); meas->final.Iamp = Filter_Process(&hpm->exp[EXP_I], iamp); @@ -215,9 +215,9 @@ void PowerMonitor_FastCalc(PowerMonitor_t *hpm) float u_base = u2f(PARAM_INTERNAL.nominal.U, 10); float i_base = u2f(PARAM_INTERNAL.nominal.I, 10); PowerMonitor_Measured_t *meas = &hpm->measured; - meas->fast.U[U_BA] = hpm->adc.Data[ADC_CHANNEL_UBA]/u_base; - meas->fast.U[U_AC] = hpm->adc.Data[ADC_CHANNEL_UAC]/u_base; - meas->fast.U[U_BC] = U_BC_calc(meas->fast.U[U_BA], meas->fast.U[U_AC]); + meas->fast.U[U_AB] = hpm->adc.Data[ADC_CHANNEL_UBA]/u_base; + meas->fast.U[U_CA] = hpm->adc.Data[ADC_CHANNEL_UAC]/u_base; + meas->fast.U[U_BC] = U_BC_calc(meas->fast.U[U_AB], meas->fast.U[U_CA]); meas->fast.I[I_C] = hpm->adc.Data[ADC_CHANNEL_IC]/i_base; meas->fast.I[I_A] = hpm->adc.Data[ADC_CHANNEL_IA]/i_base; @@ -230,8 +230,8 @@ void PowerMonitor_FastCalc(PowerMonitor_t *hpm) //__SynchAvgFilters(hpm); /* Average для медленной фильтрации */ - meas->slow.U[U_BA] = Filter_Process(&hpm->avg[AVG_UBA], meas->fast.U[U_BA]); - meas->slow.U[U_AC] = Filter_Process(&hpm->avg[AVG_UAC], meas->fast.U[U_AC]); + meas->slow.U[U_AB] = Filter_Process(&hpm->avg[AVG_UAB], meas->fast.U[U_AB]); + meas->slow.U[U_CA] = Filter_Process(&hpm->avg[AVG_UCA], meas->fast.U[U_CA]); meas->slow.I[I_C] = Filter_Process(&hpm->avg[AVG_IC], meas->fast.I[I_C]); meas->slow.I[I_A] = Filter_Process(&hpm->avg[AVG_IA], meas->fast.I[I_A]); diff --git a/UPP/Core/PowerMonitor/power_monitor.h b/UPP/Core/PowerMonitor/power_monitor.h index b0a4872..09e90c4 100644 --- a/UPP/Core/PowerMonitor/power_monitor.h +++ b/UPP/Core/PowerMonitor/power_monitor.h @@ -15,8 +15,8 @@ /* Индексы экспоненциальных фильтров */ #define EXP_ALL 8 #define EXP_U 0 -#define EXP_UBA 1 -#define EXP_UAC 2 +#define EXP_UAB 1 +#define EXP_UCA 2 #define EXP_UBC 3 #define EXP_I 4 #define EXP_IC 5 @@ -24,14 +24,14 @@ #define EXP_IB 7 #define AVG_ALL 9 -#define AVG_UBA 0 -#define AVG_UAC 1 +#define AVG_UAB 0 +#define AVG_UCA 1 #define AVG_IC 2 #define AVG_IA 3 #define AVG_TEMP1 4 #define AVG_TEMP2 5 -#define AVG_FBA 6 -#define AVG_FAC 7 +#define AVG_FAB 6 +#define AVG_FCA 7 #define AVG_FBC 8 /** diff --git a/UPP/Core/PowerMonitor/power_protect.c b/UPP/Core/PowerMonitor/power_protect.c index 1f105ad..11ac38b 100644 --- a/UPP/Core/PowerMonitor/power_protect.c +++ b/UPP/Core/PowerMonitor/power_protect.c @@ -142,11 +142,11 @@ void Protect_Misc(PowerMonitor_Measured_t *measure, UPP_PUI_Params_t *protect, U /*=============== ЗАЩИТЫ ПО ЧАСТОТЕ ==================*/ - if(measure->final.F[U_AC] > lFmax) + if(measure->final.F[U_CA] > lFmax) { ERR_PRIVATE.fac_max = 1; } - else if (measure->final.F[U_AC] < lFmin) + else if (measure->final.F[U_CA] < lFmin) { ERR_PRIVATE.fac_min = 1; } @@ -156,11 +156,11 @@ void Protect_Misc(PowerMonitor_Measured_t *measure, UPP_PUI_Params_t *protect, U ERR_PRIVATE.fac_min = 0; } - if(measure->final.F[U_BA] > lFmax) + if(measure->final.F[U_AB] > lFmax) { ERR_PRIVATE.fba_max = 1; } - else if (measure->final.F[U_BA] < lFmin) + else if (measure->final.F[U_AB] < lFmin) { ERR_PRIVATE.fba_min = 1; } diff --git a/UPP/Core/Src/stm32f4xx_it.c b/UPP/Core/Src/stm32f4xx_it.c index 974357c..368ee07 100644 --- a/UPP/Core/Src/stm32f4xx_it.c +++ b/UPP/Core/Src/stm32f4xx_it.c @@ -232,6 +232,20 @@ void TIM2_IRQHandler(void) /* USER CODE END TIM2_IRQn 1 */ } +/** + * @brief This function handles TIM8 update interrupt and TIM13 global interrupt. + */ +void TIM8_UP_TIM13_IRQHandler(void) +{ + /* USER CODE BEGIN TIM8_UP_TIM13_IRQn 0 */ + + /* USER CODE END TIM8_UP_TIM13_IRQn 0 */ + HAL_TIM_IRQHandler(&htim8); + /* USER CODE BEGIN TIM8_UP_TIM13_IRQn 1 */ + UPP_PWM_Handle(); + /* USER CODE END TIM8_UP_TIM13_IRQn 1 */ +} + /** * @brief This function handles TIM8 trigger and commutation interrupts and TIM14 global interrupt. */ diff --git a/UPP/Core/Src/tim.c b/UPP/Core/Src/tim.c index 1f5a7d0..9659878 100644 --- a/UPP/Core/Src/tim.c +++ b/UPP/Core/Src/tim.c @@ -461,6 +461,8 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) __HAL_RCC_TIM8_CLK_ENABLE(); /* TIM8 interrupt Init */ + HAL_NVIC_SetPriority(TIM8_UP_TIM13_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(TIM8_UP_TIM13_IRQn); HAL_NVIC_SetPriority(TIM8_TRG_COM_TIM14_IRQn, 15, 0); HAL_NVIC_EnableIRQ(TIM8_TRG_COM_TIM14_IRQn); /* USER CODE BEGIN TIM8_MspInit 1 */ @@ -604,6 +606,7 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle) __HAL_RCC_TIM8_CLK_DISABLE(); /* TIM8 interrupt Deinit */ + HAL_NVIC_DisableIRQ(TIM8_UP_TIM13_IRQn); HAL_NVIC_DisableIRQ(TIM8_TRG_COM_TIM14_IRQn); /* USER CODE BEGIN TIM8_MspDeInit 1 */ diff --git a/UPP/Core/UPP/pwm_thyristors.c b/UPP/Core/UPP/pwm_thyristors.c index e5666e1..ca30e8f 100644 --- a/UPP/Core/UPP/pwm_thyristors.c +++ b/UPP/Core/UPP/pwm_thyristors.c @@ -367,6 +367,7 @@ HAL_StatusTypeDef PWM_Handle(PWM_Handle_t *hpwm) // после того как пачка импульсов прошла отключаем активный канал if (hPhase->State == PWM_THYR_TIM_ACTIVE) { + hPhase->State = PWM_THYR_TIM_WAIT; if(hpwm->f.Running) hpwm->f.Running--; __PWM_SetOutputState(hPhase, PWM_DISABLE); diff --git a/UPP/Core/UPP/pwm_thyristors.h b/UPP/Core/UPP/pwm_thyristors.h index ee1075b..8a1ff6c 100644 --- a/UPP/Core/UPP/pwm_thyristors.h +++ b/UPP/Core/UPP/pwm_thyristors.h @@ -25,11 +25,11 @@ // Индексы для структур каналов @ref PWM_Handle_t #define PHASE_A_POS 0 -#define PHASE_B_POS 1 -#define PHASE_C_POS 2 +#define PHASE_C_POS 1 +#define PHASE_B_POS 2 #define PHASE_A_NEG 3 -#define PHASE_B_NEG 4 -#define PHASE_C_NEG 5 +#define PHASE_C_NEG 4 +#define PHASE_B_NEG 5 #define PHASE_UNKNOWN 6 diff --git a/UPP/MDK-ARM/UPP.uvoptx b/UPP/MDK-ARM/UPP.uvoptx index 3504953..29b71b0 100644 --- a/UPP/MDK-ARM/UPP.uvoptx +++ b/UPP/MDK-ARM/UPP.uvoptx @@ -355,7 +355,7 @@ 5 1 - hbt,0x0A + upp.pm.measured 6 @@ -501,7 +501,7 @@ 0 1 - 0 + 1 0 0 0 @@ -515,7 +515,7 @@ 0 0 0 - 0 + 1 0 0 0 diff --git a/UPP/MDK-ARM/UPP.uvprojx b/UPP/MDK-ARM/UPP.uvprojx index 8574a4d..70d41f4 100644 --- a/UPP/MDK-ARM/UPP.uvprojx +++ b/UPP/MDK-ARM/UPP.uvprojx @@ -17,8 +17,8 @@ STM32F427ZGTx STMicroelectronics - Keil.STM32F4xx_DFP.2.16.0 - http://www.keil.com/pack/ + Keil.STM32F4xx_DFP.2.17.1 + https://www.keil.com/pack/ IRAM(0x20000000-0x2002FFFF) IRAM2(0x10000000-0x1000FFFF) IROM(0x8000000-0x80FFFFF) CLOCK(25000000) FPU2 CPUTYPE("Cortex-M4") TZ @@ -1004,8 +1004,8 @@ STM32F417ZGTx STMicroelectronics - Keil.STM32F4xx_DFP.2.16.0 - http://www.keil.com/pack/ + Keil.STM32F4xx_DFP.2.17.1 + https://www.keil.com/pack/ IRAM(0x20000000,0x00020000) IRAM2(0x10000000,0x00010000) IROM(0x08000000,0x00100000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE diff --git a/UPP/UPP.ioc b/UPP/UPP.ioc index 5d60256..fd38e5f 100644 --- a/UPP/UPP.ioc +++ b/UPP/UPP.ioc @@ -163,6 +163,7 @@ NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false NVIC.TIM1_UP_TIM10_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true NVIC.TIM2_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true NVIC.TIM8_TRG_COM_TIM14_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:true +NVIC.TIM8_UP_TIM13_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true NVIC.TimeBase=TIM8_TRG_COM_TIM14_IRQn NVIC.TimeBaseIP=TIM14 NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false