Low and high voltage stimulation changes

This commit is contained in:
SimonovaMI 2025-08-24 18:25:34 +03:00
parent 3a15cccad2
commit 0c9935e81f
34 changed files with 25255 additions and 24213 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="406563365828733591" 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="-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">
<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="406563365828733591" 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="-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">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>

View File

@ -17,7 +17,7 @@
#define CAPACITY 0.000200
#define FORCE_DELAY 100 //Задержка МС после зарядки конденсатора в принудительном режиме
#define DANGER_HV true //чтобы риту не ёбнуло если 1 значит по реальному заряжаем
#define SAFE_VOLTAGE 100
#define RG 1000.0//сопротивление резистора в омах
@ -379,6 +379,7 @@ void ll_h_off(void);
void ll_h_1_side(half_br state);
void ll_h_2_side(half_br state);
void ll_bi_dis(void);
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);
@ -387,4 +388,6 @@ 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);
void hv_en_can(bool state);
void delay_critical(uint8_t delay);
#endif

View File

@ -44,6 +44,8 @@ extern TIM_HandleTypeDef htim6;
extern TIM_HandleTypeDef htim9;
extern TIM_HandleTypeDef htim11;
extern TIM_HandleTypeDef htim14;
/* USER CODE BEGIN Private defines */
@ -56,6 +58,7 @@ void MX_TIM3_Init(void);
void MX_TIM4_Init(void);
void MX_TIM6_Init(void);
void MX_TIM9_Init(void);
void MX_TIM11_Init(void);
void MX_TIM14_Init(void);
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);

View File

@ -264,7 +264,7 @@ void adc_read(adc_struct* adc)
adc->error = HAL_ADC_Start(&hadc1);
adc->error = HAL_ADC_PollForConversion(&hadc1, 1);
adc->bat_raw = HAL_ADC_GetValue(&hadc1);
adc->bat_volt = ((uint32_t)(adc->bat_raw) * 6600)/4095 + 40;//40 миливольт падение на идеальном диоде
adc->bat_volt = ((uint32_t)(adc->bat_raw) * 6600)/4095;
adc->bat_pers = volt_to_pers(adc->bat_volt);//40 миливольт падение на идеальном диоде

View File

@ -37,6 +37,13 @@ void lets_sleep(void)
HAL_GPIO_WritePin(POT_PWR_GPIO_Port, POT_PWR_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(BLE_PWR_GPIO_Port, BLE_PWR_Pin, SET);
// hv_pwm(false);
// hv_power(false);
// hv_ll_control(z_state, z_state, z_state);
// HAL_Delay(20);
// relay_all_control(false, false, false);
HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1);
//Сейчас второй кнопки нет!!
//HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN2);//если вторая кнопка тоже подключена PC0

View File

@ -279,7 +279,9 @@ void StartButTask(void const * argument)
/* Infinite loop */
for (;;)
{
if (HAL_GPIO_ReadPin(BUT_1_GPIO_Port, BUT_1_Pin) == GPIO_PIN_SET)
//отрабатываем кнопку только если не в режиме заряда и нет напряжения на КОНДЕНСАТОРЕ
if (HAL_GPIO_ReadPin(BUT_1_GPIO_Port, BUT_1_Pin) == GPIO_PIN_SET
&& ICD.work_set_mode == Monitor && adc_str.hv_volt < SAFE_VOLTAGE)
{
Control.btn_1_state = true;
Control.btn_1_cnt++;

View File

@ -65,7 +65,7 @@ void MX_GPIO_Init(void)
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|RV_LV_SHOCK_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, RA_LV_DIS_Pin|HV_EN_RV_Pin, GPIO_PIN_SET);
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOB, RA_LV_COIL_TO_GND_Pin|RA_LV_TIP_TO_GND_Pin|CAN_LV_TO_GND_Pin|POT_CS_1_Pin
@ -122,11 +122,9 @@ void MX_GPIO_Init(void)
HAL_GPIO_Init(RA_LV_SHOCK_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pins : PBPin PBPin PBPin PBPin
PBPin 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
|POT_PWR_Pin|HV_HS_RV_Pin|HV_EN_RV_Pin|HV_LS_RV_Pin
|RV_LV_SHOCK_Pin;
|POT_PWR_Pin|HV_HS_RV_Pin|HV_EN_RV_Pin|HV_LS_RV_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;

View File

@ -6,6 +6,7 @@
#include <math.h>
#endif
extern TIM_HandleTypeDef htim11;
icd_str ICD;
extern adc_struct adc_str;//структура ацп
@ -50,7 +51,7 @@ void init_icd(icd_str * icd_str)
icd_str->triangle_coef = TRIANGLE_COEF;
icd_str->lv_polarity = lv_bipolar;//полярность низковольтной стимуляции
icd_str->lv_mode = lv_mode_VVI;//режим низковольтной стимуляции
icd_str->lv_mode = lv_mode_none;//режим низковольтной стимуляции
icd_str->lv_shock_time = 13;//время импульса низковольной стимуляции 1-20(0,1-2мс) одна единица 0,1мс шаг 0.1мс
icd_str->lv_relax_time = 14;//время стабилизации после удара низковольной стимуляции 0-20(0-20мс) одна единица 1мс шаг 1мс
@ -111,6 +112,16 @@ 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_mode = hv_mode_fixed; //тип способа задания длительности импульса
//время константы времени стимуляции
icd_str->hv_phase_1_duration = 100; // время в десятых мс приходящееся на 1 фазу 30-120(3-12мс) одна единица 0,1мс
icd_str->hv_phase_2_duration = 70; // время в десятых мс приходящееся на 2 фазу 20-100(2-10мс) одна единица 0,1мс
icd_str->hv_switch_duration = 30; // время в десятых мс приходящееся на переключение между фазами 10-30(1-3мс) одна единица 0,1мс
//процентные параметры стимуляции
icd_str->hv_switching_voltage = 40;//процент напряжения при котором происходит завешение 1 фазы при адаптивном режиме (20-80) одна единица 1%
icd_str->hv_cutoff_voltage = 20;//процент напряжения при котором происходит завешение 2 фазы при адаптивном режиме (5-50) одна единица 1%
icd_str->min_energy = MIN_ENERGY;
icd_str->max_energy = MAX_ENERGY;
@ -507,7 +518,7 @@ void hv_charge(icd_str *icd_str)
}
else
{
if (DANGER_HV)
if (DANGER_HV && icd_str->HV_on)
{
hv_pwm(true); //включили шим для заряда конденсатора
}
@ -566,7 +577,7 @@ void hv_shock(icd_str * icd_str)
//подали питание на плату только если не в режиме мониторинга
if(icd_str->work_set_mode != Monitor)//fixme
{
ll_bi_dis();
ll_bi_shock_param(icd_str);
}
else
{
@ -745,6 +756,11 @@ void terapy_algorithm(icd_str * icd_str)
}
break;
}
if(icd_str->work_set_mode == Monitor && adc_str.hv_volt < SAFE_VOLTAGE/2)
{
hv_discharge(false);//выключили разряд
}
}
//единое управление реле по идее вызываем один раз когда собираемся ударить не важно тестово или по настоящему
@ -888,38 +904,64 @@ void hv_discharge(bool state)
}
}
////разряд биполярный
void ll_bi_dis(void)
////разряд биполярный с выбором параметров
void ll_bi_shock_param(icd_str * icd_str)
{
//сперва тупо парсим параметры из основной структуры
//хватаем параметры в локальные переменные чтобы ничего не поменялось
hv_polarity polarity = icd_str->hv_polarity;
hv_mode mode = icd_str->hv_mode;
// время в десятых мс приходящееся на 1 фазу 30-120(3-12мс) одна единица 0,1мс
uint8_t hv_phase_1_duration = icd_str->hv_phase_1_duration;
// время в десятых мс приходящееся на 2 фазу 20-100(2-10мс) одна единица 0,1мс
uint8_t hv_phase_2_duration = icd_str->hv_phase_2_duration;
// время в десятых мс приходящееся на переключение между фазами 10-30(1-3мс) одна единица 0,1мс
uint8_t hv_switch_duration = icd_str->hv_switch_duration;
//процент напряжения при котором происходит завешение 1 фазы при адаптивном режиме (20-80) одна единица 1%
uint8_t hv_switching_voltage = icd_str->hv_switching_voltage;
//процент напряжения при котором происходит завешение 2 фазы при адаптивном режиме (5-50) одна единица 1%
uint8_t hv_cutoff_voltage = icd_str->hv_cutoff_voltage;
bool HV_on = icd_str->HV_on;
//защитили низковольтную часть
relay_all_control(true,true,true);
hv_en_control(false, false, false);
//чтобы не пробило перевели в разамкнутое состояние все полумосты
hv_ll_control(z_state, z_state, z_state);
osDelay(15);
hv_power(true);
osDelay(5);
hv_en_control(true, true, false);
osDelay(2);
//Сторона 1 +
hv_ll_control(low, high, z_state);
osDelay(7);
//чтобы не пробило перевели в разамкнутое состояние все полумосты
hv_ll_control(z_state, z_state, z_state);
osDelay(2);
//Сторона 2 +
hv_ll_control(high, low, z_state);
osDelay(4);
hv_en_control(false, false, false);
hv_ll_control(z_state, z_state, z_state);
osDelay(20);
if(HV_on)
{
//чтобы не пробило перевели в разамкнутое состояние все полумосты
hv_ll_control(z_state, z_state, z_state);
osDelay(2);//временно
hv_en_control(true,true,false);
osDelay(2);//временно
//первая волна
hv_ll_control(low, high, z_state);
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);
delay_critical(hv_phase_2_duration);
// osDelay(2);
//отключение
hv_ll_control(z_state, z_state, z_state);
hv_en_control(false,false,false);
osDelay(2);//временно
osDelay(20);
}
relay_all_control(false,false,false);
osDelay(2);//
}
void ra_lv_control(icd_str * icd_str,lv_sub_mode mode)
{
switch (mode)
@ -941,9 +983,9 @@ void ra_lv_control(icd_str * icd_str,lv_sub_mode mode)
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);
TIM4->CCR1 = 200;
TIM4->CCR2 = 200;
TIM4->CCR3 = 200;
TIM4->CCR1 = 500;
TIM4->CCR2 = 500;
TIM4->CCR3 = 500;
osDelay(2);
TIM4->CCR1 = 0;
TIM4->CCR2 = 0;
@ -993,7 +1035,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_RESET);
HAL_GPIO_WritePin(RV_LV_COIL_TO_GND_GPIO_Port, RV_LV_COIL_TO_GND_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(RV_LV_DIS_GPIO_Port, RV_LV_DIS_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(RV_LV_SHOCK_GPIO_Port, RV_LV_SHOCK_Pin, GPIO_PIN_SET);
}
break;
//Заряд без всякого вмешательства tip и coil идёт заряд
@ -1002,7 +1043,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_RESET);
HAL_GPIO_WritePin(RV_LV_COIL_TO_GND_GPIO_Port, RV_LV_COIL_TO_GND_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(RV_LV_DIS_GPIO_Port, RV_LV_DIS_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(RV_LV_SHOCK_GPIO_Port, RV_LV_SHOCK_Pin, GPIO_PIN_SET);
osDelay(2);
TIM2->CCR2 = 500;
TIM2->CCR3 = 500;
@ -1020,14 +1060,11 @@ 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_RESET);
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);
HAL_GPIO_WritePin(RV_LV_SHOCK_GPIO_Port, RV_LV_SHOCK_Pin, GPIO_PIN_RESET);
uint32_t shock_time = (uint32_t) (icd_str->lv_shock_time);
taskENTER_CRITICAL();
delay_us((shock_time*125)/10);
taskEXIT_CRITICAL();
// osDelay(1);
HAL_GPIO_WritePin(RV_LV_SHOCK_GPIO_Port, RV_LV_SHOCK_Pin, GPIO_PIN_SET);
__HAL_TIM_SET_COUNTER(&htim11, 0);
__HAL_TIM_SET_COMPARE(&htim11, TIM_CHANNEL_1, 30-shock_time); //установка задержки перед импульсом
TIM11->CR1 |= TIM_CR1_CEN;
}
break;
//Релаксация tip и coil притянуты к земле
@ -1036,7 +1073,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);
HAL_GPIO_WritePin(RV_LV_SHOCK_GPIO_Port, RV_LV_SHOCK_Pin, GPIO_PIN_SET);
osDelay(20);
}
break;
@ -1046,7 +1082,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_RESET);
HAL_GPIO_WritePin(RV_LV_COIL_TO_GND_GPIO_Port, RV_LV_COIL_TO_GND_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(RV_LV_DIS_GPIO_Port, RV_LV_DIS_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(RV_LV_SHOCK_GPIO_Port, RV_LV_SHOCK_Pin, GPIO_PIN_SET);
}
break;
}
@ -1084,3 +1119,11 @@ void hv_en_can(bool state)
else
HAL_GPIO_WritePin(HV_EN_CAN_GPIO_Port, HV_EN_CAN_Pin, GPIO_PIN_SET);
}
void delay_critical(uint8_t delay)
{
uint32_t shock_time = (uint32_t) (delay);
taskENTER_CRITICAL();
delay_us((shock_time*125)/10);
taskEXIT_CRITICAL();
}

View File

@ -106,6 +106,7 @@ int main(void)
MX_TIM9_Init();
MX_TIM14_Init();
MX_TIM6_Init();
MX_TIM11_Init();
/* USER CODE BEGIN 2 */
hv_pwm(false);
hv_power(false);
@ -141,6 +142,7 @@ int main(void)
// Таймер Звука
HAL_TIM_PWM_Start(&htim9, TIM_CHANNEL_2);
// fixme добавить ещё таймеров
HAL_TIM_OnePulse_Start(&htim11, TIM_CHANNEL_1);
//Включили питание АЦП
HAL_GPIO_WritePin(INA_PWR_GPIO_Port, INA_PWR_Pin, SET);

View File

@ -233,11 +233,24 @@ void parse_command(uint8_t* buf, icd_str * icd_str)
}
}
break;
//bool LV_on //bool HV_on
//bool LV_on
case 0x0E:
{
// не стала делать, не используется же пока
uint8_t idata = unpackUint8(&buf[2]);
if (check_uint8(idata, 0, 1))
{
icd_str->LV_on = (bool) idata;
}
}
break;
//bool HV_on
case 0x0F:
{
uint8_t idata = unpackUint8(&buf[2]);
if (check_uint8(idata, 0, 1))
{
icd_str->HV_on = (bool) idata;
}
}
break;

View File

@ -269,5 +269,11 @@ void DMA2_Stream7_IRQHandler(void)
}
/* USER CODE BEGIN 1 */
//void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
//{
// if(htim->Instance == TIM11)
// {
// HAL_TIM_PWM_Stop_IT(&htim11, TIM_CHANNEL_1);
// }
//}
/* USER CODE END 1 */

View File

@ -30,6 +30,7 @@ TIM_HandleTypeDef htim3;
TIM_HandleTypeDef htim4;
TIM_HandleTypeDef htim6;
TIM_HandleTypeDef htim9;
TIM_HandleTypeDef htim11;
TIM_HandleTypeDef htim14;
/* TIM1 init function */
@ -379,6 +380,51 @@ void MX_TIM9_Init(void)
/* USER CODE END TIM9_Init 2 */
HAL_TIM_MspPostInit(&htim9);
}
/* TIM11 init function */
void MX_TIM11_Init(void)
{
/* USER CODE BEGIN TIM11_Init 0 */
/* USER CODE END TIM11_Init 0 */
TIM_OC_InitTypeDef sConfigOC = {0};
/* USER CODE BEGIN TIM11_Init 1 */
/* USER CODE END TIM11_Init 1 */
htim11.Instance = TIM11;
htim11.Init.Prescaler = 2399;
htim11.Init.CounterMode = TIM_COUNTERMODE_UP;
htim11.Init.Period = 29;
htim11.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim11.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
if (HAL_TIM_Base_Init(&htim11) != HAL_OK)
{
Error_Handler();
}
if (HAL_TIM_PWM_Init(&htim11) != HAL_OK)
{
Error_Handler();
}
if (HAL_TIM_OnePulse_Init(&htim11, 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(&htim11, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN TIM11_Init 2 */
/* USER CODE END TIM11_Init 2 */
HAL_TIM_MspPostInit(&htim11);
}
/* TIM14 init function */
void MX_TIM14_Init(void)
@ -480,6 +526,17 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
/* USER CODE END TIM9_MspInit 1 */
}
else if(tim_baseHandle->Instance==TIM11)
{
/* USER CODE BEGIN TIM11_MspInit 0 */
/* USER CODE END TIM11_MspInit 0 */
/* TIM11 clock enable */
__HAL_RCC_TIM11_CLK_ENABLE();
/* USER CODE BEGIN TIM11_MspInit 1 */
/* USER CODE END TIM11_MspInit 1 */
}
else if(tim_baseHandle->Instance==TIM14)
{
/* USER CODE BEGIN TIM14_MspInit 0 */
@ -616,6 +673,27 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
/* USER CODE END TIM9_MspPostInit 1 */
}
else if(timHandle->Instance==TIM11)
{
/* USER CODE BEGIN TIM11_MspPostInit 0 */
/* USER CODE END TIM11_MspPostInit 0 */
__HAL_RCC_GPIOB_CLK_ENABLE();
/**TIM11 GPIO Configuration
PB9 ------> TIM11_CH1
*/
GPIO_InitStruct.Pin = RV_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_AF3_TIM11;
HAL_GPIO_Init(RV_LV_SHOCK_GPIO_Port, &GPIO_InitStruct);
/* USER CODE BEGIN TIM11_MspPostInit 1 */
/* USER CODE END TIM11_MspPostInit 1 */
}
}
@ -691,6 +769,17 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
/* USER CODE END TIM9_MspDeInit 1 */
}
else if(tim_baseHandle->Instance==TIM11)
{
/* USER CODE BEGIN TIM11_MspDeInit 0 */
/* USER CODE END TIM11_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_TIM11_CLK_DISABLE();
/* USER CODE BEGIN TIM11_MspDeInit 1 */
/* USER CODE END TIM11_MspDeInit 1 */
}
else if(tim_baseHandle->Instance==TIM14)
{
/* USER CODE BEGIN TIM14_MspDeInit 0 */

View File

@ -4,4 +4,4 @@
../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 3
../Core/Src/freertos.c:276:6:StartButTask 5

View File

@ -1,35 +1,36 @@
../Core/Src/icd.c:12:6:init_icd 1
../Core/Src/icd.c:126:7:my_abs 2
../Core/Src/icd.c:132:6:mode_start 2
../Core/Src/icd.c:144:6:get_data 2
../Core/Src/icd.c:158:6:get_data_max30003 1
../Core/Src/icd.c:169:6:check_mode_len 4
../Core/Src/icd.c:199:6:check_tres 11
../Core/Src/icd.c:249:6:search_alg 27
../Core/Src/icd.c:386:10:moving_avarage 3
../Core/Src/icd.c:405:6:basket_alg 8
../Core/Src/icd.c:445:6:terapy_start 2
../Core/Src/icd.c:456:6:hv_pwm 2
../Core/Src/icd.c:475:6:hv_sound 2
../Core/Src/icd.c:492:6:hv_charge 4
../Core/Src/icd.c:558:6:hv_shock 2
../Core/Src/icd.c:584:6:quick_analyse 4
../Core/Src/icd.c:624:6:fibr_terapy 6
../Core/Src/icd.c:696:6:terapy_algorithm 7
../Core/Src/icd.c:751:6:relay_all_control 1
../Core/Src/icd.c:758:6:relay_ra_control 2
../Core/Src/icd.c:767:6:relay_rv_control 2
../Core/Src/icd.c:775:6:relay_can_control 2
../Core/Src/icd.c:784:6:hv_ll_control 1
../Core/Src/icd.c:792:6:hv_power 2
../Core/Src/icd.c:807:6:hv_ll_rv_control 3
../Core/Src/icd.c:830:6:hv_ll_scv_control 3
../Core/Src/icd.c:853:6:hv_ll_can_control 3
../Core/Src/icd.c:877:6:hv_discharge 2
../Core/Src/icd.c:894:6:ll_bi_dis 1
../Core/Src/icd.c:923:6:ra_lv_control 6
../Core/Src/icd.c:986:6:rv_lv_control 6
../Core/Src/icd.c:1056:6:hv_en_control 1
../Core/Src/icd.c:1064:6:hv_en_rv 2
../Core/Src/icd.c:1072:6:hv_en_scv 2
../Core/Src/icd.c:1080:6:hv_en_can 2
../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

View File

@ -1,35 +1,36 @@
../Core/Src/icd.c:12:6:init_icd 16 static
../Core/Src/icd.c:126:7:my_abs 16 static
../Core/Src/icd.c:132:6:mode_start 16 static
../Core/Src/icd.c:144:6:get_data 32 static
../Core/Src/icd.c:158:6:get_data_max30003 32 static
../Core/Src/icd.c:169:6:check_mode_len 16 static
../Core/Src/icd.c:199:6:check_tres 16 static
../Core/Src/icd.c:249:6:search_alg 16 static
../Core/Src/icd.c:386:10:moving_avarage 24 static
../Core/Src/icd.c:405:6:basket_alg 16 static
../Core/Src/icd.c:445:6:terapy_start 16 static
../Core/Src/icd.c:456:6:hv_pwm 16 static
../Core/Src/icd.c:475:6:hv_sound 16 static
../Core/Src/icd.c:492:6:hv_charge 32 static
../Core/Src/icd.c:558:6:hv_shock 16 static
../Core/Src/icd.c:584:6:quick_analyse 16 static
../Core/Src/icd.c:624:6:fibr_terapy 16 static
../Core/Src/icd.c:696:6:terapy_algorithm 16 static
../Core/Src/icd.c:751:6:relay_all_control 16 static
../Core/Src/icd.c:758:6:relay_ra_control 16 static
../Core/Src/icd.c:767:6:relay_rv_control 16 static
../Core/Src/icd.c:775:6:relay_can_control 16 static
../Core/Src/icd.c:784:6:hv_ll_control 16 static
../Core/Src/icd.c:792:6:hv_power 16 static
../Core/Src/icd.c:807:6:hv_ll_rv_control 16 static
../Core/Src/icd.c:830:6:hv_ll_scv_control 16 static
../Core/Src/icd.c:853:6:hv_ll_can_control 16 static
../Core/Src/icd.c:877:6:hv_discharge 16 static
../Core/Src/icd.c:894:6:ll_bi_dis 8 static
../Core/Src/icd.c:923:6:ra_lv_control 16 static
../Core/Src/icd.c:986:6:rv_lv_control 24 static
../Core/Src/icd.c:1056:6:hv_en_control 16 static
../Core/Src/icd.c:1064:6:hv_en_rv 16 static
../Core/Src/icd.c:1072:6:hv_en_scv 16 static
../Core/Src/icd.c:1080:6:hv_en_can 16 static
../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

View File

@ -1,5 +1,5 @@
../Core/Src/main.c:72:5:main 1
../Core/Src/main.c:174:6:SystemClock_Config 3
../Core/Src/main.c:228:6:HAL_TIM_PeriodElapsedCallback 2
../Core/Src/main.c:245:6:Error_Handler 1
../Core/Src/main.c:264:6:assert_failed 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

View File

@ -1,5 +1,5 @@
../Core/Src/main.c:72:5:main 8 static
../Core/Src/main.c:174:6:SystemClock_Config 88 static
../Core/Src/main.c:228:6:HAL_TIM_PeriodElapsedCallback 16 static
../Core/Src/main.c:245:6:Error_Handler 4 static,ignoring_inline_asm
../Core/Src/main.c:264:6:assert_failed 16 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

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 96
../Core/Src/parse.c:77:6:parse_command 100

View File

@ -1,10 +1,11 @@
../Core/Src/tim.c:36:6:MX_TIM1_Init 10
../Core/Src/tim.c:118:6:MX_TIM2_Init 8
../Core/Src/tim.c:180:6:MX_TIM3_Init 8
../Core/Src/tim.c:242:6:MX_TIM4_Init 8
../Core/Src/tim.c:304:6:MX_TIM6_Init 3
../Core/Src/tim.c:337:6:MX_TIM9_Init 5
../Core/Src/tim.c:384:6:MX_TIM14_Init 2
../Core/Src/tim.c:410:6:HAL_TIM_Base_MspInit 8
../Core/Src/tim.c:495:6:HAL_TIM_MspPostInit 6
../Core/Src/tim.c:622:6:HAL_TIM_Base_MspDeInit 8
../Core/Src/tim.c:37:6:MX_TIM1_Init 10
../Core/Src/tim.c:119:6:MX_TIM2_Init 8
../Core/Src/tim.c:181:6:MX_TIM3_Init 8
../Core/Src/tim.c:243:6:MX_TIM4_Init 8
../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

View File

@ -1,10 +1,11 @@
../Core/Src/tim.c:36:6:MX_TIM1_Init 96 static
../Core/Src/tim.c:118:6:MX_TIM2_Init 64 static
../Core/Src/tim.c:180:6:MX_TIM3_Init 64 static
../Core/Src/tim.c:242:6:MX_TIM4_Init 64 static
../Core/Src/tim.c:304:6:MX_TIM6_Init 16 static
../Core/Src/tim.c:337:6:MX_TIM9_Init 56 static
../Core/Src/tim.c:384:6:MX_TIM14_Init 8 static
../Core/Src/tim.c:410:6:HAL_TIM_Base_MspInit 48 static
../Core/Src/tim.c:495:6:HAL_TIM_MspPostInit 56 static
../Core/Src/tim.c:622:6:HAL_TIM_Base_MspDeInit 16 static
../Core/Src/tim.c:37:6:MX_TIM1_Init 96 static
../Core/Src/tim.c:119:6:MX_TIM2_Init 64 static
../Core/Src/tim.c:181:6:MX_TIM3_Init 64 static
../Core/Src/tim.c:243:6:MX_TIM4_Init 64 static
../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

View File

@ -72,8 +72,9 @@ Mcu.IP10=TIM3
Mcu.IP11=TIM4
Mcu.IP12=TIM6
Mcu.IP13=TIM9
Mcu.IP14=TIM14
Mcu.IP15=USART1
Mcu.IP14=TIM11
Mcu.IP15=TIM14
Mcu.IP16=USART1
Mcu.IP2=FREERTOS
Mcu.IP3=NVIC
Mcu.IP4=RCC
@ -82,7 +83,7 @@ Mcu.IP6=SPI3
Mcu.IP7=SYS
Mcu.IP8=TIM1
Mcu.IP9=TIM2
Mcu.IPNb=16
Mcu.IPNb=17
Mcu.Name=STM32F413V(G-H)Tx
Mcu.Package=LQFP100
Mcu.Pin0=PE2
@ -169,9 +170,11 @@ Mcu.Pin81=VP_TIM3_VS_ClockSourceINT
Mcu.Pin82=VP_TIM4_VS_ClockSourceINT
Mcu.Pin83=VP_TIM6_VS_ClockSourceINT
Mcu.Pin84=VP_TIM9_VS_ClockSourceINT
Mcu.Pin85=VP_TIM14_VS_ClockSourceINT
Mcu.Pin85=VP_TIM11_VS_ClockSourceINT
Mcu.Pin86=VP_TIM11_VS_OPM
Mcu.Pin87=VP_TIM14_VS_ClockSourceINT
Mcu.Pin9=PC2
Mcu.PinsNb=86
Mcu.PinsNb=88
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F413VGTx
@ -323,12 +326,12 @@ PB8.GPIOParameters=GPIO_Label
PB8.GPIO_Label=RA_PWM_3
PB8.Locked=true
PB8.Signal=S_TIM4_CH3
PB9.GPIOParameters=GPIO_Speed,PinState,GPIO_Label
PB9.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label
PB9.GPIO_Label=RV_LV_SHOCK
PB9.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PB9.GPIO_PuPd=GPIO_PULLUP
PB9.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM
PB9.Locked=true
PB9.PinState=GPIO_PIN_SET
PB9.Signal=GPIO_Output
PB9.Signal=S_TIM11_CH1
PC1.GPIOParameters=GPIO_Label
PC1.GPIO_Label=RV_COMP_ADC
PC1.Locked=true
@ -561,7 +564,7 @@ ProjectManager.ToolChainLocation=
ProjectManager.UAScriptAfterPath=
ProjectManager.UAScriptBeforePath=
ProjectManager.UnderRoot=true
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_SPI2_Init-SPI2-false-HAL-true,5-MX_SPI3_Init-SPI3-false-HAL-true,6-MX_TIM3_Init-TIM3-false-HAL-true,7-MX_TIM4_Init-TIM4-false-HAL-true,8-MX_USART1_UART_Init-USART1-false-HAL-true,9-MX_ADC1_Init-ADC1-false-HAL-true,10-MX_TIM1_Init-TIM1-false-HAL-true,11-MX_TIM2_Init-TIM2-false-HAL-true,12-MX_TIM9_Init-TIM9-false-HAL-true,13-MX_TIM14_Init-TIM14-false-HAL-true,14-MX_TIM6_Init-TIM6-false-HAL-true
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_SPI2_Init-SPI2-false-HAL-true,5-MX_SPI3_Init-SPI3-false-HAL-true,6-MX_TIM3_Init-TIM3-false-HAL-true,7-MX_TIM4_Init-TIM4-false-HAL-true,8-MX_USART1_UART_Init-USART1-false-HAL-true,9-MX_ADC1_Init-ADC1-false-HAL-true,10-MX_TIM1_Init-TIM1-false-HAL-true,11-MX_TIM2_Init-TIM2-false-HAL-true,12-MX_TIM9_Init-TIM9-false-HAL-true,13-MX_TIM14_Init-TIM14-false-HAL-true,14-MX_TIM6_Init-TIM6-false-HAL-true,15-MX_TIM11_Init-TIM11-false-HAL-true
RCC.AHBFreq_Value=24000000
RCC.APB1Freq_Value=24000000
RCC.APB1TimFreq_Value=24000000
@ -620,6 +623,8 @@ SH.ADCx_IN5.0=ADC1_IN5,IN5
SH.ADCx_IN5.ConfNb=1
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_TIM1_CH1.0=TIM1_CH1,PWM Generation1 CH1
SH.S_TIM1_CH1.ConfNb=1
SH.S_TIM1_CH2.0=TIM1_CH2,PWM Generation2 CH2
@ -667,6 +672,11 @@ TIM1.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4
TIM1.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Channel-PWM Generation3 CH3,Channel-PWM Generation4 CH4,Period,Prescaler
TIM1.Period=200
TIM1.Prescaler=1
TIM11.Channel=TIM_CHANNEL_1
TIM11.IPParameters=Channel,Period,Prescaler,OCMode_PWM
TIM11.OCMode_PWM=TIM_OCMODE_PWM2
TIM11.Period=29
TIM11.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
@ -705,6 +715,10 @@ VP_FREERTOS_VS_CMSIS_V1.Mode=CMSIS_V1
VP_FREERTOS_VS_CMSIS_V1.Signal=FREERTOS_VS_CMSIS_V1
VP_SYS_VS_tim12.Mode=TIM12
VP_SYS_VS_tim12.Signal=SYS_VS_tim12
VP_TIM11_VS_ClockSourceINT.Mode=Enable_Timer
VP_TIM11_VS_ClockSourceINT.Signal=TIM11_VS_ClockSourceINT
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_TIM1_VS_ClockSourceINT.Mode=Internal