face_recognition

This commit is contained in:
Siwat Sirichai 2023-09-23 13:03:15 +07:00
parent 6c44c742e8
commit 5bd4b4c100
16 changed files with 9681 additions and 9417 deletions

View File

@ -8,9 +8,9 @@ class access_control:
_door_state: bool = 0 _door_state: bool = 0
serial_adapter: serial.Serial serial_adapter: serial.Serial
def __init__(self, serial_port: str): def __init__(self, serial_port: str):
self.serial_adapter = serial.Serial(serial_port,baudrate=115200) self.serial_adapter = serial.Serial(serial_port,baudrate=9600)
Thread(target=self.read_serial).start() #Thread(target=self.read_serial).start()
Thread(target=self._process_payload).start() #Thread(target=self._process_payload).start()
def read_serial(self): def read_serial(self):
while True: while True:
if self.serial_adapter.in_waiting: if self.serial_adapter.in_waiting:

View File

@ -5,6 +5,8 @@ import time
stm32 = access_control("COM12") stm32 = access_control("COM12")
time.sleep(1) time.sleep(1)
stm32.lock_door() stm32.lock_door()
#stm32.unlock_door()
time.sleep(1)
#door_state = False #door_state = False
#while True: #while True:
#print(stm32._in_payloads) #print(stm32._in_payloads)

View File

@ -59,12 +59,18 @@ UART_HandleTypeDef huart2;
/* Definitions for mainTask */ /* Definitions for mainTask */
osThreadId_t mainTaskHandle; osThreadId_t mainTaskHandle;
const osThreadAttr_t mainTask_attributes = { .name = "mainTask", .stack_size = const osThreadAttr_t mainTask_attributes = {
128 * 4, .priority = (osPriority_t) osPriorityNormal, }; .name = "mainTask",
.stack_size = 128 * 4,
.priority = (osPriority_t) osPriorityNormal,
};
/* Definitions for doorHandler */ /* Definitions for doorHandler */
osThreadId_t doorHandlerHandle; osThreadId_t doorHandlerHandle;
const osThreadAttr_t doorHandler_attributes = { .name = "doorHandler", const osThreadAttr_t doorHandler_attributes = {
.stack_size = 128 * 4, .priority = (osPriority_t) osPriorityLow, }; .name = "doorHandler",
.stack_size = 128 * 4,
.priority = (osPriority_t) osPriorityLow,
};
/* USER CODE BEGIN PV */ /* USER CODE BEGIN PV */
uint8_t uart_buffer[10]; uint8_t uart_buffer[10];
uint8_t uart_index = 0; uint8_t uart_index = 0;
@ -95,201 +101,207 @@ void startDoorHandleTask(void *argument);
/* USER CODE END 0 */ /* USER CODE END 0 */
/** /**
* @brief The application entry point. * @brief The application entry point.
* @retval int * @retval int
*/ */
int main(void) { int main(void)
/* USER CODE BEGIN 1 */ {
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */ /* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/ /* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init(); HAL_Init();
/* USER CODE BEGIN Init */ /* USER CODE BEGIN Init */
/* USER CODE END Init */ /* USER CODE END Init */
/* Configure the system clock */ /* Configure the system clock */
SystemClock_Config(); SystemClock_Config();
/* USER CODE BEGIN SysInit */ /* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */ /* USER CODE END SysInit */
/* Initialize all configured peripherals */ /* Initialize all configured peripherals */
MX_GPIO_Init(); MX_GPIO_Init();
MX_USART2_UART_Init(); MX_USART2_UART_Init();
/* USER CODE BEGIN 2 */ /* USER CODE BEGIN 2 */
memset(uart_buffer, 0, 10); memset(uart_buffer, 0, 10);
/* USER CODE END 2 */ /* USER CODE END 2 */
/* Init scheduler */ /* Init scheduler */
osKernelInitialize(); osKernelInitialize();
/* USER CODE BEGIN RTOS_MUTEX */ /* USER CODE BEGIN RTOS_MUTEX */
/* add mutexes, ... */ /* add mutexes, ... */
/* USER CODE END RTOS_MUTEX */ /* USER CODE END RTOS_MUTEX */
/* USER CODE BEGIN RTOS_SEMAPHORES */ /* USER CODE BEGIN RTOS_SEMAPHORES */
/* add semaphores, ... */ /* add semaphores, ... */
/* USER CODE END RTOS_SEMAPHORES */ /* USER CODE END RTOS_SEMAPHORES */
/* USER CODE BEGIN RTOS_TIMERS */ /* USER CODE BEGIN RTOS_TIMERS */
/* start timers, add new ones, ... */ /* start timers, add new ones, ... */
/* USER CODE END RTOS_TIMERS */ /* USER CODE END RTOS_TIMERS */
/* USER CODE BEGIN RTOS_QUEUES */ /* USER CODE BEGIN RTOS_QUEUES */
/* add queues, ... */ /* add queues, ... */
/* USER CODE END RTOS_QUEUES */ /* USER CODE END RTOS_QUEUES */
/* Create the thread(s) */ /* Create the thread(s) */
/* creation of mainTask */ /* creation of mainTask */
mainTaskHandle = osThreadNew(StartMainTask, NULL, &mainTask_attributes); mainTaskHandle = osThreadNew(StartMainTask, NULL, &mainTask_attributes);
/* creation of doorHandler */ /* creation of doorHandler */
doorHandlerHandle = osThreadNew(startDoorHandleTask, NULL, doorHandlerHandle = osThreadNew(startDoorHandleTask, NULL, &doorHandler_attributes);
&doorHandler_attributes);
/* USER CODE BEGIN RTOS_THREADS */ /* USER CODE BEGIN RTOS_THREADS */
/* add threads, ... */ /* add threads, ... */
/* USER CODE END RTOS_THREADS */ /* USER CODE END RTOS_THREADS */
/* USER CODE BEGIN RTOS_EVENTS */ /* USER CODE BEGIN RTOS_EVENTS */
/* add events, ... */ /* add events, ... */
/* USER CODE END RTOS_EVENTS */ /* USER CODE END RTOS_EVENTS */
/* Start scheduler */ /* Start scheduler */
osKernelStart(); osKernelStart();
/* We should never get here as control is now taken by the scheduler */ /* We should never get here as control is now taken by the scheduler */
/* Infinite loop */ /* Infinite loop */
/* USER CODE BEGIN WHILE */ /* USER CODE BEGIN WHILE */
while (1) { while (1) {
} }
/* USER CODE END WHILE */ /* USER CODE END WHILE */
/* USER CODE BEGIN 3 */ /* USER CODE BEGIN 3 */
/* USER CODE END 3 */ /* USER CODE END 3 */
} }
/** /**
* @brief System Clock Configuration * @brief System Clock Configuration
* @retval None * @retval None
*/ */
void SystemClock_Config(void) { void SystemClock_Config(void)
RCC_OscInitTypeDef RCC_OscInitStruct = { 0 }; {
RCC_ClkInitTypeDef RCC_ClkInitStruct = { 0 }; RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
/** Configure the main internal regulator output voltage /** Configure the main internal regulator output voltage
*/ */
__HAL_RCC_PWR_CLK_ENABLE(); __HAL_RCC_PWR_CLK_ENABLE();
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
/** Initializes the RCC Oscillators according to the specified parameters /** Initializes the RCC Oscillators according to the specified parameters
* in the RCC_OscInitTypeDef structure. * in the RCC_OscInitTypeDef structure.
*/ */
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
RCC_OscInitStruct.PLL.PLLM = 16; RCC_OscInitStruct.PLL.PLLM = 16;
RCC_OscInitStruct.PLL.PLLN = 336; RCC_OscInitStruct.PLL.PLLN = 336;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4; RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4;
RCC_OscInitStruct.PLL.PLLQ = 4; RCC_OscInitStruct.PLL.PLLQ = 4;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
Error_Handler(); {
} Error_Handler();
}
/** Initializes the CPU, AHB and APB buses clocks /** Initializes the CPU, AHB and APB buses clocks
*/ */
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
| RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) { if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
Error_Handler(); {
} Error_Handler();
}
} }
/** /**
* @brief USART2 Initialization Function * @brief USART2 Initialization Function
* @param None * @param None
* @retval None * @retval None
*/ */
static void MX_USART2_UART_Init(void) { static void MX_USART2_UART_Init(void)
{
/* USER CODE BEGIN USART2_Init 0 */ /* USER CODE BEGIN USART2_Init 0 */
/* USER CODE END USART2_Init 0 */ /* USER CODE END USART2_Init 0 */
/* USER CODE BEGIN USART2_Init 1 */ /* USER CODE BEGIN USART2_Init 1 */
/* USER CODE END USART2_Init 1 */ /* USER CODE END USART2_Init 1 */
huart2.Instance = USART2; huart2.Instance = USART2;
huart2.Init.BaudRate = 115200; huart2.Init.BaudRate = 9600;
huart2.Init.WordLength = UART_WORDLENGTH_8B; huart2.Init.WordLength = UART_WORDLENGTH_8B;
huart2.Init.StopBits = UART_STOPBITS_1; huart2.Init.StopBits = UART_STOPBITS_1;
huart2.Init.Parity = UART_PARITY_NONE; huart2.Init.Parity = UART_PARITY_NONE;
huart2.Init.Mode = UART_MODE_TX_RX; huart2.Init.Mode = UART_MODE_TX_RX;
huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart2.Init.OverSampling = UART_OVERSAMPLING_16; huart2.Init.OverSampling = UART_OVERSAMPLING_16;
if (HAL_UART_Init(&huart2) != HAL_OK) { if (HAL_UART_Init(&huart2) != HAL_OK)
Error_Handler(); {
} Error_Handler();
/* USER CODE BEGIN USART2_Init 2 */ }
/* USER CODE BEGIN USART2_Init 2 */
/* USER CODE END USART2_Init 2 */ /* USER CODE END USART2_Init 2 */
} }
/** /**
* @brief GPIO Initialization Function * @brief GPIO Initialization Function
* @param None * @param None
* @retval None * @retval None
*/ */
static void MX_GPIO_Init(void) { static void MX_GPIO_Init(void)
GPIO_InitTypeDef GPIO_InitStruct = { 0 }; {
/* USER CODE BEGIN MX_GPIO_Init_1 */ GPIO_InitTypeDef GPIO_InitStruct = {0};
/* USER CODE END MX_GPIO_Init_1 */ /* USER CODE BEGIN MX_GPIO_Init_1 */
/* USER CODE END MX_GPIO_Init_1 */
/* GPIO Ports Clock Enable */ /* GPIO Ports Clock Enable */
__HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOH_CLK_ENABLE(); __HAL_RCC_GPIOH_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE();
/*Configure GPIO pin Output Level */ /*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOA, LD2_Pin | Door_Lock_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOA, LD2_Pin|Door_Lock_Pin, GPIO_PIN_RESET);
/*Configure GPIO pin : B1_Pin */ /*Configure GPIO pin : B1_Pin */
GPIO_InitStruct.Pin = B1_Pin; GPIO_InitStruct.Pin = B1_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct); HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pins : LD2_Pin Door_Lock_Pin */ /*Configure GPIO pins : LD2_Pin Door_Lock_Pin */
GPIO_InitStruct.Pin = LD2_Pin | Door_Lock_Pin; GPIO_InitStruct.Pin = LD2_Pin|Door_Lock_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/*Configure GPIO pin : Door_Sensor_Pin */ /*Configure GPIO pin : Door_Sensor_Pin */
GPIO_InitStruct.Pin = Door_Sensor_Pin; GPIO_InitStruct.Pin = Door_Sensor_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(Door_Sensor_GPIO_Port, &GPIO_InitStruct); HAL_GPIO_Init(Door_Sensor_GPIO_Port, &GPIO_InitStruct);
/* USER CODE BEGIN MX_GPIO_Init_2 */ /* USER CODE BEGIN MX_GPIO_Init_2 */
/* USER CODE END MX_GPIO_Init_2 */ /* USER CODE END MX_GPIO_Init_2 */
} }
/* USER CODE BEGIN 4 */ /* USER CODE BEGIN 4 */
@ -303,8 +315,9 @@ static void MX_GPIO_Init(void) {
* @retval None * @retval None
*/ */
/* USER CODE END Header_StartMainTask */ /* USER CODE END Header_StartMainTask */
void StartMainTask(void *argument) { void StartMainTask(void *argument)
/* USER CODE BEGIN 5 */ {
/* USER CODE BEGIN 5 */
memset(uart_buffer, 0, 10); memset(uart_buffer, 0, 10);
/* USER CODE END 2 */ /* USER CODE END 2 */
@ -312,7 +325,7 @@ void StartMainTask(void *argument) {
/* USER CODE BEGIN WHILE */ /* USER CODE BEGIN WHILE */
while (1) { while (1) {
if (HAL_UART_Receive(&huart2, uart_buffer + uart_index, 1, 250) if (HAL_UART_Receive(&huart2, uart_buffer + uart_index, 1, 1000)
== HAL_OK) { == HAL_OK) {
uart_index++; uart_index++;
if (uart_buffer[uart_index - 1] == 0xFF) { if (uart_buffer[uart_index - 1] == 0xFF) {
@ -333,11 +346,14 @@ void StartMainTask(void *argument) {
} }
uart_index = 0; uart_index = 0;
memset(uart_buffer, 0, 10); memset(uart_buffer, 0, 10);
} else if (uart_index > sizeof(uart_buffer)-1) {
memset(uart_buffer, 0, 10);
uart_index=0;
} }
} }
vTaskDelay(1); vTaskDelay(1);
} }
/* USER CODE END 5 */ /* USER CODE END 5 */
} }
/* USER CODE BEGIN Header_startDoorHandleTask */ /* USER CODE BEGIN Header_startDoorHandleTask */
@ -347,8 +363,9 @@ void StartMainTask(void *argument) {
* @retval None * @retval None
*/ */
/* USER CODE END Header_startDoorHandleTask */ /* USER CODE END Header_startDoorHandleTask */
void startDoorHandleTask(void *argument) { void startDoorHandleTask(void *argument)
/* USER CODE BEGIN startDoorHandleTask */ {
/* USER CODE BEGIN startDoorHandleTask */
/* Infinite loop */ /* Infinite loop */
for (;;) { for (;;) {
door_state = HAL_GPIO_ReadPin(DOOR_SENSOR_BANK, DOOR_SENSOR_PIN); door_state = HAL_GPIO_ReadPin(DOOR_SENSOR_BANK, DOOR_SENSOR_PIN);
@ -384,40 +401,42 @@ void startDoorHandleTask(void *argument) {
vTaskDelay(100); vTaskDelay(100);
} }
/* USER CODE END startDoorHandleTask */ /* USER CODE END startDoorHandleTask */
} }
/** /**
* @brief Period elapsed callback in non blocking mode * @brief Period elapsed callback in non blocking mode
* @note This function is called when TIM1 interrupt took place, inside * @note This function is called when TIM1 interrupt took place, inside
* HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment
* a global variable "uwTick" used as application time base. * a global variable "uwTick" used as application time base.
* @param htim : TIM handle * @param htim : TIM handle
* @retval None * @retval None
*/ */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
/* USER CODE BEGIN Callback 0 */ {
/* USER CODE BEGIN Callback 0 */
/* USER CODE END Callback 0 */ /* USER CODE END Callback 0 */
if (htim->Instance == TIM1) { if (htim->Instance == TIM1) {
HAL_IncTick(); HAL_IncTick();
} }
/* USER CODE BEGIN Callback 1 */ /* USER CODE BEGIN Callback 1 */
/* USER CODE END Callback 1 */ /* USER CODE END Callback 1 */
} }
/** /**
* @brief This function is executed in case of error occurrence. * @brief This function is executed in case of error occurrence.
* @retval None * @retval None
*/ */
void Error_Handler(void) { void Error_Handler(void)
/* USER CODE BEGIN Error_Handler_Debug */ {
/* USER CODE BEGIN Error_Handler_Debug */
/* User can add his own implementation to report the HAL error return state */ /* User can add his own implementation to report the HAL error return state */
__disable_irq(); __disable_irq();
while (1) { while (1) {
} }
/* USER CODE END Error_Handler_Debug */ /* USER CODE END Error_Handler_Debug */
} }
#ifdef USE_FULL_ASSERT #ifdef USE_FULL_ASSERT

View File

@ -1,8 +1,8 @@
../Core/Src/main.c:101:5:main 1 ../Core/Src/main.c:107:5:main 1
../Core/Src/main.c:183:6:SystemClock_Config 3 ../Core/Src/main.c:189:6:SystemClock_Config 3
../Core/Src/main.c:227:13:MX_USART2_UART_Init 2 ../Core/Src/main.c:236:13:MX_USART2_UART_Init 2
../Core/Src/main.c:258:13:MX_GPIO_Init 1 ../Core/Src/main.c:269:13:MX_GPIO_Init 1
../Core/Src/main.c:306:6:StartMainTask 7 ../Core/Src/main.c:318:6:StartMainTask 8
../Core/Src/main.c:350:6:startDoorHandleTask 8 ../Core/Src/main.c:366:6:startDoorHandleTask 8
../Core/Src/main.c:398:6:HAL_TIM_PeriodElapsedCallback 2 ../Core/Src/main.c:415:6:HAL_TIM_PeriodElapsedCallback 2
../Core/Src/main.c:414:6:Error_Handler 1 ../Core/Src/main.c:432:6:Error_Handler 1

View File

@ -1,8 +1,8 @@
../Core/Src/main.c:101:5:main 8 static ../Core/Src/main.c:107:5:main 8 static
../Core/Src/main.c:183:6:SystemClock_Config 88 static ../Core/Src/main.c:189:6:SystemClock_Config 88 static
../Core/Src/main.c:227:13:MX_USART2_UART_Init 8 static ../Core/Src/main.c:236:13:MX_USART2_UART_Init 8 static
../Core/Src/main.c:258:13:MX_GPIO_Init 48 static ../Core/Src/main.c:269:13:MX_GPIO_Init 48 static
../Core/Src/main.c:306:6:StartMainTask 24 static ../Core/Src/main.c:318:6:StartMainTask 24 static
../Core/Src/main.c:350:6:startDoorHandleTask 16 static ../Core/Src/main.c:366:6:startDoorHandleTask 16 static
../Core/Src/main.c:398:6:HAL_TIM_PeriodElapsedCallback 16 static ../Core/Src/main.c:415:6:HAL_TIM_PeriodElapsedCallback 16 static
../Core/Src/main.c:414:6:Error_Handler 4 static,ignoring_inline_asm ../Core/Src/main.c:432:6:Error_Handler 4 static,ignoring_inline_asm

File diff suppressed because it is too large Load Diff

View File

@ -4531,7 +4531,7 @@ LOAD C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext
0x0000000008000000 g_pfnVectors 0x0000000008000000 g_pfnVectors
0x0000000008000198 . = ALIGN (0x4) 0x0000000008000198 . = ALIGN (0x4)
.text 0x00000000080001a0 0x5488 .text 0x00000000080001a0 0x54a8
0x00000000080001a0 . = ALIGN (0x4) 0x00000000080001a0 . = ALIGN (0x4)
*(.text) *(.text)
.text 0x00000000080001a0 0x40 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard/crtbegin.o .text 0x00000000080001a0 0x40 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard/crtbegin.o
@ -4553,545 +4553,546 @@ LOAD C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext
.text.MX_GPIO_Init .text.MX_GPIO_Init
0x0000000008000668 0xf8 ./Core/Src/main.o 0x0000000008000668 0xf8 ./Core/Src/main.o
.text.StartMainTask .text.StartMainTask
0x0000000008000760 0xd8 ./Core/Src/main.o 0x0000000008000760 0xf4 ./Core/Src/main.o
0x0000000008000760 StartMainTask 0x0000000008000760 StartMainTask
.text.startDoorHandleTask .text.startDoorHandleTask
0x0000000008000838 0x100 ./Core/Src/main.o 0x0000000008000854 0x100 ./Core/Src/main.o
0x0000000008000838 startDoorHandleTask 0x0000000008000854 startDoorHandleTask
.text.HAL_TIM_PeriodElapsedCallback .text.HAL_TIM_PeriodElapsedCallback
0x0000000008000938 0x24 ./Core/Src/main.o 0x0000000008000954 0x24 ./Core/Src/main.o
0x0000000008000938 HAL_TIM_PeriodElapsedCallback 0x0000000008000954 HAL_TIM_PeriodElapsedCallback
.text.Error_Handler .text.Error_Handler
0x000000000800095c 0xa ./Core/Src/main.o 0x0000000008000978 0xa ./Core/Src/main.o
0x000000000800095c Error_Handler 0x0000000008000978 Error_Handler
*fill* 0x0000000008000966 0x2 *fill* 0x0000000008000982 0x2
.text.HAL_MspInit .text.HAL_MspInit
0x0000000008000968 0x58 ./Core/Src/stm32f4xx_hal_msp.o 0x0000000008000984 0x58 ./Core/Src/stm32f4xx_hal_msp.o
0x0000000008000968 HAL_MspInit 0x0000000008000984 HAL_MspInit
.text.HAL_UART_MspInit .text.HAL_UART_MspInit
0x00000000080009c0 0x90 ./Core/Src/stm32f4xx_hal_msp.o 0x00000000080009dc 0x90 ./Core/Src/stm32f4xx_hal_msp.o
0x00000000080009c0 HAL_UART_MspInit 0x00000000080009dc HAL_UART_MspInit
.text.HAL_InitTick .text.HAL_InitTick
0x0000000008000a50 0xe4 ./Core/Src/stm32f4xx_hal_timebase_tim.o 0x0000000008000a6c 0xe4 ./Core/Src/stm32f4xx_hal_timebase_tim.o
0x0000000008000a50 HAL_InitTick 0x0000000008000a6c HAL_InitTick
.text.NMI_Handler .text.NMI_Handler
0x0000000008000b34 0x6 ./Core/Src/stm32f4xx_it.o 0x0000000008000b50 0x6 ./Core/Src/stm32f4xx_it.o
0x0000000008000b34 NMI_Handler 0x0000000008000b50 NMI_Handler
.text.HardFault_Handler .text.HardFault_Handler
0x0000000008000b3a 0x6 ./Core/Src/stm32f4xx_it.o 0x0000000008000b56 0x6 ./Core/Src/stm32f4xx_it.o
0x0000000008000b3a HardFault_Handler 0x0000000008000b56 HardFault_Handler
.text.MemManage_Handler .text.MemManage_Handler
0x0000000008000b40 0x6 ./Core/Src/stm32f4xx_it.o 0x0000000008000b5c 0x6 ./Core/Src/stm32f4xx_it.o
0x0000000008000b40 MemManage_Handler 0x0000000008000b5c MemManage_Handler
.text.BusFault_Handler .text.BusFault_Handler
0x0000000008000b46 0x6 ./Core/Src/stm32f4xx_it.o 0x0000000008000b62 0x6 ./Core/Src/stm32f4xx_it.o
0x0000000008000b46 BusFault_Handler 0x0000000008000b62 BusFault_Handler
.text.UsageFault_Handler .text.UsageFault_Handler
0x0000000008000b4c 0x6 ./Core/Src/stm32f4xx_it.o 0x0000000008000b68 0x6 ./Core/Src/stm32f4xx_it.o
0x0000000008000b4c UsageFault_Handler 0x0000000008000b68 UsageFault_Handler
.text.DebugMon_Handler .text.DebugMon_Handler
0x0000000008000b52 0xe ./Core/Src/stm32f4xx_it.o 0x0000000008000b6e 0xe ./Core/Src/stm32f4xx_it.o
0x0000000008000b52 DebugMon_Handler 0x0000000008000b6e DebugMon_Handler
.text.TIM1_UP_TIM10_IRQHandler .text.TIM1_UP_TIM10_IRQHandler
0x0000000008000b60 0x14 ./Core/Src/stm32f4xx_it.o 0x0000000008000b7c 0x14 ./Core/Src/stm32f4xx_it.o
0x0000000008000b60 TIM1_UP_TIM10_IRQHandler 0x0000000008000b7c TIM1_UP_TIM10_IRQHandler
.text.SystemInit .text.SystemInit
0x0000000008000b74 0x24 ./Core/Src/system_stm32f4xx.o 0x0000000008000b90 0x24 ./Core/Src/system_stm32f4xx.o
0x0000000008000b74 SystemInit 0x0000000008000b90 SystemInit
.text.Reset_Handler .text.Reset_Handler
0x0000000008000b98 0x50 ./Core/Startup/startup_stm32f411retx.o 0x0000000008000bb4 0x50 ./Core/Startup/startup_stm32f411retx.o
0x0000000008000b98 Reset_Handler 0x0000000008000bb4 Reset_Handler
.text.Default_Handler .text.Default_Handler
0x0000000008000be8 0x2 ./Core/Startup/startup_stm32f411retx.o 0x0000000008000c04 0x2 ./Core/Startup/startup_stm32f411retx.o
0x0000000008000be8 RTC_Alarm_IRQHandler 0x0000000008000c04 RTC_Alarm_IRQHandler
0x0000000008000be8 EXTI2_IRQHandler 0x0000000008000c04 EXTI2_IRQHandler
0x0000000008000be8 SPI4_IRQHandler 0x0000000008000c04 SPI4_IRQHandler
0x0000000008000be8 TIM1_CC_IRQHandler 0x0000000008000c04 TIM1_CC_IRQHandler
0x0000000008000be8 DMA2_Stream5_IRQHandler 0x0000000008000c04 DMA2_Stream5_IRQHandler
0x0000000008000be8 DMA1_Stream5_IRQHandler 0x0000000008000c04 DMA1_Stream5_IRQHandler
0x0000000008000be8 PVD_IRQHandler 0x0000000008000c04 PVD_IRQHandler
0x0000000008000be8 SDIO_IRQHandler 0x0000000008000c04 SDIO_IRQHandler
0x0000000008000be8 TAMP_STAMP_IRQHandler 0x0000000008000c04 TAMP_STAMP_IRQHandler
0x0000000008000be8 EXTI3_IRQHandler 0x0000000008000c04 EXTI3_IRQHandler
0x0000000008000be8 I2C3_ER_IRQHandler 0x0000000008000c04 I2C3_ER_IRQHandler
0x0000000008000be8 EXTI0_IRQHandler 0x0000000008000c04 EXTI0_IRQHandler
0x0000000008000be8 I2C2_EV_IRQHandler 0x0000000008000c04 I2C2_EV_IRQHandler
0x0000000008000be8 DMA1_Stream2_IRQHandler 0x0000000008000c04 DMA1_Stream2_IRQHandler
0x0000000008000be8 FPU_IRQHandler 0x0000000008000c04 FPU_IRQHandler
0x0000000008000be8 DMA2_Stream2_IRQHandler 0x0000000008000c04 DMA2_Stream2_IRQHandler
0x0000000008000be8 SPI1_IRQHandler 0x0000000008000c04 SPI1_IRQHandler
0x0000000008000be8 TIM1_BRK_TIM9_IRQHandler 0x0000000008000c04 TIM1_BRK_TIM9_IRQHandler
0x0000000008000be8 DMA2_Stream3_IRQHandler 0x0000000008000c04 DMA2_Stream3_IRQHandler
0x0000000008000be8 USART6_IRQHandler 0x0000000008000c04 USART6_IRQHandler
0x0000000008000be8 DMA2_Stream0_IRQHandler 0x0000000008000c04 DMA2_Stream0_IRQHandler
0x0000000008000be8 TIM4_IRQHandler 0x0000000008000c04 TIM4_IRQHandler
0x0000000008000be8 I2C1_EV_IRQHandler 0x0000000008000c04 I2C1_EV_IRQHandler
0x0000000008000be8 DMA1_Stream6_IRQHandler 0x0000000008000c04 DMA1_Stream6_IRQHandler
0x0000000008000be8 DMA1_Stream1_IRQHandler 0x0000000008000c04 DMA1_Stream1_IRQHandler
0x0000000008000be8 TIM3_IRQHandler 0x0000000008000c04 TIM3_IRQHandler
0x0000000008000be8 RCC_IRQHandler 0x0000000008000c04 RCC_IRQHandler
0x0000000008000be8 Default_Handler 0x0000000008000c04 Default_Handler
0x0000000008000be8 EXTI15_10_IRQHandler 0x0000000008000c04 EXTI15_10_IRQHandler
0x0000000008000be8 ADC_IRQHandler 0x0000000008000c04 ADC_IRQHandler
0x0000000008000be8 DMA1_Stream7_IRQHandler 0x0000000008000c04 DMA1_Stream7_IRQHandler
0x0000000008000be8 SPI5_IRQHandler 0x0000000008000c04 SPI5_IRQHandler
0x0000000008000be8 TIM5_IRQHandler 0x0000000008000c04 TIM5_IRQHandler
0x0000000008000be8 DMA2_Stream7_IRQHandler 0x0000000008000c04 DMA2_Stream7_IRQHandler
0x0000000008000be8 I2C3_EV_IRQHandler 0x0000000008000c04 I2C3_EV_IRQHandler
0x0000000008000be8 EXTI9_5_IRQHandler 0x0000000008000c04 EXTI9_5_IRQHandler
0x0000000008000be8 RTC_WKUP_IRQHandler 0x0000000008000c04 RTC_WKUP_IRQHandler
0x0000000008000be8 SPI2_IRQHandler 0x0000000008000c04 SPI2_IRQHandler
0x0000000008000be8 DMA1_Stream0_IRQHandler 0x0000000008000c04 DMA1_Stream0_IRQHandler
0x0000000008000be8 EXTI4_IRQHandler 0x0000000008000c04 EXTI4_IRQHandler
0x0000000008000be8 WWDG_IRQHandler 0x0000000008000c04 WWDG_IRQHandler
0x0000000008000be8 TIM2_IRQHandler 0x0000000008000c04 TIM2_IRQHandler
0x0000000008000be8 OTG_FS_WKUP_IRQHandler 0x0000000008000c04 OTG_FS_WKUP_IRQHandler
0x0000000008000be8 TIM1_TRG_COM_TIM11_IRQHandler 0x0000000008000c04 TIM1_TRG_COM_TIM11_IRQHandler
0x0000000008000be8 EXTI1_IRQHandler 0x0000000008000c04 EXTI1_IRQHandler
0x0000000008000be8 USART2_IRQHandler 0x0000000008000c04 USART2_IRQHandler
0x0000000008000be8 I2C2_ER_IRQHandler 0x0000000008000c04 I2C2_ER_IRQHandler
0x0000000008000be8 DMA2_Stream1_IRQHandler 0x0000000008000c04 DMA2_Stream1_IRQHandler
0x0000000008000be8 FLASH_IRQHandler 0x0000000008000c04 FLASH_IRQHandler
0x0000000008000be8 DMA2_Stream4_IRQHandler 0x0000000008000c04 DMA2_Stream4_IRQHandler
0x0000000008000be8 USART1_IRQHandler 0x0000000008000c04 USART1_IRQHandler
0x0000000008000be8 OTG_FS_IRQHandler 0x0000000008000c04 OTG_FS_IRQHandler
0x0000000008000be8 SPI3_IRQHandler 0x0000000008000c04 SPI3_IRQHandler
0x0000000008000be8 DMA1_Stream4_IRQHandler 0x0000000008000c04 DMA1_Stream4_IRQHandler
0x0000000008000be8 I2C1_ER_IRQHandler 0x0000000008000c04 I2C1_ER_IRQHandler
0x0000000008000be8 DMA2_Stream6_IRQHandler 0x0000000008000c04 DMA2_Stream6_IRQHandler
0x0000000008000be8 DMA1_Stream3_IRQHandler 0x0000000008000c04 DMA1_Stream3_IRQHandler
*fill* 0x0000000008000bea 0x2 *fill* 0x0000000008000c06 0x2
.text.HAL_Init .text.HAL_Init
0x0000000008000bec 0x44 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o 0x0000000008000c08 0x44 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
0x0000000008000bec HAL_Init 0x0000000008000c08 HAL_Init
.text.HAL_IncTick .text.HAL_IncTick
0x0000000008000c30 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o 0x0000000008000c4c 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
0x0000000008000c30 HAL_IncTick 0x0000000008000c4c HAL_IncTick
.text.HAL_GetTick .text.HAL_GetTick
0x0000000008000c58 0x18 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o 0x0000000008000c74 0x18 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
0x0000000008000c58 HAL_GetTick 0x0000000008000c74 HAL_GetTick
.text.__NVIC_SetPriorityGrouping .text.__NVIC_SetPriorityGrouping
0x0000000008000c70 0x48 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o 0x0000000008000c8c 0x48 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.__NVIC_GetPriorityGrouping .text.__NVIC_GetPriorityGrouping
0x0000000008000cb8 0x1c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o 0x0000000008000cd4 0x1c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.__NVIC_EnableIRQ .text.__NVIC_EnableIRQ
0x0000000008000cd4 0x3c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o 0x0000000008000cf0 0x3c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.__NVIC_SetPriority .text.__NVIC_SetPriority
0x0000000008000d10 0x54 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o 0x0000000008000d2c 0x54 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.NVIC_EncodePriority .text.NVIC_EncodePriority
0x0000000008000d64 0x66 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o 0x0000000008000d80 0x66 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.text.HAL_NVIC_SetPriorityGrouping .text.HAL_NVIC_SetPriorityGrouping
0x0000000008000dca 0x16 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o 0x0000000008000de6 0x16 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
0x0000000008000dca HAL_NVIC_SetPriorityGrouping 0x0000000008000de6 HAL_NVIC_SetPriorityGrouping
.text.HAL_NVIC_SetPriority .text.HAL_NVIC_SetPriority
0x0000000008000de0 0x38 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o 0x0000000008000dfc 0x38 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
0x0000000008000de0 HAL_NVIC_SetPriority 0x0000000008000dfc HAL_NVIC_SetPriority
.text.HAL_NVIC_EnableIRQ .text.HAL_NVIC_EnableIRQ
0x0000000008000e18 0x1c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o 0x0000000008000e34 0x1c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
0x0000000008000e18 HAL_NVIC_EnableIRQ 0x0000000008000e34 HAL_NVIC_EnableIRQ
.text.HAL_GPIO_Init .text.HAL_GPIO_Init
0x0000000008000e34 0x308 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o 0x0000000008000e50 0x308 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
0x0000000008000e34 HAL_GPIO_Init 0x0000000008000e50 HAL_GPIO_Init
.text.HAL_GPIO_ReadPin .text.HAL_GPIO_ReadPin
0x000000000800113c 0x30 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o 0x0000000008001158 0x30 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
0x000000000800113c HAL_GPIO_ReadPin 0x0000000008001158 HAL_GPIO_ReadPin
.text.HAL_GPIO_WritePin .text.HAL_GPIO_WritePin
0x000000000800116c 0x32 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o 0x0000000008001188 0x32 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
0x000000000800116c HAL_GPIO_WritePin 0x0000000008001188 HAL_GPIO_WritePin
*fill* 0x000000000800119e 0x2 *fill* 0x00000000080011ba 0x2
.text.HAL_RCC_OscConfig .text.HAL_RCC_OscConfig
0x00000000080011a0 0x4f0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o 0x00000000080011bc 0x4f0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
0x00000000080011a0 HAL_RCC_OscConfig 0x00000000080011bc HAL_RCC_OscConfig
.text.HAL_RCC_ClockConfig .text.HAL_RCC_ClockConfig
0x0000000008001690 0x1cc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o 0x00000000080016ac 0x1cc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
0x0000000008001690 HAL_RCC_ClockConfig 0x00000000080016ac HAL_RCC_ClockConfig
.text.HAL_RCC_GetSysClockFreq .text.HAL_RCC_GetSysClockFreq
0x000000000800185c 0x20c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o 0x0000000008001878 0x20c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
0x000000000800185c HAL_RCC_GetSysClockFreq 0x0000000008001878 HAL_RCC_GetSysClockFreq
.text.HAL_RCC_GetHCLKFreq .text.HAL_RCC_GetHCLKFreq
0x0000000008001a68 0x18 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o 0x0000000008001a84 0x18 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
0x0000000008001a68 HAL_RCC_GetHCLKFreq 0x0000000008001a84 HAL_RCC_GetHCLKFreq
.text.HAL_RCC_GetPCLK1Freq .text.HAL_RCC_GetPCLK1Freq
0x0000000008001a80 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o 0x0000000008001a9c 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
0x0000000008001a80 HAL_RCC_GetPCLK1Freq 0x0000000008001a9c HAL_RCC_GetPCLK1Freq
.text.HAL_RCC_GetPCLK2Freq .text.HAL_RCC_GetPCLK2Freq
0x0000000008001aa8 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o 0x0000000008001ac4 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
0x0000000008001aa8 HAL_RCC_GetPCLK2Freq 0x0000000008001ac4 HAL_RCC_GetPCLK2Freq
.text.HAL_RCC_GetClockConfig .text.HAL_RCC_GetClockConfig
0x0000000008001ad0 0x64 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o 0x0000000008001aec 0x64 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
0x0000000008001ad0 HAL_RCC_GetClockConfig 0x0000000008001aec HAL_RCC_GetClockConfig
.text.HAL_TIM_Base_Init .text.HAL_TIM_Base_Init
0x0000000008001b34 0x9e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o 0x0000000008001b50 0x9e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o
0x0000000008001b34 HAL_TIM_Base_Init 0x0000000008001b50 HAL_TIM_Base_Init
.text.HAL_TIM_Base_MspInit .text.HAL_TIM_Base_MspInit
0x0000000008001bd2 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o 0x0000000008001bee 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o
0x0000000008001bd2 HAL_TIM_Base_MspInit 0x0000000008001bee HAL_TIM_Base_MspInit
*fill* 0x0000000008001be6 0x2 *fill* 0x0000000008001c02 0x2
.text.HAL_TIM_Base_Start_IT .text.HAL_TIM_Base_Start_IT
0x0000000008001be8 0xc4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o 0x0000000008001c04 0xc4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o
0x0000000008001be8 HAL_TIM_Base_Start_IT 0x0000000008001c04 HAL_TIM_Base_Start_IT
.text.HAL_TIM_IRQHandler .text.HAL_TIM_IRQHandler
0x0000000008001cac 0x210 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o 0x0000000008001cc8 0x210 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o
0x0000000008001cac HAL_TIM_IRQHandler 0x0000000008001cc8 HAL_TIM_IRQHandler
.text.HAL_TIM_OC_DelayElapsedCallback .text.HAL_TIM_OC_DelayElapsedCallback
0x0000000008001ebc 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o 0x0000000008001ed8 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o
0x0000000008001ebc HAL_TIM_OC_DelayElapsedCallback 0x0000000008001ed8 HAL_TIM_OC_DelayElapsedCallback
.text.HAL_TIM_IC_CaptureCallback .text.HAL_TIM_IC_CaptureCallback
0x0000000008001ed0 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o 0x0000000008001eec 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o
0x0000000008001ed0 HAL_TIM_IC_CaptureCallback 0x0000000008001eec HAL_TIM_IC_CaptureCallback
.text.HAL_TIM_PWM_PulseFinishedCallback .text.HAL_TIM_PWM_PulseFinishedCallback
0x0000000008001ee4 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o 0x0000000008001f00 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o
0x0000000008001ee4 HAL_TIM_PWM_PulseFinishedCallback 0x0000000008001f00 HAL_TIM_PWM_PulseFinishedCallback
.text.HAL_TIM_TriggerCallback .text.HAL_TIM_TriggerCallback
0x0000000008001ef8 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o 0x0000000008001f14 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o
0x0000000008001ef8 HAL_TIM_TriggerCallback 0x0000000008001f14 HAL_TIM_TriggerCallback
.text.TIM_Base_SetConfig .text.TIM_Base_SetConfig
0x0000000008001f0c 0x100 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o 0x0000000008001f28 0x100 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o
0x0000000008001f0c TIM_Base_SetConfig 0x0000000008001f28 TIM_Base_SetConfig
.text.HAL_TIMEx_CommutCallback .text.HAL_TIMEx_CommutCallback
0x000000000800200c 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o 0x0000000008002028 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o
0x000000000800200c HAL_TIMEx_CommutCallback 0x0000000008002028 HAL_TIMEx_CommutCallback
.text.HAL_TIMEx_BreakCallback .text.HAL_TIMEx_BreakCallback
0x0000000008002020 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o 0x000000000800203c 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o
0x0000000008002020 HAL_TIMEx_BreakCallback 0x000000000800203c HAL_TIMEx_BreakCallback
.text.HAL_UART_Init .text.HAL_UART_Init
0x0000000008002034 0x9a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o 0x0000000008002050 0x9a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o
0x0000000008002034 HAL_UART_Init 0x0000000008002050 HAL_UART_Init
.text.HAL_UART_Transmit .text.HAL_UART_Transmit
0x00000000080020ce 0x124 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o 0x00000000080020ea 0x124 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o
0x00000000080020ce HAL_UART_Transmit 0x00000000080020ea HAL_UART_Transmit
.text.HAL_UART_Receive .text.HAL_UART_Receive
0x00000000080021f2 0x144 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o 0x000000000800220e 0x144 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o
0x00000000080021f2 HAL_UART_Receive 0x000000000800220e HAL_UART_Receive
.text.UART_WaitOnFlagUntilTimeout .text.UART_WaitOnFlagUntilTimeout
0x0000000008002336 0xdc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o 0x0000000008002352 0xdc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o
*fill* 0x0000000008002412 0x2 *fill* 0x000000000800242e 0x2
.text.UART_SetConfig .text.UART_SetConfig
0x0000000008002414 0x4e8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o 0x0000000008002430 0x4e8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o
.text.__NVIC_SetPriority .text.__NVIC_SetPriority
0x00000000080028fc 0x54 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.o 0x0000000008002918 0x54 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.o
.text.SysTick_Handler .text.SysTick_Handler
0x0000000008002950 0x20 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.o 0x000000000800296c 0x20 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.o
0x0000000008002950 SysTick_Handler 0x000000000800296c SysTick_Handler
.text.SVC_Setup .text.SVC_Setup
0x0000000008002970 0x12 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.o 0x000000000800298c 0x12 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.o
*fill* 0x0000000008002982 0x2 *fill* 0x000000000800299e 0x2
.text.osKernelInitialize .text.osKernelInitialize
0x0000000008002984 0x48 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.o 0x00000000080029a0 0x48 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.o
0x0000000008002984 osKernelInitialize 0x00000000080029a0 osKernelInitialize
.text.osKernelStart .text.osKernelStart
0x00000000080029cc 0x4c ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.o 0x00000000080029e8 0x4c ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.o
0x00000000080029cc osKernelStart 0x00000000080029e8 osKernelStart
.text.osThreadNew .text.osThreadNew
0x0000000008002a18 0x124 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.o 0x0000000008002a34 0x124 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.o
0x0000000008002a18 osThreadNew 0x0000000008002a34 osThreadNew
.text.vApplicationGetIdleTaskMemory .text.vApplicationGetIdleTaskMemory
0x0000000008002b3c 0x34 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.o 0x0000000008002b58 0x34 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.o
0x0000000008002b3c vApplicationGetIdleTaskMemory 0x0000000008002b58 vApplicationGetIdleTaskMemory
.text.vApplicationGetTimerTaskMemory .text.vApplicationGetTimerTaskMemory
0x0000000008002b70 0x34 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.o 0x0000000008002b8c 0x34 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.o
0x0000000008002b70 vApplicationGetTimerTaskMemory 0x0000000008002b8c vApplicationGetTimerTaskMemory
.text.vListInitialise .text.vListInitialise
0x0000000008002ba4 0x40 ./Middlewares/Third_Party/FreeRTOS/Source/list.o 0x0000000008002bc0 0x40 ./Middlewares/Third_Party/FreeRTOS/Source/list.o
0x0000000008002ba4 vListInitialise 0x0000000008002bc0 vListInitialise
.text.vListInitialiseItem .text.vListInitialiseItem
0x0000000008002be4 0x1a ./Middlewares/Third_Party/FreeRTOS/Source/list.o 0x0000000008002c00 0x1a ./Middlewares/Third_Party/FreeRTOS/Source/list.o
0x0000000008002be4 vListInitialiseItem 0x0000000008002c00 vListInitialiseItem
.text.vListInsertEnd .text.vListInsertEnd
0x0000000008002bfe 0x48 ./Middlewares/Third_Party/FreeRTOS/Source/list.o 0x0000000008002c1a 0x48 ./Middlewares/Third_Party/FreeRTOS/Source/list.o
0x0000000008002bfe vListInsertEnd 0x0000000008002c1a vListInsertEnd
.text.vListInsert .text.vListInsert
0x0000000008002c46 0x72 ./Middlewares/Third_Party/FreeRTOS/Source/list.o 0x0000000008002c62 0x72 ./Middlewares/Third_Party/FreeRTOS/Source/list.o
0x0000000008002c46 vListInsert 0x0000000008002c62 vListInsert
.text.uxListRemove .text.uxListRemove
0x0000000008002cb8 0x54 ./Middlewares/Third_Party/FreeRTOS/Source/list.o 0x0000000008002cd4 0x54 ./Middlewares/Third_Party/FreeRTOS/Source/list.o
0x0000000008002cb8 uxListRemove 0x0000000008002cd4 uxListRemove
.text.xQueueGenericReset .text.xQueueGenericReset
0x0000000008002d0c 0xd0 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o 0x0000000008002d28 0xd0 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o
0x0000000008002d0c xQueueGenericReset 0x0000000008002d28 xQueueGenericReset
.text.xQueueGenericCreateStatic .text.xQueueGenericCreateStatic
0x0000000008002ddc 0xf0 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o 0x0000000008002df8 0xf0 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o
0x0000000008002ddc xQueueGenericCreateStatic 0x0000000008002df8 xQueueGenericCreateStatic
.text.prvInitialiseNewQueue .text.prvInitialiseNewQueue
0x0000000008002ecc 0x46 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o 0x0000000008002ee8 0x46 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o
*fill* 0x0000000008002f12 0x2 *fill* 0x0000000008002f2e 0x2
.text.xQueueGenericSend .text.xQueueGenericSend
0x0000000008002f14 0x1fc ./Middlewares/Third_Party/FreeRTOS/Source/queue.o 0x0000000008002f30 0x1fc ./Middlewares/Third_Party/FreeRTOS/Source/queue.o
0x0000000008002f14 xQueueGenericSend 0x0000000008002f30 xQueueGenericSend
.text.xQueueGenericSendFromISR .text.xQueueGenericSendFromISR
0x0000000008003110 0x136 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o 0x000000000800312c 0x136 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o
0x0000000008003110 xQueueGenericSendFromISR 0x000000000800312c xQueueGenericSendFromISR
*fill* 0x0000000008003246 0x2 *fill* 0x0000000008003262 0x2
.text.xQueueReceive .text.xQueueReceive
0x0000000008003248 0x1c0 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o 0x0000000008003264 0x1c0 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o
0x0000000008003248 xQueueReceive 0x0000000008003264 xQueueReceive
.text.prvCopyDataToQueue .text.prvCopyDataToQueue
0x0000000008003408 0xd4 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o 0x0000000008003424 0xd4 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o
.text.prvCopyDataFromQueue .text.prvCopyDataFromQueue
0x00000000080034dc 0x4c ./Middlewares/Third_Party/FreeRTOS/Source/queue.o 0x00000000080034f8 0x4c ./Middlewares/Third_Party/FreeRTOS/Source/queue.o
.text.prvUnlockQueue .text.prvUnlockQueue
0x0000000008003528 0xa4 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o 0x0000000008003544 0xa4 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o
.text.prvIsQueueEmpty .text.prvIsQueueEmpty
0x00000000080035cc 0x2c ./Middlewares/Third_Party/FreeRTOS/Source/queue.o 0x00000000080035e8 0x2c ./Middlewares/Third_Party/FreeRTOS/Source/queue.o
.text.prvIsQueueFull .text.prvIsQueueFull
0x00000000080035f8 0x30 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o 0x0000000008003614 0x30 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o
.text.vQueueAddToRegistry .text.vQueueAddToRegistry
0x0000000008003628 0x54 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o 0x0000000008003644 0x54 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o
0x0000000008003628 vQueueAddToRegistry 0x0000000008003644 vQueueAddToRegistry
.text.vQueueWaitForMessageRestricted .text.vQueueWaitForMessageRestricted
0x000000000800367c 0x68 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o 0x0000000008003698 0x68 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o
0x000000000800367c vQueueWaitForMessageRestricted 0x0000000008003698 vQueueWaitForMessageRestricted
.text.xTaskCreateStatic .text.xTaskCreateStatic
0x00000000080036e4 0xba ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x0000000008003700 0xba ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
0x00000000080036e4 xTaskCreateStatic 0x0000000008003700 xTaskCreateStatic
.text.xTaskCreate .text.xTaskCreate
0x000000000800379e 0x8a ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x00000000080037ba 0x8a ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
0x000000000800379e xTaskCreate 0x00000000080037ba xTaskCreate
.text.prvInitialiseNewTask .text.prvInitialiseNewTask
0x0000000008003828 0x14c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x0000000008003844 0x14c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
.text.prvAddNewTaskToReadyList .text.prvAddNewTaskToReadyList
0x0000000008003974 0xe0 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x0000000008003990 0xe0 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
.text.vTaskDelay .text.vTaskDelay
0x0000000008003a54 0x68 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x0000000008003a70 0x68 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
0x0000000008003a54 vTaskDelay 0x0000000008003a70 vTaskDelay
.text.vTaskStartScheduler .text.vTaskStartScheduler
0x0000000008003abc 0xe0 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x0000000008003ad8 0xe0 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
0x0000000008003abc vTaskStartScheduler 0x0000000008003ad8 vTaskStartScheduler
.text.vTaskSuspendAll .text.vTaskSuspendAll
0x0000000008003b9c 0x1c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x0000000008003bb8 0x1c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
0x0000000008003b9c vTaskSuspendAll 0x0000000008003bb8 vTaskSuspendAll
.text.xTaskResumeAll .text.xTaskResumeAll
0x0000000008003bb8 0x13c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x0000000008003bd4 0x13c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
0x0000000008003bb8 xTaskResumeAll 0x0000000008003bd4 xTaskResumeAll
.text.xTaskGetTickCount .text.xTaskGetTickCount
0x0000000008003cf4 0x20 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x0000000008003d10 0x20 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
0x0000000008003cf4 xTaskGetTickCount 0x0000000008003d10 xTaskGetTickCount
.text.xTaskIncrementTick .text.xTaskIncrementTick
0x0000000008003d14 0x174 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x0000000008003d30 0x174 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
0x0000000008003d14 xTaskIncrementTick 0x0000000008003d30 xTaskIncrementTick
.text.vTaskSwitchContext .text.vTaskSwitchContext
0x0000000008003e88 0xc8 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x0000000008003ea4 0xc8 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
0x0000000008003e88 vTaskSwitchContext 0x0000000008003ea4 vTaskSwitchContext
.text.vTaskPlaceOnEventList .text.vTaskPlaceOnEventList
0x0000000008003f50 0x48 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x0000000008003f6c 0x48 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
0x0000000008003f50 vTaskPlaceOnEventList 0x0000000008003f6c vTaskPlaceOnEventList
.text.vTaskPlaceOnEventListRestricted .text.vTaskPlaceOnEventListRestricted
0x0000000008003f98 0x58 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x0000000008003fb4 0x58 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
0x0000000008003f98 vTaskPlaceOnEventListRestricted 0x0000000008003fb4 vTaskPlaceOnEventListRestricted
.text.xTaskRemoveFromEventList .text.xTaskRemoveFromEventList
0x0000000008003ff0 0xc8 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x000000000800400c 0xc8 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
0x0000000008003ff0 xTaskRemoveFromEventList 0x000000000800400c xTaskRemoveFromEventList
.text.vTaskInternalSetTimeOutState .text.vTaskInternalSetTimeOutState
0x00000000080040b8 0x2c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x00000000080040d4 0x2c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
0x00000000080040b8 vTaskInternalSetTimeOutState 0x00000000080040d4 vTaskInternalSetTimeOutState
.text.xTaskCheckForTimeOut .text.xTaskCheckForTimeOut
0x00000000080040e4 0xc4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x0000000008004100 0xc4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
0x00000000080040e4 xTaskCheckForTimeOut 0x0000000008004100 xTaskCheckForTimeOut
.text.vTaskMissedYield .text.vTaskMissedYield
0x00000000080041a8 0x18 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x00000000080041c4 0x18 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
0x00000000080041a8 vTaskMissedYield 0x00000000080041c4 vTaskMissedYield
.text.prvIdleTask .text.prvIdleTask
0x00000000080041c0 0x30 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x00000000080041dc 0x30 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
.text.prvInitialiseTaskLists .text.prvInitialiseTaskLists
0x00000000080041f0 0x80 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x000000000800420c 0x80 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
.text.prvCheckTasksWaitingTermination .text.prvCheckTasksWaitingTermination
0x0000000008004270 0x5c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x000000000800428c 0x5c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
.text.prvDeleteTCB .text.prvDeleteTCB
0x00000000080042cc 0x68 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x00000000080042e8 0x68 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
.text.prvResetNextTaskUnblockTime .text.prvResetNextTaskUnblockTime
0x0000000008004334 0x40 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x0000000008004350 0x40 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
.text.xTaskGetSchedulerState .text.xTaskGetSchedulerState
0x0000000008004374 0x3c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x0000000008004390 0x3c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
0x0000000008004374 xTaskGetSchedulerState 0x0000000008004390 xTaskGetSchedulerState
.text.xTaskPriorityDisinherit .text.xTaskPriorityDisinherit
0x00000000080043b0 0xdc ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x00000000080043cc 0xdc ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
0x00000000080043b0 xTaskPriorityDisinherit 0x00000000080043cc xTaskPriorityDisinherit
.text.prvAddCurrentTaskToDelayedList .text.prvAddCurrentTaskToDelayedList
0x000000000800448c 0xa8 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o 0x00000000080044a8 0xa8 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
.text.xTimerCreateTimerTask .text.xTimerCreateTimerTask
0x0000000008004534 0x90 ./Middlewares/Third_Party/FreeRTOS/Source/timers.o 0x0000000008004550 0x90 ./Middlewares/Third_Party/FreeRTOS/Source/timers.o
0x0000000008004534 xTimerCreateTimerTask 0x0000000008004550 xTimerCreateTimerTask
.text.xTimerGenericCommand .text.xTimerGenericCommand
0x00000000080045c4 0x9c ./Middlewares/Third_Party/FreeRTOS/Source/timers.o 0x00000000080045e0 0x9c ./Middlewares/Third_Party/FreeRTOS/Source/timers.o
0x00000000080045c4 xTimerGenericCommand 0x00000000080045e0 xTimerGenericCommand
.text.prvProcessExpiredTimer .text.prvProcessExpiredTimer
0x0000000008004660 0x98 ./Middlewares/Third_Party/FreeRTOS/Source/timers.o 0x000000000800467c 0x98 ./Middlewares/Third_Party/FreeRTOS/Source/timers.o
.text.prvTimerTask .text.prvTimerTask
0x00000000080046f8 0x24 ./Middlewares/Third_Party/FreeRTOS/Source/timers.o 0x0000000008004714 0x24 ./Middlewares/Third_Party/FreeRTOS/Source/timers.o
.text.prvProcessTimerOrBlockTask .text.prvProcessTimerOrBlockTask
0x000000000800471c 0x9c ./Middlewares/Third_Party/FreeRTOS/Source/timers.o 0x0000000008004738 0x9c ./Middlewares/Third_Party/FreeRTOS/Source/timers.o
.text.prvGetNextExpireTime .text.prvGetNextExpireTime
0x00000000080047b8 0x48 ./Middlewares/Third_Party/FreeRTOS/Source/timers.o 0x00000000080047d4 0x48 ./Middlewares/Third_Party/FreeRTOS/Source/timers.o
.text.prvSampleTimeNow .text.prvSampleTimeNow
0x0000000008004800 0x40 ./Middlewares/Third_Party/FreeRTOS/Source/timers.o 0x000000000800481c 0x40 ./Middlewares/Third_Party/FreeRTOS/Source/timers.o
.text.prvInsertTimerInActiveList .text.prvInsertTimerInActiveList
0x0000000008004840 0x84 ./Middlewares/Third_Party/FreeRTOS/Source/timers.o 0x000000000800485c 0x84 ./Middlewares/Third_Party/FreeRTOS/Source/timers.o
.text.prvProcessReceivedCommands .text.prvProcessReceivedCommands
0x00000000080048c4 0x1c4 ./Middlewares/Third_Party/FreeRTOS/Source/timers.o 0x00000000080048e0 0x1c4 ./Middlewares/Third_Party/FreeRTOS/Source/timers.o
.text.prvSwitchTimerLists .text.prvSwitchTimerLists
0x0000000008004a88 0xc8 ./Middlewares/Third_Party/FreeRTOS/Source/timers.o 0x0000000008004aa4 0xc8 ./Middlewares/Third_Party/FreeRTOS/Source/timers.o
.text.prvCheckForValidListAndQueue .text.prvCheckForValidListAndQueue
0x0000000008004b50 0x80 ./Middlewares/Third_Party/FreeRTOS/Source/timers.o 0x0000000008004b6c 0x80 ./Middlewares/Third_Party/FreeRTOS/Source/timers.o
.text.pxPortInitialiseStack .text.pxPortInitialiseStack
0x0000000008004bd0 0x68 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o 0x0000000008004bec 0x68 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o
0x0000000008004bd0 pxPortInitialiseStack 0x0000000008004bec pxPortInitialiseStack
.text.prvTaskExitError .text.prvTaskExitError
0x0000000008004c38 0x58 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o 0x0000000008004c54 0x58 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o
*fill* 0x0000000008004cac 0x4
.text.SVC_Handler .text.SVC_Handler
0x0000000008004c90 0x28 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o 0x0000000008004cb0 0x28 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o
0x0000000008004c90 SVC_Handler 0x0000000008004cb0 SVC_Handler
.text.prvPortStartFirstTask .text.prvPortStartFirstTask
0x0000000008004cb8 0x28 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o 0x0000000008004cd8 0x28 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o
.text.xPortStartScheduler .text.xPortStartScheduler
0x0000000008004ce0 0x144 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o 0x0000000008004d00 0x144 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o
0x0000000008004ce0 xPortStartScheduler 0x0000000008004d00 xPortStartScheduler
.text.vPortEnterCritical .text.vPortEnterCritical
0x0000000008004e24 0x60 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o 0x0000000008004e44 0x60 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o
0x0000000008004e24 vPortEnterCritical 0x0000000008004e44 vPortEnterCritical
.text.vPortExitCritical .text.vPortExitCritical
0x0000000008004e84 0x54 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o 0x0000000008004ea4 0x54 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o
0x0000000008004e84 vPortExitCritical 0x0000000008004ea4 vPortExitCritical
*fill* 0x0000000008004ed8 0x8 *fill* 0x0000000008004ef8 0x8
.text.PendSV_Handler .text.PendSV_Handler
0x0000000008004ee0 0x68 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o 0x0000000008004f00 0x68 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o
0x0000000008004ee0 PendSV_Handler 0x0000000008004f00 PendSV_Handler
.text.xPortSysTickHandler .text.xPortSysTickHandler
0x0000000008004f48 0x44 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o 0x0000000008004f68 0x44 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o
0x0000000008004f48 xPortSysTickHandler 0x0000000008004f68 xPortSysTickHandler
.text.vPortSetupTimerInterrupt .text.vPortSetupTimerInterrupt
0x0000000008004f8c 0x48 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o 0x0000000008004fac 0x48 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o
0x0000000008004f8c vPortSetupTimerInterrupt 0x0000000008004fac vPortSetupTimerInterrupt
.text.vPortEnableVFP .text.vPortEnableVFP
0x0000000008004fd4 0x14 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o 0x0000000008004ff4 0x14 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o
.text.vPortValidateInterruptPriority .text.vPortValidateInterruptPriority
0x0000000008004fe8 0x80 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o 0x0000000008005008 0x80 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o
0x0000000008004fe8 vPortValidateInterruptPriority 0x0000000008005008 vPortValidateInterruptPriority
.text.pvPortMalloc .text.pvPortMalloc
0x0000000008005068 0x198 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o 0x0000000008005088 0x198 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o
0x0000000008005068 pvPortMalloc 0x0000000008005088 pvPortMalloc
.text.vPortFree .text.vPortFree
0x0000000008005200 0xc4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o 0x0000000008005220 0xc4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o
0x0000000008005200 vPortFree 0x0000000008005220 vPortFree
.text.prvHeapInit .text.prvHeapInit
0x00000000080052c4 0xc4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o 0x00000000080052e4 0xc4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o
.text.prvInsertBlockIntoFreeList .text.prvInsertBlockIntoFreeList
0x0000000008005388 0xb4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o 0x00000000080053a8 0xb4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o
.text.memset 0x000000000800543c 0x10 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-memset.o) .text.memset 0x000000000800545c 0x10 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-memset.o)
0x000000000800543c memset 0x000000000800545c memset
.text._reclaim_reent .text._reclaim_reent
0x000000000800544c 0xac C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-reent.o) 0x000000000800546c 0xac C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-reent.o)
0x000000000800544c _reclaim_reent 0x000000000800546c _reclaim_reent
.text.__libc_init_array .text.__libc_init_array
0x00000000080054f8 0x48 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-init.o) 0x0000000008005518 0x48 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-init.o)
0x00000000080054f8 __libc_init_array 0x0000000008005518 __libc_init_array
.text.__retarget_lock_acquire_recursive .text.__retarget_lock_acquire_recursive
0x0000000008005540 0x2 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-lock.o) 0x0000000008005560 0x2 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-lock.o)
0x0000000008005540 __retarget_lock_acquire_recursive 0x0000000008005560 __retarget_lock_acquire_recursive
.text.__retarget_lock_release_recursive .text.__retarget_lock_release_recursive
0x0000000008005542 0x2 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-lock.o) 0x0000000008005562 0x2 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-lock.o)
0x0000000008005542 __retarget_lock_release_recursive 0x0000000008005562 __retarget_lock_release_recursive
.text.memcpy 0x0000000008005544 0x1c C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-memcpy-stub.o) .text.memcpy 0x0000000008005564 0x1c C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-memcpy-stub.o)
0x0000000008005544 memcpy 0x0000000008005564 memcpy
.text._free_r 0x0000000008005560 0x98 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-freer.o) .text._free_r 0x0000000008005580 0x98 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-freer.o)
0x0000000008005560 _free_r 0x0000000008005580 _free_r
.text.__malloc_lock .text.__malloc_lock
0x00000000080055f8 0xc C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-mlock.o) 0x0000000008005618 0xc C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-mlock.o)
0x00000000080055f8 __malloc_lock 0x0000000008005618 __malloc_lock
.text.__malloc_unlock .text.__malloc_unlock
0x0000000008005604 0xc C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-mlock.o) 0x0000000008005624 0xc C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(libc_a-mlock.o)
0x0000000008005604 __malloc_unlock 0x0000000008005624 __malloc_unlock
*(.glue_7) *(.glue_7)
.glue_7 0x0000000008005610 0x0 linker stubs .glue_7 0x0000000008005630 0x0 linker stubs
*(.glue_7t) *(.glue_7t)
.glue_7t 0x0000000008005610 0x0 linker stubs .glue_7t 0x0000000008005630 0x0 linker stubs
*(.eh_frame) *(.eh_frame)
.eh_frame 0x0000000008005610 0x0 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard/crtbegin.o .eh_frame 0x0000000008005630 0x0 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard/crtbegin.o
*(.init) *(.init)
.init 0x0000000008005610 0x4 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard/crti.o .init 0x0000000008005630 0x4 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard/crti.o
0x0000000008005610 _init 0x0000000008005630 _init
.init 0x0000000008005614 0x8 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard/crtn.o .init 0x0000000008005634 0x8 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard/crtn.o
*(.fini) *(.fini)
.fini 0x000000000800561c 0x4 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard/crti.o .fini 0x000000000800563c 0x4 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard/crti.o
0x000000000800561c _fini 0x000000000800563c _fini
.fini 0x0000000008005620 0x8 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard/crtn.o .fini 0x0000000008005640 0x8 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard/crtn.o
0x0000000008005628 . = ALIGN (0x4) 0x0000000008005648 . = ALIGN (0x4)
0x0000000008005628 _etext = . 0x0000000008005648 _etext = .
.vfp11_veneer 0x0000000008005628 0x0 .vfp11_veneer 0x0000000008005648 0x0
.vfp11_veneer 0x0000000008005628 0x0 linker stubs .vfp11_veneer 0x0000000008005648 0x0 linker stubs
.v4_bx 0x0000000008005628 0x0 .v4_bx 0x0000000008005648 0x0
.v4_bx 0x0000000008005628 0x0 linker stubs .v4_bx 0x0000000008005648 0x0 linker stubs
.iplt 0x0000000008005628 0x0 .iplt 0x0000000008005648 0x0
.iplt 0x0000000008005628 0x0 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard/crtbegin.o .iplt 0x0000000008005648 0x0 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard/crtbegin.o
.rodata 0x0000000008005628 0x90 .rodata 0x0000000008005648 0x90
0x0000000008005628 . = ALIGN (0x4) 0x0000000008005648 . = ALIGN (0x4)
*(.rodata) *(.rodata)
.rodata 0x0000000008005628 0x18 ./Core/Src/main.o .rodata 0x0000000008005648 0x18 ./Core/Src/main.o
.rodata 0x0000000008005640 0x5 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .rodata 0x0000000008005660 0x5 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
*fill* 0x0000000008005645 0x3 *fill* 0x0000000008005665 0x3
.rodata 0x0000000008005648 0xd ./Middlewares/Third_Party/FreeRTOS/Source/timers.o .rodata 0x0000000008005668 0xd ./Middlewares/Third_Party/FreeRTOS/Source/timers.o
*(.rodata*) *(.rodata*)
*fill* 0x0000000008005655 0x3 *fill* 0x0000000008005675 0x3
.rodata.mainTask_attributes .rodata.mainTask_attributes
0x0000000008005658 0x24 ./Core/Src/main.o 0x0000000008005678 0x24 ./Core/Src/main.o
0x0000000008005658 mainTask_attributes 0x0000000008005678 mainTask_attributes
.rodata.doorHandler_attributes .rodata.doorHandler_attributes
0x000000000800567c 0x24 ./Core/Src/main.o 0x000000000800569c 0x24 ./Core/Src/main.o
0x000000000800567c doorHandler_attributes 0x000000000800569c doorHandler_attributes
.rodata.AHBPrescTable .rodata.AHBPrescTable
0x00000000080056a0 0x10 ./Core/Src/system_stm32f4xx.o 0x00000000080056c0 0x10 ./Core/Src/system_stm32f4xx.o
0x00000000080056a0 AHBPrescTable 0x00000000080056c0 AHBPrescTable
.rodata.APBPrescTable .rodata.APBPrescTable
0x00000000080056b0 0x8 ./Core/Src/system_stm32f4xx.o 0x00000000080056d0 0x8 ./Core/Src/system_stm32f4xx.o
0x00000000080056b0 APBPrescTable 0x00000000080056d0 APBPrescTable
0x00000000080056b8 . = ALIGN (0x4) 0x00000000080056d8 . = ALIGN (0x4)
.ARM.extab 0x00000000080056b8 0x0 .ARM.extab 0x00000000080056d8 0x0
0x00000000080056b8 . = ALIGN (0x4) 0x00000000080056d8 . = ALIGN (0x4)
*(.ARM.extab* .gnu.linkonce.armextab.*) *(.ARM.extab* .gnu.linkonce.armextab.*)
0x00000000080056b8 . = ALIGN (0x4) 0x00000000080056d8 . = ALIGN (0x4)
.ARM 0x00000000080056b8 0x8 .ARM 0x00000000080056d8 0x8
0x00000000080056b8 . = ALIGN (0x4) 0x00000000080056d8 . = ALIGN (0x4)
0x00000000080056b8 __exidx_start = . 0x00000000080056d8 __exidx_start = .
*(.ARM.exidx*) *(.ARM.exidx*)
.ARM.exidx 0x00000000080056b8 0x8 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard\libgcc.a(_udivmoddi4.o) .ARM.exidx 0x00000000080056d8 0x8 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard\libgcc.a(_udivmoddi4.o)
0x00000000080056c0 __exidx_end = . 0x00000000080056e0 __exidx_end = .
0x00000000080056c0 . = ALIGN (0x4) 0x00000000080056e0 . = ALIGN (0x4)
.rel.dyn 0x00000000080056c0 0x0 .rel.dyn 0x00000000080056e0 0x0
.rel.iplt 0x00000000080056c0 0x0 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard/crtbegin.o .rel.iplt 0x00000000080056e0 0x0 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard/crtbegin.o
.preinit_array 0x00000000080056c0 0x0 .preinit_array 0x00000000080056e0 0x0
0x00000000080056c0 . = ALIGN (0x4) 0x00000000080056e0 . = ALIGN (0x4)
0x00000000080056c0 PROVIDE (__preinit_array_start = .) 0x00000000080056e0 PROVIDE (__preinit_array_start = .)
*(.preinit_array*) *(.preinit_array*)
0x00000000080056c0 PROVIDE (__preinit_array_end = .) 0x00000000080056e0 PROVIDE (__preinit_array_end = .)
0x00000000080056c0 . = ALIGN (0x4) 0x00000000080056e0 . = ALIGN (0x4)
.init_array 0x00000000080056c0 0x4 .init_array 0x00000000080056e0 0x4
0x00000000080056c0 . = ALIGN (0x4) 0x00000000080056e0 . = ALIGN (0x4)
0x00000000080056c0 PROVIDE (__init_array_start = .) 0x00000000080056e0 PROVIDE (__init_array_start = .)
*(SORT_BY_NAME(.init_array.*)) *(SORT_BY_NAME(.init_array.*))
*(.init_array*) *(.init_array*)
.init_array 0x00000000080056c0 0x4 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard/crtbegin.o .init_array 0x00000000080056e0 0x4 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard/crtbegin.o
0x00000000080056c4 PROVIDE (__init_array_end = .) 0x00000000080056e4 PROVIDE (__init_array_end = .)
0x00000000080056c4 . = ALIGN (0x4) 0x00000000080056e4 . = ALIGN (0x4)
.fini_array 0x00000000080056c4 0x4 .fini_array 0x00000000080056e4 0x4
0x00000000080056c4 . = ALIGN (0x4) 0x00000000080056e4 . = ALIGN (0x4)
[!provide] PROVIDE (__fini_array_start = .) [!provide] PROVIDE (__fini_array_start = .)
*(SORT_BY_NAME(.fini_array.*)) *(SORT_BY_NAME(.fini_array.*))
*(.fini_array*) *(.fini_array*)
.fini_array 0x00000000080056c4 0x4 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard/crtbegin.o .fini_array 0x00000000080056e4 0x4 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard/crtbegin.o
[!provide] PROVIDE (__fini_array_end = .) [!provide] PROVIDE (__fini_array_end = .)
0x00000000080056c8 . = ALIGN (0x4) 0x00000000080056e8 . = ALIGN (0x4)
0x00000000080056c8 _sidata = LOADADDR (.data) 0x00000000080056e8 _sidata = LOADADDR (.data)
.data 0x0000000020000000 0x60 load address 0x00000000080056c8 .data 0x0000000020000000 0x60 load address 0x00000000080056e8
0x0000000020000000 . = ALIGN (0x4) 0x0000000020000000 . = ALIGN (0x4)
0x0000000020000000 _sdata = . 0x0000000020000000 _sdata = .
*(.data) *(.data)
@ -5119,11 +5120,11 @@ LOAD C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext
0x0000000020000060 . = ALIGN (0x4) 0x0000000020000060 . = ALIGN (0x4)
0x0000000020000060 _edata = . 0x0000000020000060 _edata = .
.igot.plt 0x0000000020000060 0x0 load address 0x0000000008005728 .igot.plt 0x0000000020000060 0x0 load address 0x0000000008005748
.igot.plt 0x0000000020000060 0x0 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard/crtbegin.o .igot.plt 0x0000000020000060 0x0 C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_1.1.0.202305231506/tools/bin/../lib/gcc/arm-none-eabi/11.3.1/thumb/v7e-m+fp/hard/crtbegin.o
0x0000000020000060 . = ALIGN (0x4) 0x0000000020000060 . = ALIGN (0x4)
.bss 0x0000000020000060 0x4bf4 load address 0x0000000008005728 .bss 0x0000000020000060 0x4bf4 load address 0x0000000008005748
0x0000000020000060 _sbss = . 0x0000000020000060 _sbss = .
0x0000000020000060 __bss_start__ = _sbss 0x0000000020000060 __bss_start__ = _sbss
*(.bss) *(.bss)
@ -5274,7 +5275,7 @@ LOAD C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext
0x0000000020004c54 __bss_end__ = _ebss 0x0000000020004c54 __bss_end__ = _ebss
._user_heap_stack ._user_heap_stack
0x0000000020004c54 0x3004 load address 0x0000000008005728 0x0000000020004c54 0x3004 load address 0x0000000008005748
0x0000000020004c58 . = ALIGN (0x8) 0x0000000020004c58 . = ALIGN (0x8)
*fill* 0x0000000020004c54 0x4 *fill* 0x0000000020004c54 0x4
[!provide] PROVIDE (end = .) [!provide] PROVIDE (end = .)
@ -5569,27 +5570,27 @@ LOAD C:/ST/STM32CubeIDE_1.13.1/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext
.debug_macro 0x0000000000003164 0x233 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o .debug_macro 0x0000000000003164 0x233 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o
.debug_macro 0x0000000000003397 0x1c0 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o .debug_macro 0x0000000000003397 0x1c0 ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o
.debug_line 0x0000000000000000 0x157dd .debug_line 0x0000000000000000 0x157ed
.debug_line 0x0000000000000000 0xc25 ./Core/Src/main.o .debug_line 0x0000000000000000 0xc35 ./Core/Src/main.o
.debug_line 0x0000000000000c25 0x795 ./Core/Src/stm32f4xx_hal_msp.o .debug_line 0x0000000000000c35 0x795 ./Core/Src/stm32f4xx_hal_msp.o
.debug_line 0x00000000000013ba 0x7b4 ./Core/Src/stm32f4xx_hal_timebase_tim.o .debug_line 0x00000000000013ca 0x7b4 ./Core/Src/stm32f4xx_hal_timebase_tim.o
.debug_line 0x0000000000001b6e 0x7e3 ./Core/Src/stm32f4xx_it.o .debug_line 0x0000000000001b7e 0x7e3 ./Core/Src/stm32f4xx_it.o
.debug_line 0x0000000000002351 0x7c8 ./Core/Src/system_stm32f4xx.o .debug_line 0x0000000000002361 0x7c8 ./Core/Src/system_stm32f4xx.o
.debug_line 0x0000000000002b19 0x7a ./Core/Startup/startup_stm32f411retx.o .debug_line 0x0000000000002b29 0x7a ./Core/Startup/startup_stm32f411retx.o
.debug_line 0x0000000000002b93 0xa2e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o .debug_line 0x0000000000002ba3 0xa2e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o
.debug_line 0x00000000000035c1 0xcdd ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .debug_line 0x00000000000035d1 0xcdd ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o
.debug_line 0x000000000000429e 0xb66 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o .debug_line 0x00000000000042ae 0xb66 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o
.debug_line 0x0000000000004e04 0xda7 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o .debug_line 0x0000000000004e14 0xda7 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o
.debug_line 0x0000000000005bab 0x34f4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o .debug_line 0x0000000000005bbb 0x34f4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o
.debug_line 0x000000000000909f 0x19c6 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o .debug_line 0x00000000000090af 0x19c6 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o
.debug_line 0x000000000000aa65 0x2ad0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o .debug_line 0x000000000000aa75 0x2ad0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o
.debug_line 0x000000000000d535 0x244f ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.o .debug_line 0x000000000000d545 0x244f ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.o
.debug_line 0x000000000000f984 0x797 ./Middlewares/Third_Party/FreeRTOS/Source/list.o .debug_line 0x000000000000f994 0x797 ./Middlewares/Third_Party/FreeRTOS/Source/list.o
.debug_line 0x000000000001011b 0x1761 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o .debug_line 0x000000000001012b 0x1761 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o
.debug_line 0x000000000001187c 0x1e51 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .debug_line 0x000000000001188c 0x1e51 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o
.debug_line 0x00000000000136cd 0xdfb ./Middlewares/Third_Party/FreeRTOS/Source/timers.o .debug_line 0x00000000000136dd 0xdfb ./Middlewares/Third_Party/FreeRTOS/Source/timers.o
.debug_line 0x00000000000144c8 0x957 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o .debug_line 0x00000000000144d8 0x957 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o
.debug_line 0x0000000000014e1f 0x9be ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o .debug_line 0x0000000000014e2f 0x9be ./Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.o
.debug_str 0x0000000000000000 0x9856e .debug_str 0x0000000000000000 0x9856e
.debug_str 0x0000000000000000 0x8fada ./Core/Src/main.o .debug_str 0x0000000000000000 0x8fada ./Core/Src/main.o

View File

@ -177,7 +177,8 @@ RCC.VCOOutputFreq_Value=336000000
RCC.VcooutputI2S=96000000 RCC.VcooutputI2S=96000000
SH.GPXTI13.0=GPIO_EXTI13 SH.GPXTI13.0=GPIO_EXTI13
SH.GPXTI13.ConfNb=1 SH.GPXTI13.ConfNb=1
USART2.IPParameters=VirtualMode,WordLength USART2.BaudRate=9600
USART2.IPParameters=VirtualMode,WordLength,BaudRate
USART2.VirtualMode=VM_ASYNC USART2.VirtualMode=VM_ASYNC
USART2.WordLength=WORDLENGTH_8B USART2.WordLength=WORDLENGTH_8B
VP_FREERTOS_VS_CMSIS_V2.Mode=CMSIS_V2 VP_FREERTOS_VS_CMSIS_V2.Mode=CMSIS_V2

BIN
face_recognition/boom.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

View File

@ -0,0 +1,15 @@
import cv2
cam = cv2.VideoCapture(0)
while True:
check, frame = cam.read()
cv2.imshow('video', frame)
key = cv2.waitKey(1)
if key == 27:
break
cam.release()
cv2.destroyAllWindows()

View File

@ -0,0 +1,102 @@
import face_recognition as face
import numpy as np
import cv2
#ORIGINAL_CODE_CREDIT: https://github.com/ageitgey/face_recognition/blob/master/examples/facerec_from_webcam_faster.py
#ดึงวิดีโอตัวอย่างเข้ามา, ถ้าต้องการใช้webcamให้ใส่เป็น
video_capture = cv2.VideoCapture(0)
#ใบหน้าคนที่ต้องการรู้จำเป็นreference #คนที่1
boom_image = face.load_image_file("boom.jpg")
boom_face_encoding = face.face_encodings(boom_image)[0]
tat_image = face.load_image_file("tat.jpg")
tat_face_encoding = face.face_encodings(tat_image)[0]
'''
#ใบหน้าคนที่ต้องการรู้จำเป็นreference #คนที่2
oat_image = face.load_image_file("oat.jpg")
oat_face_encoding = face.face_encodings(oat_image)[0]
'''
#ประกาศตัวแปร
face_locations = []
face_encodings = []
face_names = []
face_percent = []
#ตัวแปรนี้ใช้สำหรับคิดเฟรมเว้นเฟรมเพื่อเพิ่มfps
process_this_frame = True
known_face_encodings = [boom_face_encoding, tat_face_encoding]
known_face_names = ["BOOM", "TAT"]
#loopคำนวณแต่ละเฟรมของวิดีโอ
while True:
#อ่านค่าแต่ละเฟรมจากวิดีโอ
ret, frame = video_capture.read()
if ret:
#ลดขนาดสองเท่าเพื่อเพิ่มfps
small_frame = cv2.resize(frame, (0,0), fx=0.5,fy=0.5)
#เปลี่ยน bgrเป็น rgb
#rgb_small_frame = small_frame[:,:,::-1]
rgb_small_frame = np.ascontiguousarray(small_frame[:, :, ::-1])
face_names = []
face_percent = []
if process_this_frame:
#ค้นหาตำแหน่งใบหน้าในเฟรม
face_locations = face.face_locations(rgb_small_frame)
#นำใบหน้ามาหาfeaturesต่างๆที่เป็นเอกลักษณ์
face_encodings = face.face_encodings(rgb_small_frame, face_locations)
#เทียบแต่ละใบหน้า
for face_encoding in face_encodings:
face_distances = face.face_distance(known_face_encodings, face_encoding)
best = np.argmin(face_distances)
face_percent_value = 1-face_distances[best]
#กรองใบหน้าที่ความมั่นใจ50% ปล.สามารถลองเปลี่ยนได้
if face_percent_value >= 0.4:
name = known_face_names[best]
percent = round(face_percent_value*100,2)
face_percent.append(percent)
else:
name = "UNKNOWN"
face_percent.append(0)
face_names.append(name)
#วาดกล่องและtextเมื่อแสดงผลออกมาออกมา
for (top,right,bottom, left), name, percent in zip(face_locations, face_names, face_percent):
top*= 2
right*= 2
bottom*= 2
left*= 2
if name == "UNKNOWN":
color = [46,2,209]
else:
color = [255,102,51]
cv2.rectangle(frame, (left,top), (right,bottom), color, 2)
cv2.rectangle(frame, (left-1, top -30), (right+1,top), color, cv2.FILLED)
cv2.rectangle(frame, (left-1, bottom), (right+1,bottom+30), color, cv2.FILLED)
font = cv2.FONT_HERSHEY_DUPLEX
cv2.putText(frame, name, (left+6, top-6), font, 0.6, (255,255,255), 1)
cv2.putText(frame, "MATCH: "+str(percent)+"%", (left+6, bottom+23), font, 0.6, (255,255,255), 1)
#สลับค่าเป็นค่าตรงข้ามเพื่อให้คิดเฟรมเว้นเฟรม
process_this_frame = not process_this_frame
#แสดงผลลัพท์ออกมา
cv2.imshow("Video", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
#ล้างค่าต่างๆเมื่อปิดโปรแกรม
video_capture.release()
cv2.destroyAllWindows()

View File

@ -0,0 +1,105 @@
import face_recognition
import cv2
import numpy as np
import matplotlib.pyplot as plt
# This is a demo of running face recognition on live video from your webcam. It's a little more complicated than the
# other example, but it includes some basic performance tweaks to make things run a lot faster:
# 1. Process each video frame at 1/4 resolution (though still display it at full resolution)
# 2. Only detect faces in every other frame of video.
# PLEASE NOTE: This example requires OpenCV (the `cv2` library) to be installed only to read from your webcam.
# OpenCV is *not* required to use the face_recognition library. It's only required if you want to run this
# specific demo. If you have trouble installing it, try any of the other demos that don't require it instead.
# Get a reference to webcam #0 (the default one)
video_capture = cv2.VideoCapture(0)
# Load a sample picture and learn how to recognize it.
PUN_image = face_recognition.load_image_file("PUN.jpg")
PUN_face_encoding = face_recognition.face_encodings(PUN_image)[0]
# Load a second sample picture and learn how to recognize it.
TAT_image = face_recognition.load_image_file("tat.jpg")
TAT_face_encoding = face_recognition.face_encodings(TAT_image)[0]
# Create arrays of known face encodings and their names
known_face_encodings = [
PUN_face_encoding,
TAT_face_encoding
]
known_face_names = [
"PUN",
"TAT"
]
# Initialize some variables
face_locations = []
face_encodings = []
face_names = []
process_this_frame = True
while True:
# Grab a single frame of video
ret, frame = video_capture.read()
# Only process every other frame of video to save time
if process_this_frame:
# Resize frame of video to 1/4 size for faster face recognition processing
small_frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25)
# Convert the image from BGR color (which OpenCV uses) to RGB color (which face_recognition uses)
rgb_small_frame = np.ascontiguousarray(small_frame[:, :, ::-1])
# Find all the faces and face encodings in the current frame of video
face_locations = face_recognition.face_locations(rgb_small_frame)
face_encodings = face_recognition.face_encodings(rgb_small_frame, face_locations)
face_names = []
for face_encoding in face_encodings:
# See if the face is a match for the known face(s)
matches = face_recognition.compare_faces(known_face_encodings, face_encoding)
name = "Unknown"
# # If a match was found in known_face_encodings, just use the first one.
# if True in matches:
# first_match_index = matches.index(True)
# name = known_face_names[first_match_index]
# Or instead, use the known face with the smallest distance to the new face
face_distances = face_recognition.face_distance(known_face_encodings, face_encoding)
best_match_index = np.argmin(face_distances)
if matches[best_match_index]:
name = known_face_names[best_match_index]
face_names.append(name)
process_this_frame = not process_this_frame
# Display the results
for (top, right, bottom, left), name in zip(face_locations, face_names):
# Scale back up face locations since the frame we detected in was scaled to 1/4 size
top *= 4
right *= 4
bottom *= 4
left *= 4
# Draw a box around the face
cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)
# Draw a label with a name below the face
cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 0, 255), cv2.FILLED)
font = cv2.FONT_HERSHEY_DUPLEX
cv2.putText(frame, name, (left + 6, bottom - 6), font, 1.0, (255, 255, 255), 1)
# Display the resulting image
cv2.imshow('Video', frame)
# Hit 'q' on the keyboard to quit!
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# Release handle to the webcam
video_capture.release()
cv2.destroyAllWindows()

BIN
face_recognition/tat.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB