#3 Добавлен простейший интерфейс: одна кнопка и один диод. Пока интерфейс управляется через прерывание в SysTick

При нажатии на кнопку включается тест с переходом от положительного напряжения к отрицатльному.

Индикация светодиода:
- постоянно горит - ожидание команды
- моргание (250 мс) - прямое подключение диода
- моргание (25 мс) - обратое подключение диода
This commit is contained in:
Razvalyaev 2024-12-19 15:26:22 +03:00
parent 13825e068c
commit a5704ae4be
12 changed files with 371 additions and 71 deletions

View File

@ -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;

View File

@ -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 */

View File

@ -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 ///< Пин первого ключа для напряжения отрицательного источника ппитания

View File

@ -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);
}
/**

View File

@ -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);

View 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;
}
}

View 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_

View File

@ -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 Задеркжка главного цикла
*/

View File

@ -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_

View File

@ -387,6 +387,30 @@
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>11</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Core\Tester_main\tester_interface_func.c</PathWithFileName>
<FilenameWithoutPath>tester_interface_func.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>12</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Core\Tester_main\tester_interface_func.h</PathWithFileName>
<FilenameWithoutPath>tester_interface_func.h</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
@ -397,7 +421,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>11</FileNumber>
<FileNumber>13</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -409,7 +433,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>12</FileNumber>
<FileNumber>14</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -421,7 +445,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>13</FileNumber>
<FileNumber>15</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -433,7 +457,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>14</FileNumber>
<FileNumber>16</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -445,7 +469,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>15</FileNumber>
<FileNumber>17</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -457,7 +481,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>16</FileNumber>
<FileNumber>18</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -469,7 +493,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>17</FileNumber>
<FileNumber>19</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -489,7 +513,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>18</FileNumber>
<FileNumber>20</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -501,7 +525,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>19</FileNumber>
<FileNumber>21</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -513,7 +537,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>20</FileNumber>
<FileNumber>22</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -525,7 +549,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>21</FileNumber>
<FileNumber>23</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -545,7 +569,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>22</FileNumber>
<FileNumber>24</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -565,7 +589,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>23</FileNumber>
<FileNumber>25</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -577,7 +601,7 @@
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>24</FileNumber>
<FileNumber>26</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -589,7 +613,7 @@
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>25</FileNumber>
<FileNumber>27</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -601,7 +625,7 @@
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>26</FileNumber>
<FileNumber>28</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -613,7 +637,7 @@
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>27</FileNumber>
<FileNumber>29</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -625,7 +649,7 @@
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>28</FileNumber>
<FileNumber>30</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -637,7 +661,7 @@
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>29</FileNumber>
<FileNumber>31</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -649,7 +673,7 @@
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>30</FileNumber>
<FileNumber>32</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -669,7 +693,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>31</FileNumber>
<FileNumber>33</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -681,7 +705,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>32</FileNumber>
<FileNumber>34</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -693,7 +717,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>33</FileNumber>
<FileNumber>35</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -705,7 +729,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>34</FileNumber>
<FileNumber>36</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -717,7 +741,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>35</FileNumber>
<FileNumber>37</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -729,7 +753,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>36</FileNumber>
<FileNumber>38</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -741,7 +765,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>37</FileNumber>
<FileNumber>39</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -753,7 +777,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>38</FileNumber>
<FileNumber>40</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -765,7 +789,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>39</FileNumber>
<FileNumber>41</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -777,7 +801,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>40</FileNumber>
<FileNumber>42</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -789,7 +813,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>41</FileNumber>
<FileNumber>43</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -801,7 +825,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>42</FileNumber>
<FileNumber>44</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -813,7 +837,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>43</FileNumber>
<FileNumber>45</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -825,7 +849,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>44</FileNumber>
<FileNumber>46</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -837,7 +861,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>45</FileNumber>
<FileNumber>47</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -849,7 +873,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>46</FileNumber>
<FileNumber>48</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -869,7 +893,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>47</FileNumber>
<FileNumber>49</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>

View File

@ -440,6 +440,16 @@
<FileType>5</FileType>
<FilePath>..\Core\Tester_main\tester_adc_func.h</FilePath>
</File>
<File>
<FileName>tester_interface_func.c</FileName>
<FileType>1</FileType>
<FilePath>..\Core\Tester_main\tester_interface_func.c</FilePath>
</File>
<File>
<FileName>tester_interface_func.h</FileName>
<FileType>5</FileType>
<FilePath>..\Core\Tester_main\tester_interface_func.h</FilePath>
</File>
</Files>
</Group>
<Group>

View File

@ -22,7 +22,7 @@ Dma.ADC1.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlign
Dma.Request0=ADC1
Dma.RequestsNb=1
File.Version=6
GPIO.groupedBy=
GPIO.groupedBy=Group By Peripherals
KeepUserPlacement=false
Mcu.CPN=STM32F103C6T6A
Mcu.Family=STM32F1
@ -38,21 +38,22 @@ Mcu.IPNb=8
Mcu.Name=STM32F103C(4-6)Tx
Mcu.Package=LQFP48
Mcu.Pin0=PC13-TAMPER-RTC
Mcu.Pin1=PD0-OSC_IN
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.Pin3=PA0-WKUP
Mcu.Pin4=PB0
Mcu.Pin5=PB1
Mcu.Pin6=PB10
Mcu.Pin7=PB11
Mcu.Pin8=PA9
Mcu.Pin9=PA10
Mcu.PinsNb=15
Mcu.Pin1=PC14-OSC32_IN
Mcu.Pin10=PA10
Mcu.Pin11=PA13
Mcu.Pin12=PA14
Mcu.Pin13=VP_SYS_VS_Systick
Mcu.Pin14=VP_TIM2_VS_ClockSourceINT
Mcu.Pin15=VP_TIM3_VS_ClockSourceINT
Mcu.Pin2=PD0-OSC_IN
Mcu.Pin3=PD1-OSC_OUT
Mcu.Pin4=PA0-WKUP
Mcu.Pin5=PB0
Mcu.Pin6=PB1
Mcu.Pin7=PB10
Mcu.Pin8=PB11
Mcu.Pin9=PA9
Mcu.PinsNb=16
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F103C6Tx
@ -92,6 +93,10 @@ PB11.Locked=true
PB11.Signal=GPIO_Output
PC13-TAMPER-RTC.Locked=true
PC13-TAMPER-RTC.Signal=GPIO_Output
PC14-OSC32_IN.GPIOParameters=GPIO_PuPd
PC14-OSC32_IN.GPIO_PuPd=GPIO_PULLDOWN
PC14-OSC32_IN.Locked=true
PC14-OSC32_IN.Signal=GPIO_Input
PD0-OSC_IN.Mode=HSE-External-Oscillator
PD0-OSC_IN.Signal=RCC_OSC_IN
PD1-OSC_OUT.Mode=HSE-External-Oscillator