commit_facial_recog
This commit is contained in:
		
							parent
							
								
									b1a4922b60
								
							
						
					
					
						commit
						b011033330
					
				
					 46 changed files with 31598 additions and 81 deletions
				
			
		
							
								
								
									
										173
									
								
								access_control_stm32/Core/Inc/FreeRTOSConfig.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										173
									
								
								access_control_stm32/Core/Inc/FreeRTOSConfig.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,173 @@
 | 
			
		|||
/* USER CODE BEGIN Header */
 | 
			
		||||
/*
 | 
			
		||||
 * FreeRTOS Kernel V10.3.1
 | 
			
		||||
 * Portion Copyright (C) 2017 Amazon.com, Inc. or its affiliates.  All Rights Reserved.
 | 
			
		||||
 * Portion Copyright (C) 2019 StMicroelectronics, Inc.  All Rights Reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a copy of
 | 
			
		||||
 * this software and associated documentation files (the "Software"), to deal in
 | 
			
		||||
 * the Software without restriction, including without limitation the rights to
 | 
			
		||||
 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
 | 
			
		||||
 * the Software, and to permit persons to whom the Software is furnished to do so,
 | 
			
		||||
 * subject to the following conditions:
 | 
			
		||||
 *
 | 
			
		||||
 * The above copyright notice and this permission notice shall be included in all
 | 
			
		||||
 * copies or substantial portions of the Software.
 | 
			
		||||
 *
 | 
			
		||||
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 | 
			
		||||
 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 | 
			
		||||
 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 | 
			
		||||
 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 | 
			
		||||
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 *
 | 
			
		||||
 * http://www.FreeRTOS.org
 | 
			
		||||
 * http://aws.amazon.com/freertos
 | 
			
		||||
 *
 | 
			
		||||
 * 1 tab == 4 spaces!
 | 
			
		||||
 */
 | 
			
		||||
/* USER CODE END Header */
 | 
			
		||||
 | 
			
		||||
#ifndef FREERTOS_CONFIG_H
 | 
			
		||||
#define FREERTOS_CONFIG_H
 | 
			
		||||
 | 
			
		||||
/*-----------------------------------------------------------
 | 
			
		||||
 * Application specific definitions.
 | 
			
		||||
 *
 | 
			
		||||
 * These definitions should be adjusted for your particular hardware and
 | 
			
		||||
 * application requirements.
 | 
			
		||||
 *
 | 
			
		||||
 * These parameters and more are described within the 'configuration' section of the
 | 
			
		||||
 * FreeRTOS API documentation available on the FreeRTOS.org web site.
 | 
			
		||||
 *
 | 
			
		||||
 * See http://www.freertos.org/a00110.html
 | 
			
		||||
 *----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
/* USER CODE BEGIN Includes */
 | 
			
		||||
/* Section where include file can be added */
 | 
			
		||||
/* USER CODE END Includes */
 | 
			
		||||
 | 
			
		||||
/* Ensure definitions are only used by the compiler, and not by the assembler. */
 | 
			
		||||
#if defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__)
 | 
			
		||||
  #include <stdint.h>
 | 
			
		||||
  extern uint32_t SystemCoreClock;
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef CMSIS_device_header
 | 
			
		||||
#define CMSIS_device_header "stm32f4xx.h"
 | 
			
		||||
#endif /* CMSIS_device_header */
 | 
			
		||||
 | 
			
		||||
#define configENABLE_FPU                         0
 | 
			
		||||
#define configENABLE_MPU                         0
 | 
			
		||||
 | 
			
		||||
#define configUSE_PREEMPTION                     1
 | 
			
		||||
#define configSUPPORT_STATIC_ALLOCATION          1
 | 
			
		||||
#define configSUPPORT_DYNAMIC_ALLOCATION         1
 | 
			
		||||
#define configUSE_IDLE_HOOK                      0
 | 
			
		||||
#define configUSE_TICK_HOOK                      0
 | 
			
		||||
#define configCPU_CLOCK_HZ                       ( SystemCoreClock )
 | 
			
		||||
#define configTICK_RATE_HZ                       ((TickType_t)1000)
 | 
			
		||||
#define configMAX_PRIORITIES                     ( 56 )
 | 
			
		||||
#define configMINIMAL_STACK_SIZE                 ((uint16_t)128)
 | 
			
		||||
#define configTOTAL_HEAP_SIZE                    ((size_t)15360)
 | 
			
		||||
#define configMAX_TASK_NAME_LEN                  ( 16 )
 | 
			
		||||
#define configUSE_TRACE_FACILITY                 1
 | 
			
		||||
#define configUSE_16_BIT_TICKS                   0
 | 
			
		||||
#define configUSE_MUTEXES                        1
 | 
			
		||||
#define configQUEUE_REGISTRY_SIZE                8
 | 
			
		||||
#define configUSE_RECURSIVE_MUTEXES              1
 | 
			
		||||
#define configUSE_COUNTING_SEMAPHORES            1
 | 
			
		||||
#define configUSE_PORT_OPTIMISED_TASK_SELECTION  0
 | 
			
		||||
/* USER CODE BEGIN MESSAGE_BUFFER_LENGTH_TYPE */
 | 
			
		||||
/* Defaults to size_t for backward compatibility, but can be changed
 | 
			
		||||
   if lengths will always be less than the number of bytes in a size_t. */
 | 
			
		||||
#define configMESSAGE_BUFFER_LENGTH_TYPE         size_t
 | 
			
		||||
/* USER CODE END MESSAGE_BUFFER_LENGTH_TYPE */
 | 
			
		||||
 | 
			
		||||
/* Co-routine definitions. */
 | 
			
		||||
#define configUSE_CO_ROUTINES                    0
 | 
			
		||||
#define configMAX_CO_ROUTINE_PRIORITIES          ( 2 )
 | 
			
		||||
 | 
			
		||||
/* Software timer definitions. */
 | 
			
		||||
#define configUSE_TIMERS                         1
 | 
			
		||||
#define configTIMER_TASK_PRIORITY                ( 2 )
 | 
			
		||||
#define configTIMER_QUEUE_LENGTH                 10
 | 
			
		||||
#define configTIMER_TASK_STACK_DEPTH             256
 | 
			
		||||
 | 
			
		||||
/* The following flag must be enabled only when using newlib */
 | 
			
		||||
#define configUSE_NEWLIB_REENTRANT          1
 | 
			
		||||
 | 
			
		||||
/* CMSIS-RTOS V2 flags */
 | 
			
		||||
#define configUSE_OS2_THREAD_SUSPEND_RESUME  1
 | 
			
		||||
#define configUSE_OS2_THREAD_ENUMERATE       1
 | 
			
		||||
#define configUSE_OS2_EVENTFLAGS_FROM_ISR    1
 | 
			
		||||
#define configUSE_OS2_THREAD_FLAGS           1
 | 
			
		||||
#define configUSE_OS2_TIMER                  1
 | 
			
		||||
#define configUSE_OS2_MUTEX                  1
 | 
			
		||||
 | 
			
		||||
/* Set the following definitions to 1 to include the API function, or zero
 | 
			
		||||
to exclude the API function. */
 | 
			
		||||
#define INCLUDE_vTaskPrioritySet             1
 | 
			
		||||
#define INCLUDE_uxTaskPriorityGet            1
 | 
			
		||||
#define INCLUDE_vTaskDelete                  1
 | 
			
		||||
#define INCLUDE_vTaskCleanUpResources        0
 | 
			
		||||
#define INCLUDE_vTaskSuspend                 1
 | 
			
		||||
#define INCLUDE_vTaskDelayUntil              1
 | 
			
		||||
#define INCLUDE_vTaskDelay                   1
 | 
			
		||||
#define INCLUDE_xTaskGetSchedulerState       1
 | 
			
		||||
#define INCLUDE_xTimerPendFunctionCall       1
 | 
			
		||||
#define INCLUDE_xQueueGetMutexHolder         1
 | 
			
		||||
#define INCLUDE_uxTaskGetStackHighWaterMark  1
 | 
			
		||||
#define INCLUDE_xTaskGetCurrentTaskHandle    1
 | 
			
		||||
#define INCLUDE_eTaskGetState                1
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * The CMSIS-RTOS V2 FreeRTOS wrapper is dependent on the heap implementation used
 | 
			
		||||
 * by the application thus the correct define need to be enabled below
 | 
			
		||||
 */
 | 
			
		||||
#define USE_FreeRTOS_HEAP_4
 | 
			
		||||
 | 
			
		||||
/* Cortex-M specific definitions. */
 | 
			
		||||
#ifdef __NVIC_PRIO_BITS
 | 
			
		||||
 /* __BVIC_PRIO_BITS will be specified when CMSIS is being used. */
 | 
			
		||||
 #define configPRIO_BITS         __NVIC_PRIO_BITS
 | 
			
		||||
#else
 | 
			
		||||
 #define configPRIO_BITS         4
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* The lowest interrupt priority that can be used in a call to a "set priority"
 | 
			
		||||
function. */
 | 
			
		||||
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY   15
 | 
			
		||||
 | 
			
		||||
/* The highest interrupt priority that can be used by any interrupt service
 | 
			
		||||
routine that makes calls to interrupt safe FreeRTOS API functions.  DO NOT CALL
 | 
			
		||||
INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER
 | 
			
		||||
PRIORITY THAN THIS! (higher priorities are lower numeric values. */
 | 
			
		||||
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5
 | 
			
		||||
 | 
			
		||||
/* Interrupt priorities used by the kernel port layer itself.  These are generic
 | 
			
		||||
to all Cortex-M ports, and do not rely on any particular library functions. */
 | 
			
		||||
#define configKERNEL_INTERRUPT_PRIORITY 		( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
 | 
			
		||||
/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!!
 | 
			
		||||
See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */
 | 
			
		||||
#define configMAX_SYSCALL_INTERRUPT_PRIORITY 	( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
 | 
			
		||||
 | 
			
		||||
/* Normal assert() semantics without relying on the provision of an assert.h
 | 
			
		||||
header file. */
 | 
			
		||||
/* USER CODE BEGIN 1 */
 | 
			
		||||
#define configASSERT( x ) if ((x) == 0) {taskDISABLE_INTERRUPTS(); for( ;; );}
 | 
			
		||||
/* USER CODE END 1 */
 | 
			
		||||
 | 
			
		||||
/* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS
 | 
			
		||||
standard names. */
 | 
			
		||||
#define vPortSVCHandler    SVC_Handler
 | 
			
		||||
#define xPortPendSVHandler PendSV_Handler
 | 
			
		||||
 | 
			
		||||
/* IMPORTANT: After 10.3.1 update, Systick_Handler comes from NVIC (if SYS timebase = systick), otherwise from cmsis_os2.c */
 | 
			
		||||
 | 
			
		||||
#define USE_CUSTOM_SYSTICK_HANDLER_IMPLEMENTATION 0
 | 
			
		||||
 | 
			
		||||
/* USER CODE BEGIN Defines */
 | 
			
		||||
/* Section where parameter definitions can be added (for instance, to override default ones in FreeRTOS.h) */
 | 
			
		||||
/* USER CODE END Defines */
 | 
			
		||||
 | 
			
		||||
#endif /* FREERTOS_CONFIG_H */
 | 
			
		||||
| 
						 | 
				
			
			@ -63,7 +63,7 @@
 | 
			
		|||
/* #define HAL_SD_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_MMC_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_SPI_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_TIM_MODULE_ENABLED */
 | 
			
		||||
#define HAL_TIM_MODULE_ENABLED
 | 
			
		||||
#define HAL_UART_MODULE_ENABLED
 | 
			
		||||
/* #define HAL_USART_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_IRDA_MODULE_ENABLED */
 | 
			
		||||
| 
						 | 
				
			
			@ -148,7 +148,7 @@
 | 
			
		|||
  * @brief This is the HAL system configuration section
 | 
			
		||||
  */
 | 
			
		||||
#define  VDD_VALUE		      3300U /*!< Value of VDD in mv */
 | 
			
		||||
#define  TICK_INT_PRIORITY            0U   /*!< tick interrupt priority */
 | 
			
		||||
#define  TICK_INT_PRIORITY            15U   /*!< tick interrupt priority */
 | 
			
		||||
#define  USE_RTOS                     0U
 | 
			
		||||
#define  PREFETCH_ENABLE              1U
 | 
			
		||||
#define  INSTRUCTION_CACHE_ENABLE     1U
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -51,10 +51,8 @@ void HardFault_Handler(void);
 | 
			
		|||
void MemManage_Handler(void);
 | 
			
		||||
void BusFault_Handler(void);
 | 
			
		||||
void UsageFault_Handler(void);
 | 
			
		||||
void SVC_Handler(void);
 | 
			
		||||
void DebugMon_Handler(void);
 | 
			
		||||
void PendSV_Handler(void);
 | 
			
		||||
void SysTick_Handler(void);
 | 
			
		||||
void TIM1_UP_TIM10_IRQHandler(void);
 | 
			
		||||
/* USER CODE BEGIN EFP */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END EFP */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										59
									
								
								access_control_stm32/Core/Src/freertos.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								access_control_stm32/Core/Src/freertos.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,59 @@
 | 
			
		|||
/* USER CODE BEGIN Header */
 | 
			
		||||
/**
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * File Name          : freertos.c
 | 
			
		||||
  * Description        : Code for freertos applications
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @attention
 | 
			
		||||
  *
 | 
			
		||||
  * Copyright (c) 2023 STMicroelectronics.
 | 
			
		||||
  * All rights reserved.
 | 
			
		||||
  *
 | 
			
		||||
  * This software is licensed under terms that can be found in the LICENSE file
 | 
			
		||||
  * in the root directory of this software component.
 | 
			
		||||
  * If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
  *
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  */
 | 
			
		||||
/* USER CODE END Header */
 | 
			
		||||
 | 
			
		||||
/* Includes ------------------------------------------------------------------*/
 | 
			
		||||
#include "FreeRTOS.h"
 | 
			
		||||
#include "task.h"
 | 
			
		||||
#include "main.h"
 | 
			
		||||
 | 
			
		||||
/* Private includes ----------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN Includes */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END Includes */
 | 
			
		||||
 | 
			
		||||
/* Private typedef -----------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN PTD */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END PTD */
 | 
			
		||||
 | 
			
		||||
/* Private define ------------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN PD */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END PD */
 | 
			
		||||
 | 
			
		||||
/* Private macro -------------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN PM */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END PM */
 | 
			
		||||
 | 
			
		||||
/* Private variables ---------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN Variables */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END Variables */
 | 
			
		||||
 | 
			
		||||
/* Private function prototypes -----------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN FunctionPrototypes */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END FunctionPrototypes */
 | 
			
		||||
 | 
			
		||||
/* Private application code --------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN Application */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END Application */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -18,6 +18,7 @@
 | 
			
		|||
/* USER CODE END Header */
 | 
			
		||||
/* Includes ------------------------------------------------------------------*/
 | 
			
		||||
#include "main.h"
 | 
			
		||||
#include "cmsis_os.h"
 | 
			
		||||
 | 
			
		||||
/* Private includes ----------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN Includes */
 | 
			
		||||
| 
						 | 
				
			
			@ -43,6 +44,14 @@
 | 
			
		|||
/* Private variables ---------------------------------------------------------*/
 | 
			
		||||
UART_HandleTypeDef huart2;
 | 
			
		||||
 | 
			
		||||
/* Definitions for mainTask */
 | 
			
		||||
osThreadId_t mainTaskHandle;
 | 
			
		||||
const osThreadAttr_t mainTask_attributes = { .name = "mainTask", .stack_size =
 | 
			
		||||
		128 * 4, .priority = (osPriority_t) osPriorityNormal, };
 | 
			
		||||
/* Definitions for doorHandler */
 | 
			
		||||
osThreadId_t doorHandlerHandle;
 | 
			
		||||
const osThreadAttr_t doorHandler_attributes = { .name = "doorHandler",
 | 
			
		||||
		.stack_size = 128 * 4, .priority = (osPriority_t) osPriorityLow, };
 | 
			
		||||
/* USER CODE BEGIN PV */
 | 
			
		||||
uint8_t uart_buffer[10];
 | 
			
		||||
uint8_t uart_index = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -52,6 +61,9 @@ uint8_t uart_index = 0;
 | 
			
		|||
void SystemClock_Config(void);
 | 
			
		||||
static void MX_GPIO_Init(void);
 | 
			
		||||
static void MX_USART2_UART_Init(void);
 | 
			
		||||
void StartMainTask(void *argument);
 | 
			
		||||
void startDoorHandleTask(void *argument);
 | 
			
		||||
 | 
			
		||||
/* USER CODE BEGIN PFP */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END PFP */
 | 
			
		||||
| 
						 | 
				
			
			@ -93,6 +105,45 @@ int main(void) {
 | 
			
		|||
	memset(uart_buffer, 0, 10);
 | 
			
		||||
	/* USER CODE END 2 */
 | 
			
		||||
 | 
			
		||||
	/* Init scheduler */
 | 
			
		||||
	osKernelInitialize();
 | 
			
		||||
 | 
			
		||||
	/* USER CODE BEGIN RTOS_MUTEX */
 | 
			
		||||
	/* add mutexes, ... */
 | 
			
		||||
	/* USER CODE END RTOS_MUTEX */
 | 
			
		||||
 | 
			
		||||
	/* USER CODE BEGIN RTOS_SEMAPHORES */
 | 
			
		||||
	/* add semaphores, ... */
 | 
			
		||||
	/* USER CODE END RTOS_SEMAPHORES */
 | 
			
		||||
 | 
			
		||||
	/* USER CODE BEGIN RTOS_TIMERS */
 | 
			
		||||
	/* start timers, add new ones, ... */
 | 
			
		||||
	/* USER CODE END RTOS_TIMERS */
 | 
			
		||||
 | 
			
		||||
	/* USER CODE BEGIN RTOS_QUEUES */
 | 
			
		||||
	/* add queues, ... */
 | 
			
		||||
	/* USER CODE END RTOS_QUEUES */
 | 
			
		||||
 | 
			
		||||
	/* Create the thread(s) */
 | 
			
		||||
	/* creation of mainTask */
 | 
			
		||||
	mainTaskHandle = osThreadNew(StartMainTask, NULL, &mainTask_attributes);
 | 
			
		||||
 | 
			
		||||
	/* creation of doorHandler */
 | 
			
		||||
	doorHandlerHandle = osThreadNew(startDoorHandleTask, NULL,
 | 
			
		||||
			&doorHandler_attributes);
 | 
			
		||||
 | 
			
		||||
	/* USER CODE BEGIN RTOS_THREADS */
 | 
			
		||||
	/* add threads, ... */
 | 
			
		||||
	/* USER CODE END RTOS_THREADS */
 | 
			
		||||
 | 
			
		||||
	/* USER CODE BEGIN RTOS_EVENTS */
 | 
			
		||||
	/* add events, ... */
 | 
			
		||||
	/* USER CODE END RTOS_EVENTS */
 | 
			
		||||
 | 
			
		||||
	/* Start scheduler */
 | 
			
		||||
	osKernelStart();
 | 
			
		||||
 | 
			
		||||
	/* We should never get here as control is now taken by the scheduler */
 | 
			
		||||
	/* Infinite loop */
 | 
			
		||||
	/* USER CODE BEGIN WHILE */
 | 
			
		||||
	while (1) {
 | 
			
		||||
| 
						 | 
				
			
			@ -245,6 +296,82 @@ static void MX_GPIO_Init(void) {
 | 
			
		|||
 | 
			
		||||
/* USER CODE END 4 */
 | 
			
		||||
 | 
			
		||||
/* USER CODE BEGIN Header_StartMainTask */
 | 
			
		||||
/**
 | 
			
		||||
 * @brief  Function implementing the mainTask thread.
 | 
			
		||||
 * @param  argument: Not used
 | 
			
		||||
 * @retval None
 | 
			
		||||
 */
 | 
			
		||||
/* USER CODE END Header_StartMainTask */
 | 
			
		||||
void StartMainTask(void *argument) {
 | 
			
		||||
	/* USER CODE BEGIN 5 */
 | 
			
		||||
	memset(uart_buffer, 0, 10);
 | 
			
		||||
	/* USER CODE END 2 */
 | 
			
		||||
 | 
			
		||||
	/* Infinite loop */
 | 
			
		||||
	/* USER CODE BEGIN WHILE */
 | 
			
		||||
	while (1) {
 | 
			
		||||
 | 
			
		||||
		if (HAL_UART_Receive(&huart2, uart_buffer + uart_index, 1, 250)
 | 
			
		||||
				== HAL_OK) {
 | 
			
		||||
			uart_index++;
 | 
			
		||||
			if (uart_buffer[uart_index - 1] == 0xFF) {
 | 
			
		||||
				if (uart_index > 1) {
 | 
			
		||||
					if (uart_buffer[0] == 0x00) {
 | 
			
		||||
						HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, uart_buffer[1]);
 | 
			
		||||
					} else if (uart_buffer[0] == 0x01) {
 | 
			
		||||
						uint8_t payload[3] = { 0x01, HAL_GPIO_ReadPin(GPIOA,
 | 
			
		||||
						GPIO_PIN_7), 0xFF };
 | 
			
		||||
						HAL_UART_Transmit(&huart2, payload, 3, 1500);
 | 
			
		||||
					} else if (uart_buffer[0] == 0x02) {
 | 
			
		||||
						//HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_9);
 | 
			
		||||
						HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, uart_buffer[1]);
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				uart_index = 0;
 | 
			
		||||
				memset(uart_buffer, 0, 10);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	/* USER CODE END 5 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* USER CODE BEGIN Header_startDoorHandleTask */
 | 
			
		||||
/**
 | 
			
		||||
 * @brief Function implementing the doorHandler thread.
 | 
			
		||||
 * @param argument: Not used
 | 
			
		||||
 * @retval None
 | 
			
		||||
 */
 | 
			
		||||
/* USER CODE END Header_startDoorHandleTask */
 | 
			
		||||
void startDoorHandleTask(void *argument) {
 | 
			
		||||
	/* USER CODE BEGIN startDoorHandleTask */
 | 
			
		||||
	/* Infinite loop */
 | 
			
		||||
	for (;;) {
 | 
			
		||||
		osDelay(1);
 | 
			
		||||
	}
 | 
			
		||||
	/* USER CODE END startDoorHandleTask */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief  Period elapsed callback in non blocking mode
 | 
			
		||||
 * @note   This function is called  when TIM1 interrupt took place, inside
 | 
			
		||||
 * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment
 | 
			
		||||
 * a global variable "uwTick" used as application time base.
 | 
			
		||||
 * @param  htim : TIM handle
 | 
			
		||||
 * @retval None
 | 
			
		||||
 */
 | 
			
		||||
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
 | 
			
		||||
	/* USER CODE BEGIN Callback 0 */
 | 
			
		||||
 | 
			
		||||
	/* USER CODE END Callback 0 */
 | 
			
		||||
	if (htim->Instance == TIM1) {
 | 
			
		||||
		HAL_IncTick();
 | 
			
		||||
	}
 | 
			
		||||
	/* USER CODE BEGIN Callback 1 */
 | 
			
		||||
 | 
			
		||||
	/* USER CODE END Callback 1 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief  This function is executed in case of error occurrence.
 | 
			
		||||
 * @retval None
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -70,9 +70,9 @@ void HAL_MspInit(void)
 | 
			
		|||
  __HAL_RCC_SYSCFG_CLK_ENABLE();
 | 
			
		||||
  __HAL_RCC_PWR_CLK_ENABLE();
 | 
			
		||||
 | 
			
		||||
  HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_0);
 | 
			
		||||
 | 
			
		||||
  /* System interrupt init*/
 | 
			
		||||
  /* PendSV_IRQn interrupt configuration */
 | 
			
		||||
  HAL_NVIC_SetPriority(PendSV_IRQn, 15, 0);
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN MspInit 1 */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										128
									
								
								access_control_stm32/Core/Src/stm32f4xx_hal_timebase_tim.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								access_control_stm32/Core/Src/stm32f4xx_hal_timebase_tim.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,128 @@
 | 
			
		|||
/* USER CODE BEGIN Header */
 | 
			
		||||
/**
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @file    stm32f4xx_hal_timebase_tim.c
 | 
			
		||||
  * @brief   HAL time base based on the hardware TIM.
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @attention
 | 
			
		||||
  *
 | 
			
		||||
  * Copyright (c) 2023 STMicroelectronics.
 | 
			
		||||
  * All rights reserved.
 | 
			
		||||
  *
 | 
			
		||||
  * This software is licensed under terms that can be found in the LICENSE file
 | 
			
		||||
  * in the root directory of this software component.
 | 
			
		||||
  * If no LICENSE file comes with this software, it is provided AS-IS.
 | 
			
		||||
  *
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  */
 | 
			
		||||
/* USER CODE END Header */
 | 
			
		||||
 | 
			
		||||
/* Includes ------------------------------------------------------------------*/
 | 
			
		||||
#include "stm32f4xx_hal.h"
 | 
			
		||||
#include "stm32f4xx_hal_tim.h"
 | 
			
		||||
 | 
			
		||||
/* Private typedef -----------------------------------------------------------*/
 | 
			
		||||
/* Private define ------------------------------------------------------------*/
 | 
			
		||||
/* Private macro -------------------------------------------------------------*/
 | 
			
		||||
/* Private variables ---------------------------------------------------------*/
 | 
			
		||||
TIM_HandleTypeDef        htim1;
 | 
			
		||||
/* Private function prototypes -----------------------------------------------*/
 | 
			
		||||
/* Private functions ---------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief  This function configures the TIM1 as a time base source.
 | 
			
		||||
  *         The time source is configured  to have 1ms time base with a dedicated
 | 
			
		||||
  *         Tick interrupt priority.
 | 
			
		||||
  * @note   This function is called  automatically at the beginning of program after
 | 
			
		||||
  *         reset by HAL_Init() or at any time when clock is configured, by HAL_RCC_ClockConfig().
 | 
			
		||||
  * @param  TickPriority: Tick interrupt priority.
 | 
			
		||||
  * @retval HAL status
 | 
			
		||||
  */
 | 
			
		||||
HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
 | 
			
		||||
{
 | 
			
		||||
  RCC_ClkInitTypeDef    clkconfig;
 | 
			
		||||
  uint32_t              uwTimclock = 0U;
 | 
			
		||||
 | 
			
		||||
  uint32_t              uwPrescalerValue = 0U;
 | 
			
		||||
  uint32_t              pFLatency;
 | 
			
		||||
  HAL_StatusTypeDef     status;
 | 
			
		||||
 | 
			
		||||
  /* Enable TIM1 clock */
 | 
			
		||||
  __HAL_RCC_TIM1_CLK_ENABLE();
 | 
			
		||||
 | 
			
		||||
  /* Get clock configuration */
 | 
			
		||||
  HAL_RCC_GetClockConfig(&clkconfig, &pFLatency);
 | 
			
		||||
 | 
			
		||||
  /* Compute TIM1 clock */
 | 
			
		||||
      uwTimclock = HAL_RCC_GetPCLK2Freq();
 | 
			
		||||
 | 
			
		||||
  /* Compute the prescaler value to have TIM1 counter clock equal to 1MHz */
 | 
			
		||||
  uwPrescalerValue = (uint32_t) ((uwTimclock / 1000000U) - 1U);
 | 
			
		||||
 | 
			
		||||
  /* Initialize TIM1 */
 | 
			
		||||
  htim1.Instance = TIM1;
 | 
			
		||||
 | 
			
		||||
  /* Initialize TIMx peripheral as follow:
 | 
			
		||||
 | 
			
		||||
  + Period = [(TIM1CLK/1000) - 1]. to have a (1/1000) s time base.
 | 
			
		||||
  + Prescaler = (uwTimclock/1000000 - 1) to have a 1MHz counter clock.
 | 
			
		||||
  + ClockDivision = 0
 | 
			
		||||
  + Counter direction = Up
 | 
			
		||||
  */
 | 
			
		||||
  htim1.Init.Period = (1000000U / 1000U) - 1U;
 | 
			
		||||
  htim1.Init.Prescaler = uwPrescalerValue;
 | 
			
		||||
  htim1.Init.ClockDivision = 0;
 | 
			
		||||
  htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
 | 
			
		||||
  htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
 | 
			
		||||
 | 
			
		||||
  status = HAL_TIM_Base_Init(&htim1);
 | 
			
		||||
  if (status == HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    /* Start the TIM time Base generation in interrupt mode */
 | 
			
		||||
    status = HAL_TIM_Base_Start_IT(&htim1);
 | 
			
		||||
    if (status == HAL_OK)
 | 
			
		||||
    {
 | 
			
		||||
    /* Enable the TIM1 global Interrupt */
 | 
			
		||||
        HAL_NVIC_EnableIRQ(TIM1_UP_TIM10_IRQn);
 | 
			
		||||
      /* Configure the SysTick IRQ priority */
 | 
			
		||||
      if (TickPriority < (1UL << __NVIC_PRIO_BITS))
 | 
			
		||||
      {
 | 
			
		||||
        /* Configure the TIM IRQ priority */
 | 
			
		||||
        HAL_NVIC_SetPriority(TIM1_UP_TIM10_IRQn, TickPriority, 0U);
 | 
			
		||||
        uwTickPrio = TickPriority;
 | 
			
		||||
      }
 | 
			
		||||
      else
 | 
			
		||||
      {
 | 
			
		||||
        status = HAL_ERROR;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 /* Return function status */
 | 
			
		||||
  return status;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief  Suspend Tick increment.
 | 
			
		||||
  * @note   Disable the tick increment by disabling TIM1 update interrupt.
 | 
			
		||||
  * @param  None
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
void HAL_SuspendTick(void)
 | 
			
		||||
{
 | 
			
		||||
  /* Disable TIM1 update Interrupt */
 | 
			
		||||
  __HAL_TIM_DISABLE_IT(&htim1, TIM_IT_UPDATE);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief  Resume Tick increment.
 | 
			
		||||
  * @note   Enable the tick increment by Enabling TIM1 update interrupt.
 | 
			
		||||
  * @param  None
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
void HAL_ResumeTick(void)
 | 
			
		||||
{
 | 
			
		||||
  /* Enable TIM1 Update interrupt */
 | 
			
		||||
  __HAL_TIM_ENABLE_IT(&htim1, TIM_IT_UPDATE);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -55,6 +55,7 @@
 | 
			
		|||
/* USER CODE END 0 */
 | 
			
		||||
 | 
			
		||||
/* External variables --------------------------------------------------------*/
 | 
			
		||||
extern TIM_HandleTypeDef htim1;
 | 
			
		||||
 | 
			
		||||
/* USER CODE BEGIN EV */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -138,19 +139,6 @@ void UsageFault_Handler(void)
 | 
			
		|||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief This function handles System service call via SWI instruction.
 | 
			
		||||
  */
 | 
			
		||||
void SVC_Handler(void)
 | 
			
		||||
{
 | 
			
		||||
  /* USER CODE BEGIN SVCall_IRQn 0 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END SVCall_IRQn 0 */
 | 
			
		||||
  /* USER CODE BEGIN SVCall_IRQn 1 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END SVCall_IRQn 1 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief This function handles Debug monitor.
 | 
			
		||||
  */
 | 
			
		||||
| 
						 | 
				
			
			@ -164,33 +152,6 @@ void DebugMon_Handler(void)
 | 
			
		|||
  /* USER CODE END DebugMonitor_IRQn 1 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief This function handles Pendable request for system service.
 | 
			
		||||
  */
 | 
			
		||||
void PendSV_Handler(void)
 | 
			
		||||
{
 | 
			
		||||
  /* USER CODE BEGIN PendSV_IRQn 0 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END PendSV_IRQn 0 */
 | 
			
		||||
  /* USER CODE BEGIN PendSV_IRQn 1 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END PendSV_IRQn 1 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief This function handles System tick timer.
 | 
			
		||||
  */
 | 
			
		||||
void SysTick_Handler(void)
 | 
			
		||||
{
 | 
			
		||||
  /* USER CODE BEGIN SysTick_IRQn 0 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END SysTick_IRQn 0 */
 | 
			
		||||
  HAL_IncTick();
 | 
			
		||||
  /* USER CODE BEGIN SysTick_IRQn 1 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END SysTick_IRQn 1 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/******************************************************************************/
 | 
			
		||||
/* STM32F4xx Peripheral Interrupt Handlers                                    */
 | 
			
		||||
/* Add here the Interrupt Handlers for the used peripherals.                  */
 | 
			
		||||
| 
						 | 
				
			
			@ -198,6 +159,20 @@ void SysTick_Handler(void)
 | 
			
		|||
/* please refer to the startup file (startup_stm32f4xx.s).                    */
 | 
			
		||||
/******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief This function handles TIM1 update interrupt and TIM10 global interrupt.
 | 
			
		||||
  */
 | 
			
		||||
void TIM1_UP_TIM10_IRQHandler(void)
 | 
			
		||||
{
 | 
			
		||||
  /* USER CODE BEGIN TIM1_UP_TIM10_IRQn 0 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END TIM1_UP_TIM10_IRQn 0 */
 | 
			
		||||
  HAL_TIM_IRQHandler(&htim1);
 | 
			
		||||
  /* USER CODE BEGIN TIM1_UP_TIM10_IRQn 1 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END TIM1_UP_TIM10_IRQn 1 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* USER CODE BEGIN 1 */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END 1 */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue