#3 Сделаны улучшенные функции управления ключами, добавлены настройки по таймингам в tester_config.h

По переключениям:
-Теперь для двух ключей одного питания должен быть один порт

- Добавлена функция реконнекта питания TESTER_Reconnect_Power(), чтобы быстрее переключать с положительного на отрицательный. А не через отдельные функции TESTER_Disconnect_Power(), TESTER_Connect_Power()

- Сделан дефайн USE_HAL_GPIO_FUNCTIONS для испольщования HAL GPIO функций. Его можно убрать и пины будуте переключаться напрямую через BSRR.

- Также сделан дефайн ALL_SW_USE_SAME_PORT, чтобы переключать все 4 пина в BSRR в одну комманду

Это поможет в случае функции реконнекта, где HAL функции сначала отключают питание, а потом подключат другое. Из-за этого появляются задержки в 580 мкс (SW Timings with HAL GPIO write.sal),

Если убрать USE_HAL_GPIO_FUNCTIONS, то сократиться время переключения между питаниями до 160мкс (SW Timings without HAL GPIO write and different ports.sal)

А если еще выставить ALL_SW_USE_SAME_PORT, то через BSRR будет выставлятся все 4 пина, и задержек нет (SW Timings without HAL GPIO write.sal). Ну почти, иногда проскакивают 2 мкс (SW Timings without HAL GPIO write 2.sal)
This commit is contained in:
Razvalyaev 2024-12-19 13:57:51 +03:00
parent 7f6932631e
commit 13825e068c
10 changed files with 164 additions and 41 deletions

View File

@ -48,10 +48,14 @@ void MX_GPIO_Init(void)
__HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
/*Configure GPIO pin Output Level */ /*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_10|GPIO_PIN_11, GPIO_PIN_RESET);
/*Configure GPIO pin : PC13 */ /*Configure GPIO pin : PC13 */
GPIO_InitStruct.Pin = GPIO_PIN_13; GPIO_InitStruct.Pin = GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
@ -59,6 +63,13 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
/*Configure GPIO pins : PB0 PB1 PB10 PB11 */
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_10|GPIO_PIN_11;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
} }
/* USER CODE BEGIN 2 */ /* USER CODE BEGIN 2 */

View File

@ -11,8 +11,50 @@
#ifndef _TESTER_CONFIG_H_ #ifndef _TESTER_CONFIG_H_
#define _TESTER_CONFIG_H_ #define _TESTER_CONFIG_H_
#define TESTER_PULES_EXPETCED_WIDTH 4 ///< Предполагаемая длительность пика в отчетах ацп #define TESTER_PULES_EXPETCED_WIDTH 4 ///< Предполагаемая длительность пика в отчетах ацп
/**
* @addtogroup TESTER_SW_TIMINGS_CONFIG Configs for switching timings
* @ingroup TESTER_CONFIGS
* @brief Конфигурации таймингов для ключей питания
@{
*/
/**
* @brief Задержка (миллисекундная) для положительного напряжения ПО УМОЛЧАНИЮ
* @details Пока только миллисекунды, т.к. меньше я пока не реализовал, да и как понимаю не требуется
*/
#define DEF_MS_TIME_FOR_POSITIVE 1000
/**
* @brief Задержка перед началом тестирования ПО УМОЛЧАНИЮ
* @details Задержка миллисекундная или тики for() @ref TIME_BEFORE_TEST_MS_DELAY
*/
#define DEF_TIME_BEFORE_TEST 500
#define DEF_TIME_BEFORE_TEST_MS_DELAY 1 ///< включение миллисекундной задержки для @ref TIME_BEFORE_TEST по умолчанию
/**
* @brief Задержка между включением АЦП и предполагаемым скачком напряжения ПО УМОЛЧАНИЮ
* @details Задержка нужна, чтобы точно поймать его в буфере АЦП.
*
* Задержка миллисекундная или тики for() @ref TIME_BEFORE_TEST_MS_DELAY
* @note Но если миллисекундная, то скорее всего скачок не попадет в буфер АЦП.
* Поэтому желательно только тики for() (@ref TIME_BEFORE_PEAK_MS_DELAY = 0)
*/
#define DEF_TIME_BEFORE_PEAK 5
#define DEF_TIME_BEFORE_PEAK_MS_DELAY 0 ///< включение миллисекундной задержки для @ref TIME_BEFORE_PEAK(0 - задержка for(), 1 - миллисекундная)
/**
* @brief Задержка перед окончанием тестирования (отключение питания) ПО УМОЛЧАНИЮ
* @details Задержка миллисекундная или тики for() @ref TIME_BEFORE_DISCONNECT_MS_DELAY
*/
#define DEF_TIME_BEFORE_DISCONNECT 50
#define DEF_TIME_BEFORE_DISCONNECT_MS_DELAY 1 ///< включение миллисекундной задержки для @ref TIME_BEFORE_DISCONNECT (0 - задержка for(), 1 - миллисекундная)
/** TESTER_SW_TIMINGS_CONFIG
* @}
*/
/** /**
* @addtogroup TESTER_POWER_SW_CONFIG Configs for switches for power * @addtogroup TESTER_POWER_SW_CONFIG Configs for switches for power
@ -20,23 +62,23 @@
* @brief Конфигурации для ключей питания * @brief Конфигурации для ключей питания
@{ @{
*/ */
//#define USE_HAL_GPIO_FUNCTIONS ///< Использовать для переключения пинов HAL функции
//#define ALL_SW_USE_SAME_PORT ///< Дефайн указывающий что все пины будут иметь один порт (для ускорения переключения)
/* Состояния ключей для подключения и откючения питания */ /* Состояния ключей для подключения и откючения питания */
#define POWER_CONNECT 1 ///< Питание подключено в данном состоянии пина #define POWER_CONNECT 1 ///< Питание подключено в данном состоянии пина
#define POWER_DISCONNECT 0 ///< Питание отключено в данном состоянии пина #define POWER_DISCONNECT 0 ///< Питание отключено в данном состоянии пина
/* Ключи для подключения положительного питания к диоду */ /* Ключи для подключения положительного питания к диоду */
#define SWITCH_DC_POSITIVE_1_Port GPIOC ///< Порт пина первого ключа для положительного питания #define SWITCH_DC_POSITIVE_Port GPIOB ///< Порт пина первого ключа для земли положительного источника питания
#define SWITCH_DC_POSITIVE_1_Pin GPIO_PIN_13 ///< Пин первого ключа для положительного питания #define SWITCH_DC_POSITIVE_GND_Pin GPIO_PIN_10 ///< Пин первого ключа для земли положительного источника питания
#define SWITCH_DC_POSITIVE_2_Port GPIOA ///< Порт пина второго ключа для положительного питания #define SWITCH_DC_POSITIVE_VDD_Pin GPIO_PIN_11 ///< Пин второго ключа для напряжения положительного источника ппитания
#define SWITCH_DC_POSITIVE_2_Pin GPIO_PIN_11 ///< Пин второго ключа для положительного питания
/* Ключи для подключения отрицательного питания к диоду */ /* Ключи для подключения отрицательного питания к диоду */
#define SWITCH_DC_NEGATIVE_1_Port GPIOC ///< Порт пина первого ключа для отрицательного питания #define SWITCH_DC_NEGATIVE_Port GPIOB ///< Порт пина первого ключа для земли отрицательного источника ппитания
#define SWITCH_DC_NEGATIVE_1_Pin GPIO_PIN_13 ///< Пин первого ключа для отрицательного питания #define SWITCH_DC_NEGATIVE_GND_Pin GPIO_PIN_0 ///< Пин первого ключа для земли отрицательного источника ппитания
#define SWITCH_DC_NEGATIVE_2_Port GPIOA ///< Порт пина второго ключа для отрицательного питания #define SWITCH_DC_NEGATIVE_VDD_Pin GPIO_PIN_1 ///< Пин первого ключа для напряжения отрицательного источника ппитания
#define SWITCH_DC_NEGATIVE_2_Pin GPIO_PIN_11 ///< Пин первого ключа для отрицательного питания
/** TESTER_POWER_SW_CONFIG /** TESTER_POWER_SW_CONFIG
* @} * @}

View File

@ -7,20 +7,35 @@ TESTER_TestHandleTypeDef hTestDiode;
*/ */
void TESTER_HandleInit(TESTER_TestHandleTypeDef *htest) void TESTER_HandleInit(TESTER_TestHandleTypeDef *htest)
{ {
/* Настройка структуры АЦП */
htest->adc = &tester_adc; htest->adc = &tester_adc;
TESTER_ADC_StructInit(htest->adc); TESTER_ADC_StructInit(htest->adc);
htest->DCNegSw.SW1_Port = SWITCH_DC_NEGATIVE_1_Port; /* Настройка пинов для подключения отрицательного источника */
htest->DCNegSw.SW2_Port = SWITCH_DC_NEGATIVE_2_Port; htest->DCNegSw.SW_Port = SWITCH_DC_NEGATIVE_Port;
htest->DCNegSw.SW1_Pin = SWITCH_DC_NEGATIVE_1_Pin; htest->DCNegSw.SwGND_Pin = SWITCH_DC_NEGATIVE_GND_Pin;
htest->DCNegSw.SW2_Pin = SWITCH_DC_NEGATIVE_2_Pin; htest->DCNegSw.SwVDD_Pin = SWITCH_DC_NEGATIVE_VDD_Pin;
/* Настройка пинов для подключения положительного источника */
htest->DCPosSw.SW_Port = SWITCH_DC_POSITIVE_Port;
htest->DCPosSw.SwGND_Pin = SWITCH_DC_POSITIVE_GND_Pin;
htest->DCPosSw.SwVDD_Pin = SWITCH_DC_POSITIVE_VDD_Pin;
htest->DCPosSw.SW1_Port = SWITCH_DC_POSITIVE_1_Port; /* Настройка таймингов по умолчанию для тестирования */
htest->DCPosSw.SW2_Port = SWITCH_DC_POSITIVE_2_Port; htest->SwTimings.msticks_for_positive_dc = DEF_MS_TIME_FOR_POSITIVE;
htest->DCPosSw.SW1_Pin = SWITCH_DC_POSITIVE_1_Pin;
htest->DCPosSw.SW2_Pin = SWITCH_DC_POSITIVE_2_Pin; htest->SwTimings.ticks_before_disconnect.ticks = DEF_TIME_BEFORE_DISCONNECT;
htest->SwTimings.ticks_before_disconnect.msdelay = DEF_TIME_BEFORE_DISCONNECT_MS_DELAY;
htest->SwTimings.ticks_before_go_to_peak.ticks = DEF_TIME_BEFORE_PEAK;
htest->SwTimings.ticks_before_go_to_peak.msdelay = DEF_TIME_BEFORE_PEAK_MS_DELAY;
htest->SwTimings.ticks_before_test.ticks = DEF_TIME_BEFORE_TEST;
htest->SwTimings.ticks_before_test.msdelay = DEF_TIME_BEFORE_TEST_MS_DELAY;
htest->continuous_buff_size = 20;
} }
@ -109,8 +124,7 @@ void TESTER_TestDiode_PosNegPower(TESTER_TestHandleTypeDef *htest)
TESTER_Delay(&htest->SwTimings.ticks_before_go_to_peak); TESTER_Delay(&htest->SwTimings.ticks_before_go_to_peak);
/* Отключение питания от диода */ /* Отключение питания от диода */
TESTER_Disconnect_Power(&htest->DCPosSw); TESTER_Reconnect_Power(&htest->DCPosSw, &htest->DCNegSw);
TESTER_Connect_Power(&htest->DCNegSw);
/* Подключение отрицательного питания на определенное время */ /* Подключение отрицательного питания на определенное время */
TESTER_Delay(&htest->SwTimings.ticks_before_disconnect); TESTER_Delay(&htest->SwTimings.ticks_before_disconnect);
@ -128,18 +142,62 @@ void TESTER_TestDiode_PosNegPower(TESTER_TestHandleTypeDef *htest)
*/ */
void TESTER_Connect_Power(TESTER_PowerSwitchTypeDef *DCSw) void TESTER_Connect_Power(TESTER_PowerSwitchTypeDef *DCSw)
{ {
HAL_GPIO_WritePin(DCSw->SW1_Port, DCSw->SW1_Pin, POWER_CONNECT); #ifdef USE_HAL_GPIO_FUNCTIONS // in tester_config.h
HAL_GPIO_WritePin(DCSw->SW2_Port, DCSw->SW2_Pin, POWER_CONNECT); HAL_GPIO_WritePin(DCSw->SW_Port, DCSw->SwGND_Pin | DCSw->SwVDD_Pin, POWER_CONNECT);
#else // USE_HAL_GPIO_FUNCTIONS
#if (POWER_CONNECT == 1)
DCSw->SW_Port->BSRR = DCSw->SwGND_Pin | DCSw->SwVDD_Pin;
#else //POWER_CONNECT == 1
DCSw->SW_Port->BSRR = (DCSw->SwGND_Pin | DCSw->SwVDD_Pin) << 16;
#endif //POWER_CONNECT == 1
#endif //USE_HAL_GPIO_FUNCTIONS
} }
/** /**
* @brief Отключить питание с помощью ключей (пинов) в TESTER_PowerSwitchTypeDef * @brief Отключить питание с помощью ключей (пинов) в TESTER_PowerSwitchTypeDef
*/ */
void TESTER_Disconnect_Power(TESTER_PowerSwitchTypeDef *DCSw) void TESTER_Disconnect_Power(TESTER_PowerSwitchTypeDef *DCSw)
{ {
HAL_GPIO_WritePin(DCSw->SW1_Port, DCSw->SW1_Pin, POWER_DISCONNECT); #ifdef USE_HAL_GPIO_FUNCTIONS
HAL_GPIO_WritePin(DCSw->SW2_Port, DCSw->SW2_Pin, POWER_DISCONNECT); HAL_GPIO_WritePin(DCSw->SW_Port, DCSw->SwGND_Pin | DCSw->SwVDD_Pin, POWER_DISCONNECT);
#else // USE_HAL_GPIO_FUNCTIONS
#if (POWER_DISCONNECT == 0)
DCSw->SW_Port->BSRR = (DCSw->SwGND_Pin | DCSw->SwVDD_Pin) << 16;
#else //POWER_CONNECT == 1
DCSw->SW_Port->BSRR = DCSw->SwGND_Pin | DCSw->SwVDD_Pin;
#endif //POWER_CONNECT == 1
#endif //USE_HAL_GPIO_FUNCTIONS
} }
/**
* @brief Переключить питание с помощью ключей (пинов) в TESTER_PowerSwitchTypeDef
*/
void TESTER_Reconnect_Power(TESTER_PowerSwitchTypeDef *DCPosSw, TESTER_PowerSwitchTypeDef *DCNegSw)
{
#ifdef USE_HAL_GPIO_FUNCTIONS
HAL_GPIO_WritePin(DCPosSw->SW_Port, DCPosSw->SwGND_Pin | DCPosSw->SwVDD_Pin, POWER_DISCONNECT);
HAL_GPIO_WritePin(DCNegSw->SW_Port, DCNegSw->SwGND_Pin | DCNegSw->SwVDD_Pin, POWER_CONNECT);
#else // USE_HAL_GPIO_FUNCTIONS
#ifdef ALL_SW_USE_SAME_PORT
#if (POWER_CONNECT == 1) && (POWER_DISCONNECT == 0)
DCPosSw->SW_Port->BSRR = ((DCNegSw->SwGND_Pin | DCNegSw->SwVDD_Pin) | ((DCPosSw->SwGND_Pin | DCPosSw->SwVDD_Pin) << 16));
#elif (POWER_CONNECT == 1) && (POWER_DISCONNECT == 0)
DCPosSw->SW_Port->BSRR = (((DCNegSw->SwGND_Pin | DCNegSw->SwVDD_Pin) << 16)| (DCPosSw->SwGND_Pin | DCPosSw->SwVDD_Pin));
#endif //POWER_CONNECT && POWER_DISCONNECT
#else //ALL_SW_USE_SAME_PORT
#if (POWER_DISCONNECT == 0)
DCPosSw->SW_Port->BSRR = (DCPosSw->SwGND_Pin | DCPosSw->SwVDD_Pin) << 16;
#else //POWER_DISCONNECT == 1
DCPosSw->SW_Port->BSRR = DCPosSw->SwGND_Pin | DCPosSw->SwVDD_Pin;
#endif //POWER_DISCONNECT
#if (POWER_CONNECT == 1)
DCNegSw->SW_Port->BSRR = DCNegSw->SwGND_Pin | DCNegSw->SwVDD_Pin;
#else //POWER_CONNECT == 0
DCNegSw->SW_Port->BSRR = (DCNegSw->SwGND_Pin | DCNegSw->SwVDD_Pin) << 16;
#endif //POWER_CONNECT
#endif //ALL_SW_USE_SAME_PORT
#endif //USE_HAL_GPIO_FUNCTIONS
}
/** /**
* @brief Формирование задержки (в тиках или миллисекундная) * @brief Формирование задержки (в тиках или миллисекундная)
*/ */

View File

@ -19,11 +19,9 @@
*/ */
typedef struct typedef struct
{ {
GPIO_TypeDef *SW1_Port; ///< Порт пина первого ключа для питания GPIO_TypeDef *SW_Port; ///< Порт первого ключа для питания
uint32_t SW1_Pin; ///< Пин первого ключа для питания uint32_t SwGND_Pin; ///< Пин первого ключа для питания
uint32_t SwVDD_Pin; ///< Пин второго ключа для питания
GPIO_TypeDef *SW2_Port; ///< Порт пина второго ключа для питания
uint32_t SW2_Pin; ///< Пин второго ключа для питания
}TESTER_PowerSwitchTypeDef; }TESTER_PowerSwitchTypeDef;
@ -43,8 +41,8 @@ typedef struct
{ {
uint32_t msticks_for_positive_dc; ///< миллисекундная задержка для положительного напряжения @ref TESTER_TestDiode_PositivePower uint32_t msticks_for_positive_dc; ///< миллисекундная задержка для положительного напряжения @ref TESTER_TestDiode_PositivePower
TESTER_TicksDelayTypeDef ticks_before_test; ///< задержка перед началом тестирования (мс или тики for()) TESTER_TicksDelayTypeDef ticks_before_test; ///< задержка перед началом тестирования (мс или тики for())
TESTER_TicksDelayTypeDef ticks_before_disconnect; ///< задержка перед выключением питания (мс или тики for())
TESTER_TicksDelayTypeDef ticks_before_go_to_peak; ///< задержка между включением АЦП и предполагаемым скачком напряжения, чтобы точно поймать его в буфере АЦП (мс или тики for()) TESTER_TicksDelayTypeDef ticks_before_go_to_peak; ///< задержка между включением АЦП и предполагаемым скачком напряжения, чтобы точно поймать его в буфере АЦП (мс или тики for())
TESTER_TicksDelayTypeDef ticks_before_disconnect; ///< задержка перед выключением питания (мс или тики for())
}TESTER_SwitchTimingsTypeDef; }TESTER_SwitchTimingsTypeDef;
/** /**
@ -81,6 +79,8 @@ void TESTER_TestDiode_PosNegPower(TESTER_TestHandleTypeDef *htest);
void TESTER_Connect_Power(TESTER_PowerSwitchTypeDef *DCSw); void TESTER_Connect_Power(TESTER_PowerSwitchTypeDef *DCSw);
/* Отключить питание с помощью ключей (пинов) в TESTER_PowerSwitchTypeDef */ /* Отключить питание с помощью ключей (пинов) в TESTER_PowerSwitchTypeDef */
void TESTER_Disconnect_Power(TESTER_PowerSwitchTypeDef *DCSw); void TESTER_Disconnect_Power(TESTER_PowerSwitchTypeDef *DCSw);
/* Переключить питание с помощью ключей (пинов) в TESTER_PowerSwitchTypeDef */
void TESTER_Reconnect_Power(TESTER_PowerSwitchTypeDef *DCPosSw, TESTER_PowerSwitchTypeDef *DCNegSw);
/* Формирование задержки перед подключением питания (в тиках или миллисекундная) */ /* Формирование задержки перед подключением питания (в тиках или миллисекундная) */
void TESTER_Delay(TESTER_TicksDelayTypeDef *tickdelay); void TESTER_Delay(TESTER_TicksDelayTypeDef *tickdelay);
#endif //_TESTER_FUNC_H_ #endif //_TESTER_FUNC_H_

View File

@ -10,9 +10,9 @@ TESTER_ProjectTypeDef TESTER;
void TESTER_Init(TESTER_ProjectTypeDef *tester) void TESTER_Init(TESTER_ProjectTypeDef *tester)
{ {
tester->delay = 250; tester->delay = 250;
tester->delay_en = 1; tester->delay_en = 0;
tester->func.disable_reset_call = 1; tester->func.disable_reset_call = 0;
tester->htest = &hTestDiode; tester->htest = &hTestDiode;
TESTER_HandleInit(tester->htest); TESTER_HandleInit(tester->htest);
} }

View File

@ -39,16 +39,20 @@ Mcu.Name=STM32F103C(4-6)Tx
Mcu.Package=LQFP48 Mcu.Package=LQFP48
Mcu.Pin0=PC13-TAMPER-RTC Mcu.Pin0=PC13-TAMPER-RTC
Mcu.Pin1=PD0-OSC_IN Mcu.Pin1=PD0-OSC_IN
Mcu.Pin10=VP_TIM3_VS_ClockSourceINT Mcu.Pin10=PA13
Mcu.Pin11=PA14
Mcu.Pin12=VP_SYS_VS_Systick
Mcu.Pin13=VP_TIM2_VS_ClockSourceINT
Mcu.Pin14=VP_TIM3_VS_ClockSourceINT
Mcu.Pin2=PD1-OSC_OUT Mcu.Pin2=PD1-OSC_OUT
Mcu.Pin3=PA0-WKUP Mcu.Pin3=PA0-WKUP
Mcu.Pin4=PA9 Mcu.Pin4=PB0
Mcu.Pin5=PA10 Mcu.Pin5=PB1
Mcu.Pin6=PA13 Mcu.Pin6=PB10
Mcu.Pin7=PA14 Mcu.Pin7=PB11
Mcu.Pin8=VP_SYS_VS_Systick Mcu.Pin8=PA9
Mcu.Pin9=VP_TIM2_VS_ClockSourceINT Mcu.Pin9=PA10
Mcu.PinsNb=11 Mcu.PinsNb=15
Mcu.ThirdPartyNb=0 Mcu.ThirdPartyNb=0
Mcu.UserConstants= Mcu.UserConstants=
Mcu.UserName=STM32F103C6Tx Mcu.UserName=STM32F103C6Tx
@ -78,6 +82,14 @@ PA14.Mode=Serial_Wire
PA14.Signal=SYS_JTCK-SWCLK PA14.Signal=SYS_JTCK-SWCLK
PA9.Mode=Asynchronous PA9.Mode=Asynchronous
PA9.Signal=USART1_TX PA9.Signal=USART1_TX
PB0.Locked=true
PB0.Signal=GPIO_Output
PB1.Locked=true
PB1.Signal=GPIO_Output
PB10.Locked=true
PB10.Signal=GPIO_Output
PB11.Locked=true
PB11.Signal=GPIO_Output
PC13-TAMPER-RTC.Locked=true PC13-TAMPER-RTC.Locked=true
PC13-TAMPER-RTC.Signal=GPIO_Output PC13-TAMPER-RTC.Signal=GPIO_Output
PD0-OSC_IN.Mode=HSE-External-Oscillator PD0-OSC_IN.Mode=HSE-External-Oscillator

Binary file not shown.

Binary file not shown.

Binary file not shown.