Update firmware

This commit is contained in:
SimonovaMI 2025-09-20 17:52:02 +03:00
parent 0c9935e81f
commit 8553d33466
31 changed files with 25148 additions and 24246 deletions

View File

@ -5,7 +5,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-706055241342829898" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-1791371621588492842" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
@ -16,7 +16,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-706055241342829898" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-1791371621588492842" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>

View File

@ -9,6 +9,10 @@
#define F412 1
#define MK_TYPE F412
#define RA_CHANNEL 1
#define RV_CHANNEL 2
#define LV_CHANNEL 3
#define LAMP false//увеличенное время разряда
#define SPI_MODE false//с фронт энда берём данные
#define ACTIVE_CH 3//с фронт энда берём данные
@ -28,8 +32,8 @@
// Х*3.3/(4096*(1 + 100000.0/RG)) это сколько вольт у нас
#define MOV_AV_COEF 0.02//коэффициет скользящего среднего
#define MIN_TRES 0.5
#define MAX_TRES 3.0
#define MIN_TRES 2.0
#define MAX_TRES 10.0
#define DATA_RATE 200
//время для стабилизации сигналов когда ничего не происходит
@ -76,6 +80,20 @@
#define STANDBY_TIME_MS 10*1000//пусть будет 1 минут
// минимальное и максимальное кол-во импульсов в пачке
#define BURST_CNT_MIN 5
#define BURST_CNT_MAX 50
// минимальное и максимальное напряжение стимуляции в burst режиме
#define BURST_VOLTAGE_MIN 10
#define BURST_VOLTAGE_MAX 80
// минимальный и максимальный период следования импульсов в burst режиме
#define BURST_PERIOD_MIN 150
#define BURST_PERIOD_MAX 500
#define BURST_PERIOD_MIN_F 150.0
#define BURST_PERIOD_MAX_F 500.0
#define CHARDE_TONE 120
#define READY_TONE 100
@ -166,8 +184,14 @@ typedef enum
{
lv_mode_none = 0, //без стимуляции
lv_mode_BURST = 1, //режим для вызова фибрилляции после отработки пачки сбрасывается в lv_mode_none
lv_mode_VOO = 2, //стимуляция идёт независимо от активности сердца
lv_mode_VVI = 3 //стимуляция ингибируется при активности сердца
lv_mode_VOO = 2, //стимуляция идёт независимо от активности сердца Желудочка
lv_mode_VVI = 3//, //стимуляция ингибируется при активности сердца Желудочка
// lv_mode_VVT = 4, //стимуляция активизируется при активности сердца Желудочка
// lv_mode_VVIR = 5, //как VVI, но порог чсс зависит отдвигательной активности Желудочка
// lv_mode_AOO = 6, //стимуляция идёт независимо от активности сердца Предсердия
// lv_mode_AAI = 7, //стимуляция ингибируется при активности сердца Предсердия
// lv_mode_AAT = 8, //стимуляция активизируется при активности сердца Предсердия
// lv_mode_AAIR = 9, //как VVI, но порог чсс зависит отдвигательной активности Предсердия
} lv_mode;
//подрежим низковольтной стимуляции
@ -234,10 +258,10 @@ typedef struct icd_str
uint8_t lv_voltage;//какое напряжение у импульсов 10-80(1,0-8,0В) одна единица 0,1В шаг 0,1В
//bool BURST_active;//параметр вводящий нас в режим burst посылка пачки импульсов для вызова фибрилляции
uint8_t BURST_cnt;//сколько импульсов в одной пачке 5-50 одна единица 1 импульс шаг 1 импульс
uint8_t BURST_voltage;//какое напряжение у импульсов 10-80(1,0-8,0В) одна единица 0,1В шаг 0,1В
uint16_t BURST_period;//период следования импульсов в мс 150-500мс одна единица 1мс шаг 10 мс на ползунке
uint8_t burst_cnt;//сколько импульсов в одной пачке 5-50 одна единица 1 импульс шаг 1 импульс
uint8_t burst_voltage;//какое напряжение у импульсов 10-80(1,0-8,0В) одна единица 0,1В шаг 0,1В
uint16_t burst_period;//период следования импульсов в мс 150-500мс одна единица 1мс шаг 10 мс на ползунке
uint16_t burst_end_period;//конечный период следования импульсов в мс 150-500мс одна единица 1мс шаг 10 мс на ползунке
// Время в мс которое длится режим стимуляции низким напряжением
uint16_t lv_mode_time;
@ -384,6 +408,9 @@ void ll_bi_shock_param(icd_str * icd_str);
void ra_lv_control(icd_str * icd_str,lv_sub_mode mode);
void rv_lv_control(icd_str * icd_str,lv_sub_mode mode);
void one_stimul(icd_str *icd_str);
void burst(icd_str *icd_str);
void hv_en_control(bool en_RV, bool en_SCV, bool en_CAN);
void hv_en_rv(bool state);
void hv_en_scv(bool state);

View File

@ -168,13 +168,14 @@ void StartDefaultTask(void const * argument)
{
if(ICD.lv_start == true)
{
rv_lv_control(&ICD,lv_sub_charge);
rv_lv_control(&ICD,lv_sub_shock);
rv_lv_control(&ICD,lv_sub_relax);
// rv_lv_control(&ICD,lv_sub_free);
rv_lv_control(&ICD,lv_sub_discharge);
ICD.lv_start = false;
// rv_lv_control(icd_str,lv_sub_free);
if(ICD.lv_mode != lv_mode_BURST)
{
one_stimul(&ICD);
}
else
{
burst(&ICD);
}
}
osDelay(5);
}

View File

@ -61,9 +61,6 @@ void MX_GPIO_Init(void)
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOE, V12_PWR_Pin|HV_LOGIC_PWR_Pin|RV_LV_DIS_Pin, GPIO_PIN_SET);
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(RA_LV_SHOCK_GPIO_Port, RA_LV_SHOCK_Pin, GPIO_PIN_SET);
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOB, RA_LV_DIS_Pin|HV_EN_RV_Pin, GPIO_PIN_SET);
@ -114,13 +111,6 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
/*Configure GPIO pin : PtPin */
GPIO_InitStruct.Pin = RA_LV_SHOCK_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
HAL_GPIO_Init(RA_LV_SHOCK_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pins : PBPin PBPin PBPin PBPin
PBPin PBPin PBPin PBPin */
GPIO_InitStruct.Pin = RA_LV_DIS_Pin|RA_LV_COIL_TO_GND_Pin|RA_LV_TIP_TO_GND_Pin|CAN_LV_TO_GND_Pin

View File

@ -7,6 +7,7 @@
#endif
extern TIM_HandleTypeDef htim11;
extern TIM_HandleTypeDef htim14;
icd_str ICD;
extern adc_struct adc_str;//структура ацп
@ -58,10 +59,10 @@ void init_icd(icd_str * icd_str)
icd_str->lv_voltage = 35;//какое напряжение у импульсов 10-80(1,0-8,0В) одна единица 0,1В шаг 0,1В
//bool BURST_active;//параметр вводящий нас в режим burst посылка пачки импульсов для вызова фибрилляции
icd_str->BURST_cnt = 33;//сколько импульсов в одной пачке 5-50 одна единица 1 импульс шаг 1 импульс
icd_str->BURST_voltage =34;//какое напряжение у импульсов 10-80(1,0-8,0В) одна единица 0,1В шаг 0,1В
icd_str->BURST_period = 333;//период следования импульсов в мс 150-500мс одна единица 1мс шаг 10 мс на ползунке
icd_str->burst_cnt = 33;//сколько импульсов в одной пачке 5-50 одна единица 1 импульс шаг 1 импульс
icd_str->burst_voltage = 34;//какое напряжение у импульсов 10-80(1,0-8,0В) одна единица 0,1В шаг 0,1В
icd_str->burst_period = 500;//период следования импульсов в мс 150-500мс одна единица 1мс шаг 10 мс на ползунке
icd_str->burst_end_period = 300;//период следования импульсов в конце стимуляции в мс 150-500мс одна единица 1мс шаг 10 мс на ползунке
// тип последнего определённого события
@ -112,7 +113,7 @@ void init_icd(icd_str * icd_str)
icd_str->hv_step_number = HV_STEP_NUM;//сколько шагов ВВ терапии?
icd_str->hv_step_cnt = 0;// какой сейчас шаг?
icd_str->hv_polarity = rv_neg_scv_poz; //полярность стимуляции
icd_str->hv_polarity = rv_neg_can_poz; //полярность стимуляции
icd_str->hv_mode = hv_mode_fixed; //тип способа задания длительности импульса
//время константы времени стимуляции
icd_str->hv_phase_1_duration = 100; // время в десятых мс приходящееся на 1 фазу 30-120(3-12мс) одна единица 0,1мс
@ -134,6 +135,11 @@ void init_icd(icd_str * icd_str)
icd_str->spi_pot_set = 6;
}
//статические функции
void first_phase(hv_polarity polarity);
void second_phase(hv_polarity polarity);
float my_abs(float a)
{
return (a<0)? -a:a;
@ -542,6 +548,7 @@ void hv_charge(icd_str *icd_str)
uint16_t voltage_i = (uint16_t) (voltage * 10.2);//умножаем на 10.2 а не на 10 т.к. напряжение после выключения заряда слегка просаживается.
while (i < 80)
{
// тут были попытки менять в динамике заполнение шим, но никак не помогло.
// if (adc_str.hv_volt > 3500)
// {
// TIM1->CCR4 = 50;
@ -825,8 +832,8 @@ void hv_ll_rv_control(half_br state)
//Замкнут нижний ключ
if(state == low)
{
HAL_GPIO_WritePin(HV_LS_RV_GPIO_Port, HV_LS_RV_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(HV_HS_RV_GPIO_Port, HV_HS_RV_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(HV_LS_RV_GPIO_Port, HV_LS_RV_Pin, GPIO_PIN_SET);
}
//Замкнут верхний ключ
else if (state == high)
@ -848,8 +855,8 @@ void hv_ll_scv_control(half_br state)
//Замкнут нижний ключ
if(state == low)
{
HAL_GPIO_WritePin(HV_LS_SCV_GPIO_Port, HV_LS_SCV_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(HV_HS_SCV_GPIO_Port, HV_HS_SCV_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(HV_LS_SCV_GPIO_Port, HV_LS_SCV_Pin, GPIO_PIN_SET);
}
//Замкнут верхний ключ
else if (state == high)
@ -871,8 +878,8 @@ void hv_ll_can_control(half_br state)
//Замкнут нижний ключ
if(state == low)
{
HAL_GPIO_WritePin(HV_LS_CAN_GPIO_Port, HV_LS_CAN_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(HV_HS_CAN_GPIO_Port, HV_HS_CAN_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(HV_LS_CAN_GPIO_Port, HV_LS_CAN_Pin, GPIO_PIN_SET);
}
//Замкнут верхний ключ
else if (state == high)
@ -904,6 +911,58 @@ void hv_discharge(bool state)
}
}
void first_phase(hv_polarity polarity)
{
switch (polarity)
{
// Электрод RV отрицательный SCV положительный
case rv_neg_scv_poz:
{
hv_ll_control(low, high, z_state);
}
break;
// Электрод RV отрицательный корпус прибора положительный
case rv_neg_can_poz:
{
hv_ll_control(low, z_state, high);
}
break;
// Электрод RV отрицательный SCV и корпус прибора положительный
case rv_neg_scv_can_poz:
{
hv_ll_control(low, high, high);
}
break;
}
}
void second_phase(hv_polarity polarity)
{
switch (polarity)
{
// Электрод RV отрицательный SCV положительный
case rv_neg_scv_poz:
{
hv_ll_control(high, low, z_state);
}
break;
// Электрод RV отрицательный корпус прибора положительный
case rv_neg_can_poz:
{
hv_ll_control(high, z_state, low);
}
break;
// Электрод RV отрицательный SCV и корпус прибора положительный
case rv_neg_scv_can_poz:
{
hv_ll_control(high, low, low);
}
break;
}
}
////разряд биполярный с выбором параметров
void ll_bi_shock_param(icd_str * icd_str)
{
@ -936,19 +995,16 @@ void ll_bi_shock_param(icd_str * icd_str)
hv_en_control(true,true,false);
osDelay(2);//временно
//первая волна
hv_ll_control(low, high, z_state);
//первая фаза
first_phase(polarity);
delay_critical(hv_phase_1_duration);
// osDelay(2);//временно
//остановка
//чтобы не пробило перевели в разамкнутое состояние все полумосты
hv_ll_control(z_state, z_state, z_state);
delay_critical(hv_switch_duration);
// osDelay(2);//временно
//вторая волна
hv_ll_control(high, low, z_state);
//вторая фаза
second_phase(polarity);
delay_critical(hv_phase_2_duration);
// osDelay(2);
//отключение
hv_ll_control(z_state, z_state, z_state);
hv_en_control(false,false,false);
@ -972,7 +1028,6 @@ void ra_lv_control(icd_str * icd_str,lv_sub_mode mode)
HAL_GPIO_WritePin(RA_LV_TIP_TO_GND_GPIO_Port, RA_LV_TIP_TO_GND_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(RA_LV_COIL_TO_GND_GPIO_Port, RA_LV_COIL_TO_GND_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(RA_LV_DIS_GPIO_Port, RA_LV_DIS_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(RA_LV_SHOCK_GPIO_Port, RA_LV_SHOCK_Pin, GPIO_PIN_SET);
}
break;
//Заряд без всякого вмешательства tip и coil идёт заряд
@ -981,12 +1036,12 @@ void ra_lv_control(icd_str * icd_str,lv_sub_mode mode)
HAL_GPIO_WritePin(RA_LV_TIP_TO_GND_GPIO_Port, RA_LV_TIP_TO_GND_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(RA_LV_COIL_TO_GND_GPIO_Port, RA_LV_COIL_TO_GND_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(RA_LV_DIS_GPIO_Port, RA_LV_DIS_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(RA_LV_SHOCK_GPIO_Port, RA_LV_SHOCK_Pin, GPIO_PIN_SET);
osDelay(2);
TIM4->CCR1 = 500;
TIM4->CCR2 = 500;
TIM4->CCR3 = 500;
osDelay(2);
uint32_t charge_time = (uint32_t) (icd_str->lv_voltage);
osDelay(charge_time/5);
TIM4->CCR1 = 0;
TIM4->CCR2 = 0;
TIM4->CCR3 = 0;
@ -997,10 +1052,13 @@ void ra_lv_control(icd_str * icd_str,lv_sub_mode mode)
{
HAL_GPIO_WritePin(RA_LV_TIP_TO_GND_GPIO_Port, RA_LV_TIP_TO_GND_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(RA_LV_COIL_TO_GND_GPIO_Port, RA_LV_COIL_TO_GND_Pin, GPIO_PIN_SET);
// HAL_GPIO_WritePin(RA_LV_COIL_TO_GND_GPIO_Port, RA_LV_COIL_TO_GND_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(RA_LV_DIS_GPIO_Port, RA_LV_DIS_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(RA_LV_SHOCK_GPIO_Port, RA_LV_SHOCK_Pin, GPIO_PIN_RESET);
osDelay(1);
HAL_GPIO_WritePin(RA_LV_SHOCK_GPIO_Port, RA_LV_SHOCK_Pin, GPIO_PIN_SET);
osDelay(2);
uint32_t shock_time = (uint32_t) (icd_str->lv_shock_time);
__HAL_TIM_SET_COUNTER(&htim14, 0);
__HAL_TIM_SET_COMPARE(&htim14, TIM_CHANNEL_1, 30-shock_time); //установка задержки перед импульсом
TIM14->CR1 |= TIM_CR1_CEN;
}
break;
//Релаксация tip и coil притянуты к земле
@ -1009,8 +1067,6 @@ void ra_lv_control(icd_str * icd_str,lv_sub_mode mode)
HAL_GPIO_WritePin(RA_LV_TIP_TO_GND_GPIO_Port, RA_LV_TIP_TO_GND_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(RA_LV_COIL_TO_GND_GPIO_Port, RA_LV_COIL_TO_GND_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(RA_LV_DIS_GPIO_Port, RA_LV_DIS_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(RA_LV_SHOCK_GPIO_Port, RA_LV_SHOCK_Pin, GPIO_PIN_SET);
osDelay(20);
}
break;
//Разряд без всякого вмешательства tip и coil свободны идёт разряд(необязательный режим)
@ -1019,7 +1075,6 @@ void ra_lv_control(icd_str * icd_str,lv_sub_mode mode)
HAL_GPIO_WritePin(RA_LV_TIP_TO_GND_GPIO_Port, RA_LV_TIP_TO_GND_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(RA_LV_COIL_TO_GND_GPIO_Port, RA_LV_COIL_TO_GND_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(RA_LV_DIS_GPIO_Port, RA_LV_DIS_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(RA_LV_SHOCK_GPIO_Port, RA_LV_SHOCK_Pin, GPIO_PIN_SET);
}
break;
}
@ -1048,7 +1103,7 @@ void rv_lv_control(icd_str * icd_str,lv_sub_mode mode)
TIM2->CCR3 = 500;
TIM2->CCR4 = 500;
uint32_t charge_time = (uint32_t) (icd_str->lv_voltage);
osDelay(charge_time/10);
osDelay(charge_time/5);
TIM2->CCR2 = 0;
TIM2->CCR3 = 0;
TIM2->CCR4 = 0;
@ -1073,7 +1128,6 @@ void rv_lv_control(icd_str * icd_str,lv_sub_mode mode)
HAL_GPIO_WritePin(RV_LV_TIP_TO_GND_GPIO_Port, RV_LV_TIP_TO_GND_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(RV_LV_COIL_TO_GND_GPIO_Port, RV_LV_COIL_TO_GND_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(RV_LV_DIS_GPIO_Port, RV_LV_DIS_Pin, GPIO_PIN_SET);
osDelay(20);
}
break;
//Разряд без всякого вмешательства tip и coil свободны идёт разряд(необязательный режим)
@ -1087,6 +1141,77 @@ void rv_lv_control(icd_str * icd_str,lv_sub_mode mode)
}
}
void one_stimul(icd_str *icd_str)
{
//сперва тупо парсим параметры из основной структуры
//хватаем параметры в локальные переменные чтобы ничего не поменялось
uint8_t active_ch = icd_str->active_ch;
if (active_ch == RV_CHANNEL)
{
rv_lv_control(&ICD, lv_sub_charge);
rv_lv_control(&ICD, lv_sub_shock);
rv_lv_control(&ICD, lv_sub_relax);
rv_lv_control(&ICD, lv_sub_discharge);
}
else if (active_ch == RA_CHANNEL)
{
ra_lv_control(&ICD, lv_sub_charge);
ra_lv_control(&ICD, lv_sub_shock);
ra_lv_control(&ICD, lv_sub_relax);
ra_lv_control(&ICD, lv_sub_discharge);
}
icd_str->lv_start = false;
}
void burst(icd_str *icd_str)
{
//сперва тупо парсим параметры из основной структуры
//хватаем параметры в локальные переменные чтобы ничего не поменялось
uint8_t active_ch = icd_str->active_ch;
uint8_t burst_cnt = icd_str->burst_cnt;
float burst_start_period = (float) icd_str->burst_period;
float burst_end_period = (float) icd_str->burst_end_period;
float burst_now_period = burst_start_period;
float burst_step = (burst_end_period - burst_start_period) / ((float) (burst_cnt-1));
uint8_t i = 0;
while (i < burst_cnt)
{
if (active_ch == RV_CHANNEL)
{
rv_lv_control(&ICD, lv_sub_charge);
rv_lv_control(&ICD, lv_sub_shock);
rv_lv_control(&ICD, lv_sub_relax);
rv_lv_control(&ICD, lv_sub_discharge);
}
else if (active_ch == RA_CHANNEL)
{
ra_lv_control(&ICD, lv_sub_charge);
ra_lv_control(&ICD, lv_sub_shock);
ra_lv_control(&ICD, lv_sub_relax);
ra_lv_control(&ICD, lv_sub_discharge);
}
// тут криво работает период не меняет
// burst_now_period = burst_start_period + burst_step * (float) (i);
// fixme try this!!
burst_now_period += burst_step;
if (burst_now_period > BURST_PERIOD_MAX_F)
osDelay(BURST_PERIOD_MAX);
else if (burst_now_period < BURST_PERIOD_MIN_F)
osDelay(BURST_PERIOD_MIN);
else
osDelay((uint32_t) burst_now_period);
i++;
}
icd_str->lv_mode = lv_mode_none;
icd_str->lv_start = false;
}
//единое управление enable пинами
void hv_en_control(bool en_RV, bool en_SCV, bool en_CAN)
{

View File

@ -141,9 +141,10 @@ int main(void)
// Таймер Звука
HAL_TIM_PWM_Start(&htim9, TIM_CHANNEL_2);
// fixme добавить ещё таймеров
//таймер RV стимул
HAL_TIM_OnePulse_Start(&htim11, TIM_CHANNEL_1);
//таймер RA стимул
HAL_TIM_OnePulse_Start(&htim14, TIM_CHANNEL_1);
//Включили питание АЦП
HAL_GPIO_WritePin(INA_PWR_GPIO_Port, INA_PWR_Pin, SET);
HAL_GPIO_WritePin(DOP_PWR_GPIO_Port, DOP_PWR_Pin, SET);

View File

@ -503,9 +503,9 @@ void parse_command(uint8_t* buf, icd_str * icd_str)
case 0x27:
{
uint8_t idata = unpackUint8(&buf[2]);
if (check_uint8(idata, 5, 50))
if (check_uint8(idata, BURST_CNT_MIN, BURST_CNT_MAX))
{
icd_str->BURST_cnt = idata;
icd_str->burst_cnt = idata;
}
}
break;
@ -513,9 +513,9 @@ void parse_command(uint8_t* buf, icd_str * icd_str)
case 0x28:
{
uint8_t idata = unpackUint8(&buf[2]);
if (check_uint8(idata, 10, 80))
if (check_uint8(idata, BURST_VOLTAGE_MIN, BURST_VOLTAGE_MAX))
{
icd_str->BURST_voltage = idata;
icd_str->burst_voltage = idata;
}
}
break;
@ -523,9 +523,9 @@ void parse_command(uint8_t* buf, icd_str * icd_str)
case 0x29:
{
uint32_t idata = unpackUint32(&buf[2]);
if (check_uint16(idata, 150, 500))
if (check_uint16(idata, BURST_PERIOD_MIN, BURST_PERIOD_MAX))
{
icd_str->BURST_period = idata;
icd_str->burst_period = idata;
}
}
break;
@ -599,6 +599,16 @@ void parse_command(uint8_t* buf, icd_str * icd_str)
{
icd_str->hv_cutoff_voltage = idata;
}
}
break;
//период следования импульсов в мс 150-500мс одна единица 1мс шаг 10 мс на ползунке
case 0x37:
{
uint32_t idata = unpackUint32(&buf[2]);
if (check_uint16(idata, BURST_PERIOD_MIN, BURST_PERIOD_MAX))
{
icd_str->burst_end_period = idata;
}
}
break;
default:

View File

@ -434,22 +434,41 @@ void MX_TIM14_Init(void)
/* USER CODE END TIM14_Init 0 */
TIM_OC_InitTypeDef sConfigOC = {0};
/* USER CODE BEGIN TIM14_Init 1 */
/* USER CODE END TIM14_Init 1 */
htim14.Instance = TIM14;
htim14.Init.Prescaler = 0;
htim14.Init.Prescaler = 2399;
htim14.Init.CounterMode = TIM_COUNTERMODE_UP;
htim14.Init.Period = 65535;
htim14.Init.Period = 29;
htim14.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim14.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
if (HAL_TIM_Base_Init(&htim14) != HAL_OK)
{
Error_Handler();
}
if (HAL_TIM_PWM_Init(&htim14) != HAL_OK)
{
Error_Handler();
}
if (HAL_TIM_OnePulse_Init(&htim14, TIM_OPMODE_SINGLE) != HAL_OK)
{
Error_Handler();
}
sConfigOC.OCMode = TIM_OCMODE_PWM2;
sConfigOC.Pulse = 0;
sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
if (HAL_TIM_PWM_ConfigChannel(&htim14, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN TIM14_Init 2 */
/* USER CODE END TIM14_Init 2 */
HAL_TIM_MspPostInit(&htim14);
}
@ -694,6 +713,27 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
/* USER CODE END TIM11_MspPostInit 1 */
}
else if(timHandle->Instance==TIM14)
{
/* USER CODE BEGIN TIM14_MspPostInit 0 */
/* USER CODE END TIM14_MspPostInit 0 */
__HAL_RCC_GPIOA_CLK_ENABLE();
/**TIM14 GPIO Configuration
PA7 ------> TIM14_CH1
*/
GPIO_InitStruct.Pin = RA_LV_SHOCK_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM;
GPIO_InitStruct.Alternate = GPIO_AF9_TIM14;
HAL_GPIO_Init(RA_LV_SHOCK_GPIO_Port, &GPIO_InitStruct);
/* USER CODE BEGIN TIM14_MspPostInit 1 */
/* USER CODE END TIM14_MspPostInit 1 */
}
}

View File

@ -441,11 +441,11 @@ void ble_HEX_new(ctrl_struct *control, icd_str *icd_str, adc_struct *adc, bool s
TX_BUF[24] = ((icd_str->lv_shock_time) & 0xFF); //время импульса низковольной стимуляции 1-20(0,1-2мс) одна единица 0,1мс шаг 0.1мс
TX_BUF[25] = ((icd_str->lv_relax_time) & 0xFF); //время стабилизации после удара низковольной стимуляции 0-20(0-20мс) одна единица 1мс шаг 1мс
TX_BUF[26] = ((icd_str->lv_voltage) & 0xFF); //какое напряжение у импульсов 10-80(1,0-8,0В) одна единица 0,1В шаг 0,1В
TX_BUF[27] = ((icd_str->BURST_cnt) & 0xFF); //сколько импульсов в одной пачке 5-50 одна единица 1 импульс шаг 1 импульс
TX_BUF[28] = ((icd_str->BURST_voltage) & 0xFF); //какое напряжение у импульсов 10-80(1,0-8,0В) одна единица 0,1В шаг 0,1В
TX_BUF[27] = ((icd_str->burst_cnt) & 0xFF); //сколько импульсов в одной пачке 5-50 одна единица 1 импульс шаг 1 импульс
TX_BUF[28] = ((icd_str->burst_voltage) & 0xFF); //какое напряжение у импульсов 10-80(1,0-8,0В) одна единица 0,1В шаг 0,1В
//период следования импульсов в мс 150-500мс одна единица 1мс шаг 10 мс на ползунке
TX_BUF[29] = ((icd_str->BURST_period) >> 8) & 0xFF;
TX_BUF[30] = ((icd_str->BURST_period) & 0xFF);
TX_BUF[29] = ((icd_str->burst_period) >> 8) & 0xFF;
TX_BUF[30] = ((icd_str->burst_period) & 0xFF);
}
else if (icd_str->counter % 12 == 11)
@ -457,6 +457,9 @@ void ble_HEX_new(ctrl_struct *control, icd_str *icd_str, adc_struct *adc, bool s
TX_BUF[26] = ((icd_str->hv_switch_duration) & 0xFF);// время в десятых мс приходящееся на переключение между фазами 10-30(1-3мс) одна единица 0,1мс
TX_BUF[27] = ((icd_str->hv_switching_voltage) & 0xFF);//процент напряжения при котором происходит завешение 1 фазы при адаптивном режиме (20-80) одна единица 1%
TX_BUF[28] = ((icd_str->hv_cutoff_voltage) & 0xFF); //процент напряжения при котором происходит завешение 2 фазы при адаптивном режиме (5-50) одна единица 1%
//период следования импульсов в мс 150-500мс одна единица 1мс шаг 10 мс на ползунке
TX_BUF[29] = ((icd_str->burst_end_period) >> 8) & 0xFF;
TX_BUF[30] = ((icd_str->burst_end_period) & 0xFF);
}
TX_BUF[31] = 0x77; //конечный байт
//данные шлём не всегда.

View File

@ -1,7 +1,7 @@
../Core/Src/freertos.c:94:6:vApplicationGetIdleTaskMemory 1
../Core/Src/freertos.c:108:6:MX_FREERTOS_Init 1
../Core/Src/freertos.c:163:6:StartDefaultTask 2
../Core/Src/freertos.c:191:6:StartOprosTask 6
../Core/Src/freertos.c:229:6:StartControlTask 1
../Core/Src/freertos.c:248:6:StartLowSpeedTask 2
../Core/Src/freertos.c:276:6:StartButTask 5
../Core/Src/freertos.c:163:6:StartDefaultTask 3
../Core/Src/freertos.c:192:6:StartOprosTask 6
../Core/Src/freertos.c:230:6:StartControlTask 1
../Core/Src/freertos.c:249:6:StartLowSpeedTask 2
../Core/Src/freertos.c:277:6:StartButTask 5

View File

@ -1,7 +1,7 @@
../Core/Src/freertos.c:94:6:vApplicationGetIdleTaskMemory 24 static
../Core/Src/freertos.c:108:6:MX_FREERTOS_Init 160 static
../Core/Src/freertos.c:163:6:StartDefaultTask 16 static
../Core/Src/freertos.c:191:6:StartOprosTask 16 static
../Core/Src/freertos.c:229:6:StartControlTask 16 static
../Core/Src/freertos.c:248:6:StartLowSpeedTask 24 static
../Core/Src/freertos.c:276:6:StartButTask 16 static
../Core/Src/freertos.c:192:6:StartOprosTask 16 static
../Core/Src/freertos.c:230:6:StartControlTask 16 static
../Core/Src/freertos.c:249:6:StartLowSpeedTask 24 static
../Core/Src/freertos.c:277:6:StartButTask 16 static

View File

@ -1,36 +1,40 @@
../Core/Src/icd.c:13:6:init_icd 1
../Core/Src/icd.c:137:7:my_abs 2
../Core/Src/icd.c:143:6:mode_start 2
../Core/Src/icd.c:155:6:get_data 2
../Core/Src/icd.c:169:6:get_data_max30003 1
../Core/Src/icd.c:180:6:check_mode_len 4
../Core/Src/icd.c:210:6:check_tres 11
../Core/Src/icd.c:260:6:search_alg 27
../Core/Src/icd.c:397:10:moving_avarage 3
../Core/Src/icd.c:416:6:basket_alg 8
../Core/Src/icd.c:456:6:terapy_start 2
../Core/Src/icd.c:467:6:hv_pwm 2
../Core/Src/icd.c:486:6:hv_sound 2
../Core/Src/icd.c:503:6:hv_charge 5
../Core/Src/icd.c:569:6:hv_shock 2
../Core/Src/icd.c:595:6:quick_analyse 4
../Core/Src/icd.c:635:6:fibr_terapy 6
../Core/Src/icd.c:707:6:terapy_algorithm 9
../Core/Src/icd.c:767:6:relay_all_control 1
../Core/Src/icd.c:774:6:relay_ra_control 2
../Core/Src/icd.c:783:6:relay_rv_control 2
../Core/Src/icd.c:791:6:relay_can_control 2
../Core/Src/icd.c:800:6:hv_ll_control 1
../Core/Src/icd.c:808:6:hv_power 2
../Core/Src/icd.c:823:6:hv_ll_rv_control 3
../Core/Src/icd.c:846:6:hv_ll_scv_control 3
../Core/Src/icd.c:869:6:hv_ll_can_control 3
../Core/Src/icd.c:893:6:hv_discharge 2
../Core/Src/icd.c:908:6:ll_bi_shock_param 2
../Core/Src/icd.c:965:6:ra_lv_control 6
../Core/Src/icd.c:1028:6:rv_lv_control 6
../Core/Src/icd.c:1091:6:hv_en_control 1
../Core/Src/icd.c:1099:6:hv_en_rv 2
../Core/Src/icd.c:1107:6:hv_en_scv 2
../Core/Src/icd.c:1115:6:hv_en_can 2
../Core/Src/icd.c:1123:6:delay_critical 1
../Core/Src/icd.c:14:6:init_icd 1
../Core/Src/icd.c:143:7:my_abs 2
../Core/Src/icd.c:149:6:mode_start 2
../Core/Src/icd.c:161:6:get_data 2
../Core/Src/icd.c:175:6:get_data_max30003 1
../Core/Src/icd.c:186:6:check_mode_len 4
../Core/Src/icd.c:216:6:check_tres 11
../Core/Src/icd.c:266:6:search_alg 27
../Core/Src/icd.c:403:10:moving_avarage 3
../Core/Src/icd.c:422:6:basket_alg 8
../Core/Src/icd.c:462:6:terapy_start 2
../Core/Src/icd.c:473:6:hv_pwm 2
../Core/Src/icd.c:492:6:hv_sound 2
../Core/Src/icd.c:509:6:hv_charge 5
../Core/Src/icd.c:576:6:hv_shock 2
../Core/Src/icd.c:602:6:quick_analyse 4
../Core/Src/icd.c:642:6:fibr_terapy 6
../Core/Src/icd.c:714:6:terapy_algorithm 9
../Core/Src/icd.c:774:6:relay_all_control 1
../Core/Src/icd.c:781:6:relay_ra_control 2
../Core/Src/icd.c:790:6:relay_rv_control 2
../Core/Src/icd.c:798:6:relay_can_control 2
../Core/Src/icd.c:807:6:hv_ll_control 1
../Core/Src/icd.c:815:6:hv_power 2
../Core/Src/icd.c:830:6:hv_ll_rv_control 3
../Core/Src/icd.c:853:6:hv_ll_scv_control 3
../Core/Src/icd.c:876:6:hv_ll_can_control 3
../Core/Src/icd.c:900:6:hv_discharge 2
../Core/Src/icd.c:916:6:first_phase 5
../Core/Src/icd.c:941:6:second_phase 5
../Core/Src/icd.c:967:6:ll_bi_shock_param 2
../Core/Src/icd.c:1021:6:ra_lv_control 6
../Core/Src/icd.c:1083:6:rv_lv_control 6
../Core/Src/icd.c:1144:6:one_stimul 3
../Core/Src/icd.c:1169:6:burst 6
../Core/Src/icd.c:1216:6:hv_en_control 1
../Core/Src/icd.c:1224:6:hv_en_rv 2
../Core/Src/icd.c:1232:6:hv_en_scv 2
../Core/Src/icd.c:1240:6:hv_en_can 2
../Core/Src/icd.c:1248:6:delay_critical 1

View File

@ -1,36 +1,40 @@
../Core/Src/icd.c:13:6:init_icd 16 static
../Core/Src/icd.c:137:7:my_abs 16 static
../Core/Src/icd.c:143:6:mode_start 16 static
../Core/Src/icd.c:155:6:get_data 32 static
../Core/Src/icd.c:169:6:get_data_max30003 32 static
../Core/Src/icd.c:180:6:check_mode_len 16 static
../Core/Src/icd.c:210:6:check_tres 16 static
../Core/Src/icd.c:260:6:search_alg 16 static
../Core/Src/icd.c:397:10:moving_avarage 24 static
../Core/Src/icd.c:416:6:basket_alg 16 static
../Core/Src/icd.c:456:6:terapy_start 16 static
../Core/Src/icd.c:467:6:hv_pwm 16 static
../Core/Src/icd.c:486:6:hv_sound 16 static
../Core/Src/icd.c:503:6:hv_charge 32 static
../Core/Src/icd.c:569:6:hv_shock 16 static
../Core/Src/icd.c:595:6:quick_analyse 16 static
../Core/Src/icd.c:635:6:fibr_terapy 16 static
../Core/Src/icd.c:707:6:terapy_algorithm 16 static
../Core/Src/icd.c:767:6:relay_all_control 16 static
../Core/Src/icd.c:774:6:relay_ra_control 16 static
../Core/Src/icd.c:783:6:relay_rv_control 16 static
../Core/Src/icd.c:791:6:relay_can_control 16 static
../Core/Src/icd.c:800:6:hv_ll_control 16 static
../Core/Src/icd.c:808:6:hv_power 16 static
../Core/Src/icd.c:823:6:hv_ll_rv_control 16 static
../Core/Src/icd.c:846:6:hv_ll_scv_control 16 static
../Core/Src/icd.c:869:6:hv_ll_can_control 16 static
../Core/Src/icd.c:893:6:hv_discharge 16 static
../Core/Src/icd.c:908:6:ll_bi_shock_param 24 static
../Core/Src/icd.c:965:6:ra_lv_control 16 static
../Core/Src/icd.c:1028:6:rv_lv_control 24 static
../Core/Src/icd.c:1091:6:hv_en_control 16 static
../Core/Src/icd.c:1099:6:hv_en_rv 16 static
../Core/Src/icd.c:1107:6:hv_en_scv 16 static
../Core/Src/icd.c:1115:6:hv_en_can 16 static
../Core/Src/icd.c:1123:6:delay_critical 24 static
../Core/Src/icd.c:14:6:init_icd 16 static
../Core/Src/icd.c:143:7:my_abs 16 static
../Core/Src/icd.c:149:6:mode_start 16 static
../Core/Src/icd.c:161:6:get_data 32 static
../Core/Src/icd.c:175:6:get_data_max30003 32 static
../Core/Src/icd.c:186:6:check_mode_len 16 static
../Core/Src/icd.c:216:6:check_tres 16 static
../Core/Src/icd.c:266:6:search_alg 16 static
../Core/Src/icd.c:403:10:moving_avarage 24 static
../Core/Src/icd.c:422:6:basket_alg 16 static
../Core/Src/icd.c:462:6:terapy_start 16 static
../Core/Src/icd.c:473:6:hv_pwm 16 static
../Core/Src/icd.c:492:6:hv_sound 16 static
../Core/Src/icd.c:509:6:hv_charge 32 static
../Core/Src/icd.c:576:6:hv_shock 16 static
../Core/Src/icd.c:602:6:quick_analyse 16 static
../Core/Src/icd.c:642:6:fibr_terapy 16 static
../Core/Src/icd.c:714:6:terapy_algorithm 16 static
../Core/Src/icd.c:774:6:relay_all_control 16 static
../Core/Src/icd.c:781:6:relay_ra_control 16 static
../Core/Src/icd.c:790:6:relay_rv_control 16 static
../Core/Src/icd.c:798:6:relay_can_control 16 static
../Core/Src/icd.c:807:6:hv_ll_control 16 static
../Core/Src/icd.c:815:6:hv_power 16 static
../Core/Src/icd.c:830:6:hv_ll_rv_control 16 static
../Core/Src/icd.c:853:6:hv_ll_scv_control 16 static
../Core/Src/icd.c:876:6:hv_ll_can_control 16 static
../Core/Src/icd.c:900:6:hv_discharge 16 static
../Core/Src/icd.c:916:6:first_phase 16 static
../Core/Src/icd.c:941:6:second_phase 16 static
../Core/Src/icd.c:967:6:ll_bi_shock_param 24 static
../Core/Src/icd.c:1021:6:ra_lv_control 24 static
../Core/Src/icd.c:1083:6:rv_lv_control 24 static
../Core/Src/icd.c:1144:6:one_stimul 24 static
../Core/Src/icd.c:1169:6:burst 40 static
../Core/Src/icd.c:1216:6:hv_en_control 16 static
../Core/Src/icd.c:1224:6:hv_en_rv 16 static
../Core/Src/icd.c:1232:6:hv_en_scv 16 static
../Core/Src/icd.c:1240:6:hv_en_can 16 static
../Core/Src/icd.c:1248:6:delay_critical 24 static

View File

@ -1,5 +1,5 @@
../Core/Src/main.c:72:5:main 1
../Core/Src/main.c:176:6:SystemClock_Config 3
../Core/Src/main.c:230:6:HAL_TIM_PeriodElapsedCallback 2
../Core/Src/main.c:247:6:Error_Handler 1
../Core/Src/main.c:266:6:assert_failed 1
../Core/Src/main.c:177:6:SystemClock_Config 3
../Core/Src/main.c:231:6:HAL_TIM_PeriodElapsedCallback 2
../Core/Src/main.c:248:6:Error_Handler 1
../Core/Src/main.c:267:6:assert_failed 1

View File

@ -1,5 +1,5 @@
../Core/Src/main.c:72:5:main 8 static
../Core/Src/main.c:176:6:SystemClock_Config 88 static
../Core/Src/main.c:230:6:HAL_TIM_PeriodElapsedCallback 16 static
../Core/Src/main.c:247:6:Error_Handler 4 static,ignoring_inline_asm
../Core/Src/main.c:266:6:assert_failed 16 static
../Core/Src/main.c:177:6:SystemClock_Config 88 static
../Core/Src/main.c:231:6:HAL_TIM_PeriodElapsedCallback 16 static
../Core/Src/main.c:248:6:Error_Handler 4 static,ignoring_inline_asm
../Core/Src/main.c:267:6:assert_failed 16 static

View File

@ -7,4 +7,4 @@
../Core/Src/parse.c:48:6:check_uint8 3
../Core/Src/parse.c:57:10:unpackUint32 1
../Core/Src/parse.c:68:6:check_uint32 3
../Core/Src/parse.c:77:6:parse_command 100
../Core/Src/parse.c:77:6:parse_command 102

View File

@ -7,4 +7,4 @@
../Core/Src/parse.c:48:6:check_uint8 16 static
../Core/Src/parse.c:57:10:unpackUint32 24 static
../Core/Src/parse.c:68:6:check_uint32 24 static
../Core/Src/parse.c:77:6:parse_command 80 static
../Core/Src/parse.c:77:6:parse_command 88 static

View File

@ -5,7 +5,7 @@
../Core/Src/tim.c:305:6:MX_TIM6_Init 3
../Core/Src/tim.c:338:6:MX_TIM9_Init 5
../Core/Src/tim.c:385:6:MX_TIM11_Init 5
../Core/Src/tim.c:430:6:MX_TIM14_Init 2
../Core/Src/tim.c:456:6:HAL_TIM_Base_MspInit 9
../Core/Src/tim.c:552:6:HAL_TIM_MspPostInit 7
../Core/Src/tim.c:700:6:HAL_TIM_Base_MspDeInit 9
../Core/Src/tim.c:430:6:MX_TIM14_Init 5
../Core/Src/tim.c:475:6:HAL_TIM_Base_MspInit 9
../Core/Src/tim.c:571:6:HAL_TIM_MspPostInit 8
../Core/Src/tim.c:740:6:HAL_TIM_Base_MspDeInit 9

View File

@ -5,7 +5,7 @@
../Core/Src/tim.c:305:6:MX_TIM6_Init 16 static
../Core/Src/tim.c:338:6:MX_TIM9_Init 56 static
../Core/Src/tim.c:385:6:MX_TIM11_Init 40 static
../Core/Src/tim.c:430:6:MX_TIM14_Init 8 static
../Core/Src/tim.c:456:6:HAL_TIM_Base_MspInit 48 static
../Core/Src/tim.c:552:6:HAL_TIM_MspPostInit 64 static
../Core/Src/tim.c:700:6:HAL_TIM_Base_MspDeInit 16 static
../Core/Src/tim.c:430:6:MX_TIM14_Init 40 static
../Core/Src/tim.c:475:6:HAL_TIM_Base_MspInit 48 static
../Core/Src/tim.c:571:6:HAL_TIM_MspPostInit 64 static
../Core/Src/tim.c:740:6:HAL_TIM_Base_MspDeInit 16 static

View File

@ -173,8 +173,9 @@ Mcu.Pin84=VP_TIM9_VS_ClockSourceINT
Mcu.Pin85=VP_TIM11_VS_ClockSourceINT
Mcu.Pin86=VP_TIM11_VS_OPM
Mcu.Pin87=VP_TIM14_VS_ClockSourceINT
Mcu.Pin88=VP_TIM14_VS_OPM
Mcu.Pin9=PC2
Mcu.PinsNb=88
Mcu.PinsNb=89
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F413VGTx
@ -249,12 +250,12 @@ PA6.GPIOParameters=GPIO_Label
PA6.GPIO_Label=LV_ADC
PA6.Locked=true
PA6.Signal=ADCx_IN6
PA7.GPIOParameters=GPIO_Speed,PinState,GPIO_Label
PA7.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label
PA7.GPIO_Label=RA_LV_SHOCK
PA7.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PA7.GPIO_PuPd=GPIO_PULLUP
PA7.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM
PA7.Locked=true
PA7.PinState=GPIO_PIN_SET
PA7.Signal=GPIO_Output
PA7.Signal=S_TIM14_CH1
PA8.GPIOParameters=GPIO_Label
PA8.GPIO_Label=LV_LV_COIL_TO_GND
PA8.Locked=true
@ -318,8 +319,10 @@ PB6.GPIOParameters=GPIO_Label
PB6.GPIO_Label=RA_PWM_1
PB6.Locked=true
PB6.Signal=S_TIM4_CH1
PB7.GPIOParameters=GPIO_Label
PB7.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label
PB7.GPIO_Label=RA_PWM_2
PB7.GPIO_PuPd=GPIO_NOPULL
PB7.GPIO_Speed=GPIO_SPEED_FREQ_LOW
PB7.Locked=true
PB7.Signal=S_TIM4_CH2
PB8.GPIOParameters=GPIO_Label
@ -625,6 +628,8 @@ SH.ADCx_IN6.0=ADC1_IN6,IN6
SH.ADCx_IN6.ConfNb=1
SH.S_TIM11_CH1.0=TIM11_CH1,PWM Generation1 CH1
SH.S_TIM11_CH1.ConfNb=1
SH.S_TIM14_CH1.0=TIM14_CH1,PWM Generation1 CH1
SH.S_TIM14_CH1.ConfNb=1
SH.S_TIM1_CH1.0=TIM1_CH1,PWM Generation1 CH1
SH.S_TIM1_CH1.ConfNb=1
SH.S_TIM1_CH2.0=TIM1_CH2,PWM Generation2 CH2
@ -673,10 +678,17 @@ TIM1.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Channe
TIM1.Period=200
TIM1.Prescaler=1
TIM11.Channel=TIM_CHANNEL_1
TIM11.IPParameters=Channel,Period,Prescaler,OCMode_PWM
TIM11.IPParameters=Channel,Period,Prescaler,OCMode_PWM,OCPolarity_1
TIM11.OCMode_PWM=TIM_OCMODE_PWM2
TIM11.OCPolarity_1=TIM_OCPOLARITY_LOW
TIM11.Period=29
TIM11.Prescaler=2399
TIM14.Channel=TIM_CHANNEL_1
TIM14.IPParameters=Channel,Prescaler,Period,OCMode_PWM,OCPolarity_1
TIM14.OCMode_PWM=TIM_OCMODE_PWM2
TIM14.OCPolarity_1=TIM_OCPOLARITY_LOW
TIM14.Period=29
TIM14.Prescaler=2399
TIM2.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
TIM2.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
TIM2.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4
@ -721,6 +733,8 @@ VP_TIM11_VS_OPM.Mode=OPM_bit
VP_TIM11_VS_OPM.Signal=TIM11_VS_OPM
VP_TIM14_VS_ClockSourceINT.Mode=Enable_Timer
VP_TIM14_VS_ClockSourceINT.Signal=TIM14_VS_ClockSourceINT
VP_TIM14_VS_OPM.Mode=OPM_bit
VP_TIM14_VS_OPM.Signal=TIM14_VS_OPM
VP_TIM1_VS_ClockSourceINT.Mode=Internal
VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT
VP_TIM2_VS_ClockSourceINT.Mode=Internal