#3 Добавлен простейший интерфейс: одна кнопка и один диод. Пока интерфейс управляется через прерывание в SysTick
При нажатии на кнопку включается тест с переходом от положительного напряжения к отрицатльному. Индикация светодиода: - постоянно горит - ожидание команды - моргание (250 мс) - прямое подключение диода - моргание (25 мс) - обратое подключение диода
This commit is contained in:
@@ -63,6 +63,12 @@ void MX_GPIO_Init(void)
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
|
||||
|
||||
/*Configure GPIO pin : PC14 */
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_14;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
|
||||
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;
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
#include "stm32f1xx_it.h"
|
||||
/* Private includes ----------------------------------------------------------*/
|
||||
/* USER CODE BEGIN Includes */
|
||||
#include "tester_adc_func.h"
|
||||
#include "tester_main.h"
|
||||
/* USER CODE END Includes */
|
||||
|
||||
/* Private typedef -----------------------------------------------------------*/
|
||||
@@ -188,7 +188,7 @@ void PendSV_Handler(void)
|
||||
void SysTick_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN SysTick_IRQn 0 */
|
||||
|
||||
TESTER_InterfaceHandle(&TESTER);
|
||||
/* USER CODE END SysTick_IRQn 0 */
|
||||
HAL_IncTick();
|
||||
/* USER CODE BEGIN SysTick_IRQn 1 */
|
||||
@@ -237,7 +237,7 @@ void TIM2_IRQHandler(void)
|
||||
void TIM3_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN TIM3_IRQn 0 */
|
||||
HAL_NVIC_ClearPendingIRQ(TIM3_IRQn);
|
||||
|
||||
/* USER CODE END TIM3_IRQn 0 */
|
||||
HAL_TIM_IRQHandler(&htim3);
|
||||
/* USER CODE BEGIN TIM3_IRQn 1 */
|
||||
|
||||
@@ -14,6 +14,44 @@
|
||||
|
||||
#define TESTER_PULES_EXPETCED_WIDTH 4 ///< Предполагаемая длительность пика в отчетах ацп
|
||||
|
||||
/**
|
||||
* @addtogroup TESTER_INTERFACE_CONFIG Configs for interface of tester
|
||||
* @ingroup TESTER_CONFIGS
|
||||
* @brief Конфигурации для интерфейса тестера
|
||||
@{
|
||||
*/
|
||||
|
||||
/* Дефайны для светодиодов */
|
||||
/* Состояния включенного и выключенного светодиода */
|
||||
#define LED_ON 0 ///< Состояние включенного светодиода
|
||||
#define LED_OFF 1 ///< Состояние выключенного светодиода
|
||||
|
||||
#define LED1_Port GPIOC ///< Порт светодиода (при перенастройке надо также перенастроить через cube)
|
||||
#define LED1_Pin GPIO_PIN_13 ///< Пин светодиода (при перенастройке надо также перенастроить через cube)
|
||||
|
||||
/* Периоды моргания светодиода */
|
||||
#define LED_POSITIVE_DIODE_PERIOD 250 ///< Моргание для индикации подключенного положительного напряжения
|
||||
#define LED_NEGATIVE_DIODE_PERIOD 25 ///< Моргание для индикации подключенного отрицательного напряжения
|
||||
#define LED_BLINK_AS_ON 5 ///< Моргание незаметное для глаза (светодиод просто включен)
|
||||
|
||||
|
||||
/* Дефайны для кнопки */
|
||||
/* Состояния нажатой и отжатой кнопки */
|
||||
#define SW_ON 1 ///< Состояние нажатой кнопки
|
||||
#define SW_OFF 0 ///< Состояние отжатой кнопки
|
||||
|
||||
/* Пин кнопки при перенастройке надо также перенастроить через cube) */
|
||||
#define SWITCH_START_Port GPIOC ///< Порт кнокпи старта (при перенастройке надо также перенастроить через cube)
|
||||
#define SWITCH_START_Pin GPIO_PIN_14 ///< Пин кнокпи старта (при перенастройке надо также перенастроить через cube)
|
||||
|
||||
/* Задержка для компенсации дребезга (в миллисекундах) */
|
||||
#define SWITCH_ANTI_DREBEZG_DELAY 50 ///< Время которое выжидается для окончания дребезга
|
||||
|
||||
|
||||
|
||||
/** TESTER_INTERFACE_CONFIG
|
||||
* @}
|
||||
*/
|
||||
/**
|
||||
* @addtogroup TESTER_SW_TIMINGS_CONFIG Configs for switching timings
|
||||
* @ingroup TESTER_CONFIGS
|
||||
@@ -70,12 +108,14 @@
|
||||
#define POWER_DISCONNECT 0 ///< Питание отключено в данном состоянии пина
|
||||
|
||||
/* Ключи для подключения положительного питания к диоду */
|
||||
/* (при перенастройке надо также перенастроить через cube) */
|
||||
#define SWITCH_DC_POSITIVE_Port GPIOB ///< Порт пина первого ключа для земли положительного источника питания
|
||||
#define SWITCH_DC_POSITIVE_GND_Pin GPIO_PIN_10 ///< Пин первого ключа для земли положительного источника питания
|
||||
#define SWITCH_DC_POSITIVE_VDD_Pin GPIO_PIN_11 ///< Пин второго ключа для напряжения положительного источника ппитания
|
||||
|
||||
|
||||
/* Ключи для подключения отрицательного питания к диоду */
|
||||
/* (при перенастройке надо также перенастроить через cube) */
|
||||
#define SWITCH_DC_NEGATIVE_Port GPIOB ///< Порт пина первого ключа для земли отрицательного источника ппитания
|
||||
#define SWITCH_DC_NEGATIVE_GND_Pin GPIO_PIN_0 ///< Пин первого ключа для земли отрицательного источника ппитания
|
||||
#define SWITCH_DC_NEGATIVE_VDD_Pin GPIO_PIN_1 ///< Пин первого ключа для напряжения отрицательного источника ппитания
|
||||
|
||||
@@ -5,10 +5,11 @@ TESTER_TestHandleTypeDef hTestDiode;
|
||||
/**s
|
||||
* @brief Инициализация хендла тестера диодов
|
||||
*/
|
||||
void TESTER_HandleInit(TESTER_TestHandleTypeDef *htest)
|
||||
void TESTER_HandleInit(TESTER_TestHandleTypeDef *htest, TESTER_LEDsTypeDef *leds)
|
||||
{
|
||||
/* Настройка структуры АЦП */
|
||||
htest->adc = &tester_adc;
|
||||
htest->leds = leds;
|
||||
TESTER_ADC_StructInit(htest->adc);
|
||||
|
||||
/* Настройка пинов для подключения отрицательного источника */
|
||||
@@ -46,6 +47,7 @@ void TESTER_TestDiode_PositivePower(TESTER_TestHandleTypeDef *htest)
|
||||
{
|
||||
/* Задержка, перед началом работы */
|
||||
TESTER_Delay(&htest->SwTimings.ticks_before_test);
|
||||
TESTER_LED_TestingDiode_Positive(&htest->leds->LED1);
|
||||
|
||||
/* Включение континиус АЦП */
|
||||
HAL_ADC_Start(htest->adc->hadc);
|
||||
@@ -72,6 +74,7 @@ void TESTER_TestDiode_PositivePower(TESTER_TestHandleTypeDef *htest)
|
||||
/* Выключение континиус АЦП */
|
||||
HAL_ADC_Stop(htest->adc->hadc);
|
||||
|
||||
TESTER_LED_TestingDiode_End(&htest->leds->LED1);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -81,6 +84,7 @@ void TESTER_TestDiode_NegativePower(TESTER_TestHandleTypeDef *htest)
|
||||
{
|
||||
/* Задержка, перед началом работы */
|
||||
TESTER_Delay(&htest->SwTimings.ticks_before_test);
|
||||
TESTER_LED_TestingDiode_Negative(&htest->leds->LED1);
|
||||
|
||||
/* Включение АЦП */
|
||||
ADC_DMA_StartRead(htest->adc);
|
||||
@@ -100,6 +104,7 @@ void TESTER_TestDiode_NegativePower(TESTER_TestHandleTypeDef *htest)
|
||||
/* Обработка DMA */
|
||||
ADC_DMA_ReadForPeak(htest->adc, ADC_READ_TIMEOUT_MS);
|
||||
|
||||
TESTER_LED_TestingDiode_End(&htest->leds->LED1);
|
||||
}
|
||||
|
||||
|
||||
@@ -110,12 +115,14 @@ void TESTER_TestDiode_PosNegPower(TESTER_TestHandleTypeDef *htest)
|
||||
{
|
||||
/* Задержка, перед началом работы */
|
||||
TESTER_Delay(&htest->SwTimings.ticks_before_test);
|
||||
TESTER_LED_TestingDiode_Positive(&htest->leds->LED1);
|
||||
|
||||
/* Подкючение питания к диоду */
|
||||
TESTER_Connect_Power(&htest->DCPosSw);
|
||||
|
||||
/* Подкючение положительного питания к диоду */
|
||||
msDelay(htest->SwTimings.msticks_for_positive_dc);
|
||||
TESTER_LED_TestingDiode_Negative(&htest->leds->LED1);
|
||||
|
||||
/* Включение АЦП */
|
||||
ADC_DMA_StartRead(htest->adc);
|
||||
@@ -135,6 +142,7 @@ void TESTER_TestDiode_PosNegPower(TESTER_TestHandleTypeDef *htest)
|
||||
/* Обработка DMA */
|
||||
ADC_DMA_ReadForPeak(htest->adc, ADC_READ_TIMEOUT_MS);
|
||||
|
||||
TESTER_LED_TestingDiode_End(&htest->leds->LED1);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#define _TESTER_FUNC_H_
|
||||
|
||||
#include "tester_adc_func.h"
|
||||
#include "tester_interface_func.h"
|
||||
|
||||
|
||||
/**
|
||||
@@ -60,13 +61,15 @@ typedef struct
|
||||
uint32_t continuous_buff_size;
|
||||
|
||||
float DiodeVolt;
|
||||
|
||||
TESTER_LEDsTypeDef *leds;
|
||||
}TESTER_TestHandleTypeDef;
|
||||
extern TESTER_TestHandleTypeDef hTestDiode;
|
||||
|
||||
|
||||
|
||||
/* Инициализация хендла тестера диодов */
|
||||
void TESTER_HandleInit(TESTER_TestHandleTypeDef *htest);
|
||||
void TESTER_HandleInit(TESTER_TestHandleTypeDef *htest, TESTER_LEDsTypeDef *leds);
|
||||
|
||||
/* Тест диодов: подключение прямого напряжения */
|
||||
void TESTER_TestDiode_PositivePower(TESTER_TestHandleTypeDef *htest);
|
||||
|
||||
95
diode_tester/Core/Tester_main/tester_interface_func.c
Normal file
95
diode_tester/Core/Tester_main/tester_interface_func.c
Normal file
@@ -0,0 +1,95 @@
|
||||
#include "tester_interface_func.h"
|
||||
|
||||
|
||||
/**
|
||||
* @brief Инициализация структур интерфейса
|
||||
*/
|
||||
void TESTER_InterfaceInit(TESTER_SwitchStartTypeDef *swstart, TESTER_LEDsTypeDef *leds)
|
||||
{
|
||||
swstart->Sw_Port = SWITCH_START_Port;
|
||||
swstart->Sw_Pin = SWITCH_START_Pin;
|
||||
swstart->Sw_FilterDelay = SWITCH_ANTI_DREBEZG_DELAY;
|
||||
|
||||
|
||||
leds->LED1.LED_Port = LED1_Port;
|
||||
leds->LED1.LED_Pin = LED1_Pin;
|
||||
leds->LED1.period = LED_BLINK_AS_ON;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Включить индикацию прямого подключения диода
|
||||
*/
|
||||
void TESTER_LED_TestingDiode_Positive(TESTER_LEDTypeDef *led)
|
||||
{
|
||||
led->period = LED_POSITIVE_DIODE_PERIOD;
|
||||
}
|
||||
/**
|
||||
* @brief Включить индикацию обратного подключения диода
|
||||
*/
|
||||
void TESTER_LED_TestingDiode_Negative(TESTER_LEDTypeDef *led)
|
||||
{
|
||||
led->period = LED_NEGATIVE_DIODE_PERIOD;
|
||||
}
|
||||
/**
|
||||
* @brief Выключить индикацию активного теста диодов
|
||||
*/
|
||||
void TESTER_LED_TestingDiode_End(TESTER_LEDTypeDef *led)
|
||||
{
|
||||
led->period = LED_BLINK_AS_ON;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Считать состоянии кнопки запуска
|
||||
*/
|
||||
uint8_t TESTER_ReadSwichStart(TESTER_SwitchStartTypeDef *swstart)
|
||||
{
|
||||
|
||||
if(HAL_GPIO_ReadPin(swstart->Sw_Port, swstart->Sw_Pin) == SW_ON)
|
||||
{
|
||||
if(swstart->tickprev == 0)
|
||||
swstart->tickprev = HAL_GetTick();
|
||||
|
||||
if((HAL_GetTick() - swstart->tickprev) > swstart->Sw_FilterDelay)
|
||||
{
|
||||
if(HAL_GPIO_ReadPin(swstart->Sw_Port, swstart->Sw_Pin) == SW_ON)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
swstart->tickprev = 0;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
/**
|
||||
* @brief Включить светодиод
|
||||
*/
|
||||
void TESTER_LED_On(TESTER_LEDTypeDef *led)
|
||||
{
|
||||
HAL_GPIO_WritePin(led->LED_Port, led->LED_Pin, LED_ON);
|
||||
}
|
||||
/**
|
||||
* @brief Выключить светодиод
|
||||
*/
|
||||
void TESTER_LED_Off(TESTER_LEDTypeDef *led)
|
||||
{
|
||||
HAL_GPIO_WritePin(led->LED_Port, led->LED_Pin, LED_OFF);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Моргание светодиодом
|
||||
*/
|
||||
void TESTER_LED_Blink(TESTER_LEDTypeDef *led)
|
||||
{
|
||||
uint32_t tickcurrent = HAL_GetTick();
|
||||
if((tickcurrent - led->tickprev) > led->period)
|
||||
{
|
||||
HAL_GPIO_TogglePin(led->LED_Port, led->LED_Pin);
|
||||
led->tickprev = tickcurrent;
|
||||
}
|
||||
}
|
||||
65
diode_tester/Core/Tester_main/tester_interface_func.h
Normal file
65
diode_tester/Core/Tester_main/tester_interface_func.h
Normal file
@@ -0,0 +1,65 @@
|
||||
/**
|
||||
**************************************************************************
|
||||
* @file tester_func.h
|
||||
* @brief Заголовочный файл для функций МЗКТ.
|
||||
**************************************************************************
|
||||
@details
|
||||
|
||||
*************************************************************************/
|
||||
|
||||
|
||||
#ifndef _TESTER_INTERFACE_FUNC_H_
|
||||
#define _TESTER_INTERFACE_FUNC_H_
|
||||
|
||||
#include "mylibs_include.h"
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
GPIO_TypeDef *LED_Port;
|
||||
uint32_t LED_Pin;
|
||||
|
||||
uint32_t tickprev;
|
||||
uint32_t period;
|
||||
}TESTER_LEDTypeDef;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
TESTER_LEDTypeDef LED1;
|
||||
}TESTER_LEDsTypeDef;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
GPIO_TypeDef *Sw_Port;
|
||||
uint32_t Sw_Pin;
|
||||
|
||||
uint32_t Sw_PrevState;
|
||||
uint32_t Sw_FilterDelay;
|
||||
uint32_t tickprev;
|
||||
}TESTER_SwitchStartTypeDef;
|
||||
|
||||
|
||||
/* Инициализация структур интерфейса */
|
||||
void TESTER_InterfaceInit(TESTER_SwitchStartTypeDef *swstart, TESTER_LEDsTypeDef *leds);
|
||||
|
||||
|
||||
|
||||
/* Включить индикацию прямого подключения диода */
|
||||
void TESTER_LED_TestingDiode_Positive(TESTER_LEDTypeDef *led);
|
||||
/* Включить индикацию обратного подключения диода */
|
||||
void TESTER_LED_TestingDiode_Negative(TESTER_LEDTypeDef *led);
|
||||
/* Выключить индикацию активного теста диодов */
|
||||
void TESTER_LED_TestingDiode_End(TESTER_LEDTypeDef *led);
|
||||
|
||||
/* Считать состоянии кнопки запуска */
|
||||
uint8_t TESTER_ReadSwichStart(TESTER_SwitchStartTypeDef *swstart);
|
||||
/* Включить светодиод */
|
||||
void TESTER_LED_On(TESTER_LEDTypeDef *led);
|
||||
/* Выключить светодиод */
|
||||
void TESTER_LED_Off(TESTER_LEDTypeDef *led);
|
||||
/* Моргание светодиодом */
|
||||
void TESTER_LED_Blink(TESTER_LEDTypeDef *led);
|
||||
#endif //_TESTER_INTERFACE_FUNC_H_
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "tester_main.h"
|
||||
|
||||
|
||||
TESTER_ProjectTypeDef TESTER;
|
||||
TESTER_ProjectTypeDef TESTER = {0};
|
||||
|
||||
|
||||
/**s
|
||||
@@ -9,12 +9,17 @@ TESTER_ProjectTypeDef TESTER;
|
||||
*/
|
||||
void TESTER_Init(TESTER_ProjectTypeDef *tester)
|
||||
{
|
||||
TESTER_InterfaceInit(&tester->SwStart, &tester->leds);
|
||||
tester->leds.LED1.period = 100;
|
||||
|
||||
tester->delay = 250;
|
||||
tester->delay_en = 0;
|
||||
|
||||
tester->func.disable_reset_call = 0;
|
||||
tester->htest = &hTestDiode;
|
||||
TESTER_HandleInit(tester->htest);
|
||||
TESTER_HandleInit(tester->htest, &tester->leds);
|
||||
tester->f.flag_init_done = 1;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +28,7 @@ void TESTER_Init(TESTER_ProjectTypeDef *tester)
|
||||
*/
|
||||
void TESTER_pre_while(TESTER_ProjectTypeDef *tester)
|
||||
{
|
||||
tester->leds.LED1.period = LED_BLINK_AS_ON;
|
||||
}
|
||||
|
||||
|
||||
@@ -38,30 +44,52 @@ void TESTER_main_while(TESTER_ProjectTypeDef *tester)
|
||||
/* ТЕСТ В ОБРАТНОМ ВКЛЮЧЕНИИ */
|
||||
if(tester->func.test_diode_neg)
|
||||
{
|
||||
TESTER_TestDiode_NegativePower(tester->htest);
|
||||
|
||||
if(tester->func.disable_reset_call == 0)
|
||||
tester->func.test_diode_neg = 0;
|
||||
|
||||
TESTER_TestDiode_NegativePower(tester->htest);
|
||||
}
|
||||
|
||||
/* ТЕСТ В ПРЯМОМ ВКЛЮЧЕНИИ */
|
||||
if(tester->func.test_diode_pos)
|
||||
{
|
||||
TESTER_TestDiode_PositivePower(tester->htest);
|
||||
|
||||
if(tester->func.disable_reset_call == 0)
|
||||
tester->func.test_diode_pos = 0;
|
||||
|
||||
TESTER_TestDiode_PositivePower(tester->htest);
|
||||
}
|
||||
/* ТЕСТ ПЕРЕХОДА ИЗ ПРЯМОГО В ОБРАТНОЕ ВКЛЮЧЕНИЯ*/
|
||||
if(tester->func.test_diode_posneg)
|
||||
{
|
||||
TESTER_TestDiode_PosNegPower(tester->htest);
|
||||
|
||||
if(tester->func.disable_reset_call == 0)
|
||||
tester->func.test_diode_posneg = 0;
|
||||
|
||||
TESTER_TestDiode_PosNegPower(tester->htest);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Функция работы интерфейса
|
||||
*/
|
||||
void TESTER_InterfaceHandle(TESTER_ProjectTypeDef *tester)
|
||||
{
|
||||
if(tester->f.flag_init_done == 0)
|
||||
return;
|
||||
|
||||
|
||||
|
||||
if(TESTER_ReadSwichStart(&tester->SwStart))
|
||||
{
|
||||
tester->func.test_diode_posneg = 1;
|
||||
}
|
||||
|
||||
TESTER_LED_Blink(&tester->leds.LED1);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Задеркжка главного цикла
|
||||
*/
|
||||
|
||||
@@ -26,14 +26,28 @@ typedef struct
|
||||
unsigned disable_reset_call:1;
|
||||
}function_calls;
|
||||
|
||||
/**
|
||||
* @brief Структура для вызова различных функций
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
unsigned flag_init_done:1;
|
||||
}TESTER_FlagsTypeDef;
|
||||
|
||||
/**
|
||||
* @brief Структура проекта тестер
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
function_calls func; ///< вызов разных функций
|
||||
function_calls func; ///< вызов разных функций
|
||||
|
||||
TESTER_TestHandleTypeDef *htest; ///< дескриптор тестера
|
||||
TESTER_TestHandleTypeDef *htest; ///< дескриптор тестера
|
||||
|
||||
TESTER_SwitchStartTypeDef SwStart; ///< структура кнопки старта
|
||||
TESTER_LEDsTypeDef leds; ///< структура светодиодов
|
||||
|
||||
|
||||
TESTER_FlagsTypeDef f;
|
||||
|
||||
uint32_t delay; ///< задержка главного цикла
|
||||
uint32_t delay_en:1; ///< включить задержку в главном цикле
|
||||
@@ -42,12 +56,14 @@ extern TESTER_ProjectTypeDef TESTER;
|
||||
|
||||
|
||||
|
||||
/* Протестировать диод */
|
||||
/* Инициализация всех модулей для работы тестера */
|
||||
void TESTER_Init(TESTER_ProjectTypeDef *tester);
|
||||
/* Подключить питание с помощью ключей (пинов) в TESTER_PowerSwitchTypeDef */
|
||||
/* Функция подготовки тестера к while(1) */
|
||||
void TESTER_pre_while(TESTER_ProjectTypeDef *tester);
|
||||
/* Отключить питание с помощью ключей (пинов) в TESTER_PowerSwitchTypeDef */
|
||||
/* Главная функция работы тестера */
|
||||
void TESTER_main_while(TESTER_ProjectTypeDef *tester);
|
||||
/* Функция работы интерфейса */
|
||||
void TESTER_InterfaceHandle(TESTER_ProjectTypeDef *tester);
|
||||
/*Задеркжка главного цикла */
|
||||
void TESTER_main_delay(TESTER_ProjectTypeDef *tester);
|
||||
#endif //_TESTER_MAIN_H_
|
||||
|
||||
Reference in New Issue
Block a user