initial_commit
This commit is contained in:
		
						commit
						bde9eaef43
					
				
					 196 changed files with 120850 additions and 0 deletions
				
			
		
							
								
								
									
										83
									
								
								access_control_stm32/Core/Inc/main.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								access_control_stm32/Core/Inc/main.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,83 @@
 | 
			
		|||
/* USER CODE BEGIN Header */
 | 
			
		||||
/**
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @file           : main.h
 | 
			
		||||
  * @brief          : Header for main.c file.
 | 
			
		||||
  *                   This file contains the common defines of the application.
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @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 */
 | 
			
		||||
 | 
			
		||||
/* Define to prevent recursive inclusion -------------------------------------*/
 | 
			
		||||
#ifndef __MAIN_H
 | 
			
		||||
#define __MAIN_H
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Includes ------------------------------------------------------------------*/
 | 
			
		||||
#include "stm32f4xx_hal.h"
 | 
			
		||||
 | 
			
		||||
/* Private includes ----------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN Includes */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END Includes */
 | 
			
		||||
 | 
			
		||||
/* Exported types ------------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN ET */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END ET */
 | 
			
		||||
 | 
			
		||||
/* Exported constants --------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN EC */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END EC */
 | 
			
		||||
 | 
			
		||||
/* Exported macro ------------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN EM */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END EM */
 | 
			
		||||
 | 
			
		||||
/* Exported functions prototypes ---------------------------------------------*/
 | 
			
		||||
void Error_Handler(void);
 | 
			
		||||
 | 
			
		||||
/* USER CODE BEGIN EFP */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END EFP */
 | 
			
		||||
 | 
			
		||||
/* Private defines -----------------------------------------------------------*/
 | 
			
		||||
#define B1_Pin GPIO_PIN_13
 | 
			
		||||
#define B1_GPIO_Port GPIOC
 | 
			
		||||
#define USART_TX_Pin GPIO_PIN_2
 | 
			
		||||
#define USART_TX_GPIO_Port GPIOA
 | 
			
		||||
#define USART_RX_Pin GPIO_PIN_3
 | 
			
		||||
#define USART_RX_GPIO_Port GPIOA
 | 
			
		||||
#define LD2_Pin GPIO_PIN_5
 | 
			
		||||
#define LD2_GPIO_Port GPIOA
 | 
			
		||||
#define TMS_Pin GPIO_PIN_13
 | 
			
		||||
#define TMS_GPIO_Port GPIOA
 | 
			
		||||
#define TCK_Pin GPIO_PIN_14
 | 
			
		||||
#define TCK_GPIO_Port GPIOA
 | 
			
		||||
#define SWO_Pin GPIO_PIN_3
 | 
			
		||||
#define SWO_GPIO_Port GPIOB
 | 
			
		||||
 | 
			
		||||
/* USER CODE BEGIN Private defines */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END Private defines */
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* __MAIN_H */
 | 
			
		||||
							
								
								
									
										495
									
								
								access_control_stm32/Core/Inc/stm32f4xx_hal_conf.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										495
									
								
								access_control_stm32/Core/Inc/stm32f4xx_hal_conf.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,495 @@
 | 
			
		|||
/* USER CODE BEGIN Header */
 | 
			
		||||
/**
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @file    stm32f4xx_hal_conf_template.h
 | 
			
		||||
  * @author  MCD Application Team
 | 
			
		||||
  * @brief   HAL configuration template file.
 | 
			
		||||
  *          This file should be copied to the application folder and renamed
 | 
			
		||||
  *          to stm32f4xx_hal_conf.h.
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @attention
 | 
			
		||||
  *
 | 
			
		||||
  * Copyright (c) 2017 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 */
 | 
			
		||||
 | 
			
		||||
/* Define to prevent recursive inclusion -------------------------------------*/
 | 
			
		||||
#ifndef __STM32F4xx_HAL_CONF_H
 | 
			
		||||
#define __STM32F4xx_HAL_CONF_H
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
 extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Exported types ------------------------------------------------------------*/
 | 
			
		||||
/* Exported constants --------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
/* ########################## Module Selection ############################## */
 | 
			
		||||
/**
 | 
			
		||||
  * @brief This is the list of modules to be used in the HAL driver
 | 
			
		||||
  */
 | 
			
		||||
#define HAL_MODULE_ENABLED
 | 
			
		||||
 | 
			
		||||
  /* #define HAL_CRYP_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_ADC_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_CAN_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_CRC_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_CAN_LEGACY_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_DAC_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_DCMI_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_DMA2D_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_ETH_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_ETH_LEGACY_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_NAND_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_NOR_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_PCCARD_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_SRAM_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_SDRAM_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_HASH_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_I2C_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_I2S_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_IWDG_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_LTDC_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_RNG_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_RTC_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_SAI_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_SD_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_MMC_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_SPI_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_TIM_MODULE_ENABLED */
 | 
			
		||||
#define HAL_UART_MODULE_ENABLED
 | 
			
		||||
/* #define HAL_USART_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_IRDA_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_SMARTCARD_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_SMBUS_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_WWDG_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_PCD_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_HCD_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_DSI_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_QSPI_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_QSPI_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_CEC_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_FMPI2C_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_FMPSMBUS_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_SPDIFRX_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_DFSDM_MODULE_ENABLED */
 | 
			
		||||
/* #define HAL_LPTIM_MODULE_ENABLED */
 | 
			
		||||
#define HAL_GPIO_MODULE_ENABLED
 | 
			
		||||
#define HAL_EXTI_MODULE_ENABLED
 | 
			
		||||
#define HAL_DMA_MODULE_ENABLED
 | 
			
		||||
#define HAL_RCC_MODULE_ENABLED
 | 
			
		||||
#define HAL_FLASH_MODULE_ENABLED
 | 
			
		||||
#define HAL_PWR_MODULE_ENABLED
 | 
			
		||||
#define HAL_CORTEX_MODULE_ENABLED
 | 
			
		||||
 | 
			
		||||
/* ########################## HSE/HSI Values adaptation ##################### */
 | 
			
		||||
/**
 | 
			
		||||
  * @brief Adjust the value of External High Speed oscillator (HSE) used in your application.
 | 
			
		||||
  *        This value is used by the RCC HAL module to compute the system frequency
 | 
			
		||||
  *        (when HSE is used as system clock source, directly or through the PLL).
 | 
			
		||||
  */
 | 
			
		||||
#if !defined  (HSE_VALUE)
 | 
			
		||||
  #define HSE_VALUE    8000000U /*!< Value of the External oscillator in Hz */
 | 
			
		||||
#endif /* HSE_VALUE */
 | 
			
		||||
 | 
			
		||||
#if !defined  (HSE_STARTUP_TIMEOUT)
 | 
			
		||||
  #define HSE_STARTUP_TIMEOUT    100U   /*!< Time out for HSE start up, in ms */
 | 
			
		||||
#endif /* HSE_STARTUP_TIMEOUT */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief Internal High Speed oscillator (HSI) value.
 | 
			
		||||
  *        This value is used by the RCC HAL module to compute the system frequency
 | 
			
		||||
  *        (when HSI is used as system clock source, directly or through the PLL).
 | 
			
		||||
  */
 | 
			
		||||
#if !defined  (HSI_VALUE)
 | 
			
		||||
  #define HSI_VALUE    ((uint32_t)16000000U) /*!< Value of the Internal oscillator in Hz*/
 | 
			
		||||
#endif /* HSI_VALUE */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief Internal Low Speed oscillator (LSI) value.
 | 
			
		||||
  */
 | 
			
		||||
#if !defined  (LSI_VALUE)
 | 
			
		||||
 #define LSI_VALUE  32000U       /*!< LSI Typical Value in Hz*/
 | 
			
		||||
#endif /* LSI_VALUE */                      /*!< Value of the Internal Low Speed oscillator in Hz
 | 
			
		||||
                                             The real value may vary depending on the variations
 | 
			
		||||
                                             in voltage and temperature.*/
 | 
			
		||||
/**
 | 
			
		||||
  * @brief External Low Speed oscillator (LSE) value.
 | 
			
		||||
  */
 | 
			
		||||
#if !defined  (LSE_VALUE)
 | 
			
		||||
 #define LSE_VALUE  32768U    /*!< Value of the External Low Speed oscillator in Hz */
 | 
			
		||||
#endif /* LSE_VALUE */
 | 
			
		||||
 | 
			
		||||
#if !defined  (LSE_STARTUP_TIMEOUT)
 | 
			
		||||
  #define LSE_STARTUP_TIMEOUT    5000U   /*!< Time out for LSE start up, in ms */
 | 
			
		||||
#endif /* LSE_STARTUP_TIMEOUT */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief External clock source for I2S peripheral
 | 
			
		||||
  *        This value is used by the I2S HAL module to compute the I2S clock source
 | 
			
		||||
  *        frequency, this source is inserted directly through I2S_CKIN pad.
 | 
			
		||||
  */
 | 
			
		||||
#if !defined  (EXTERNAL_CLOCK_VALUE)
 | 
			
		||||
  #define EXTERNAL_CLOCK_VALUE    12288000U /*!< Value of the External audio frequency in Hz*/
 | 
			
		||||
#endif /* EXTERNAL_CLOCK_VALUE */
 | 
			
		||||
 | 
			
		||||
/* Tip: To avoid modifying this file each time you need to use different HSE,
 | 
			
		||||
   ===  you can define the HSE value in your toolchain compiler preprocessor. */
 | 
			
		||||
 | 
			
		||||
/* ########################### System Configuration ######################### */
 | 
			
		||||
/**
 | 
			
		||||
  * @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  USE_RTOS                     0U
 | 
			
		||||
#define  PREFETCH_ENABLE              1U
 | 
			
		||||
#define  INSTRUCTION_CACHE_ENABLE     1U
 | 
			
		||||
#define  DATA_CACHE_ENABLE            1U
 | 
			
		||||
 | 
			
		||||
#define  USE_HAL_ADC_REGISTER_CALLBACKS         0U /* ADC register callback disabled       */
 | 
			
		||||
#define  USE_HAL_CAN_REGISTER_CALLBACKS         0U /* CAN register callback disabled       */
 | 
			
		||||
#define  USE_HAL_CEC_REGISTER_CALLBACKS         0U /* CEC register callback disabled       */
 | 
			
		||||
#define  USE_HAL_CRYP_REGISTER_CALLBACKS        0U /* CRYP register callback disabled      */
 | 
			
		||||
#define  USE_HAL_DAC_REGISTER_CALLBACKS         0U /* DAC register callback disabled       */
 | 
			
		||||
#define  USE_HAL_DCMI_REGISTER_CALLBACKS        0U /* DCMI register callback disabled      */
 | 
			
		||||
#define  USE_HAL_DFSDM_REGISTER_CALLBACKS       0U /* DFSDM register callback disabled     */
 | 
			
		||||
#define  USE_HAL_DMA2D_REGISTER_CALLBACKS       0U /* DMA2D register callback disabled     */
 | 
			
		||||
#define  USE_HAL_DSI_REGISTER_CALLBACKS         0U /* DSI register callback disabled       */
 | 
			
		||||
#define  USE_HAL_ETH_REGISTER_CALLBACKS         0U /* ETH register callback disabled       */
 | 
			
		||||
#define  USE_HAL_HASH_REGISTER_CALLBACKS        0U /* HASH register callback disabled      */
 | 
			
		||||
#define  USE_HAL_HCD_REGISTER_CALLBACKS         0U /* HCD register callback disabled       */
 | 
			
		||||
#define  USE_HAL_I2C_REGISTER_CALLBACKS         0U /* I2C register callback disabled       */
 | 
			
		||||
#define  USE_HAL_FMPI2C_REGISTER_CALLBACKS      0U /* FMPI2C register callback disabled    */
 | 
			
		||||
#define  USE_HAL_FMPSMBUS_REGISTER_CALLBACKS    0U /* FMPSMBUS register callback disabled  */
 | 
			
		||||
#define  USE_HAL_I2S_REGISTER_CALLBACKS         0U /* I2S register callback disabled       */
 | 
			
		||||
#define  USE_HAL_IRDA_REGISTER_CALLBACKS        0U /* IRDA register callback disabled      */
 | 
			
		||||
#define  USE_HAL_LPTIM_REGISTER_CALLBACKS       0U /* LPTIM register callback disabled     */
 | 
			
		||||
#define  USE_HAL_LTDC_REGISTER_CALLBACKS        0U /* LTDC register callback disabled      */
 | 
			
		||||
#define  USE_HAL_MMC_REGISTER_CALLBACKS         0U /* MMC register callback disabled       */
 | 
			
		||||
#define  USE_HAL_NAND_REGISTER_CALLBACKS        0U /* NAND register callback disabled      */
 | 
			
		||||
#define  USE_HAL_NOR_REGISTER_CALLBACKS         0U /* NOR register callback disabled       */
 | 
			
		||||
#define  USE_HAL_PCCARD_REGISTER_CALLBACKS      0U /* PCCARD register callback disabled    */
 | 
			
		||||
#define  USE_HAL_PCD_REGISTER_CALLBACKS         0U /* PCD register callback disabled       */
 | 
			
		||||
#define  USE_HAL_QSPI_REGISTER_CALLBACKS        0U /* QSPI register callback disabled      */
 | 
			
		||||
#define  USE_HAL_RNG_REGISTER_CALLBACKS         0U /* RNG register callback disabled       */
 | 
			
		||||
#define  USE_HAL_RTC_REGISTER_CALLBACKS         0U /* RTC register callback disabled       */
 | 
			
		||||
#define  USE_HAL_SAI_REGISTER_CALLBACKS         0U /* SAI register callback disabled       */
 | 
			
		||||
#define  USE_HAL_SD_REGISTER_CALLBACKS          0U /* SD register callback disabled        */
 | 
			
		||||
#define  USE_HAL_SMARTCARD_REGISTER_CALLBACKS   0U /* SMARTCARD register callback disabled */
 | 
			
		||||
#define  USE_HAL_SDRAM_REGISTER_CALLBACKS       0U /* SDRAM register callback disabled     */
 | 
			
		||||
#define  USE_HAL_SRAM_REGISTER_CALLBACKS        0U /* SRAM register callback disabled      */
 | 
			
		||||
#define  USE_HAL_SPDIFRX_REGISTER_CALLBACKS     0U /* SPDIFRX register callback disabled   */
 | 
			
		||||
#define  USE_HAL_SMBUS_REGISTER_CALLBACKS       0U /* SMBUS register callback disabled     */
 | 
			
		||||
#define  USE_HAL_SPI_REGISTER_CALLBACKS         0U /* SPI register callback disabled       */
 | 
			
		||||
#define  USE_HAL_TIM_REGISTER_CALLBACKS         0U /* TIM register callback disabled       */
 | 
			
		||||
#define  USE_HAL_UART_REGISTER_CALLBACKS        0U /* UART register callback disabled      */
 | 
			
		||||
#define  USE_HAL_USART_REGISTER_CALLBACKS       0U /* USART register callback disabled     */
 | 
			
		||||
#define  USE_HAL_WWDG_REGISTER_CALLBACKS        0U /* WWDG register callback disabled      */
 | 
			
		||||
 | 
			
		||||
/* ########################## Assert Selection ############################## */
 | 
			
		||||
/**
 | 
			
		||||
  * @brief Uncomment the line below to expanse the "assert_param" macro in the
 | 
			
		||||
  *        HAL drivers code
 | 
			
		||||
  */
 | 
			
		||||
/* #define USE_FULL_ASSERT    1U */
 | 
			
		||||
 | 
			
		||||
/* ################## Ethernet peripheral configuration ##################### */
 | 
			
		||||
 | 
			
		||||
/* Section 1 : Ethernet peripheral configuration */
 | 
			
		||||
 | 
			
		||||
/* MAC ADDRESS: MAC_ADDR0:MAC_ADDR1:MAC_ADDR2:MAC_ADDR3:MAC_ADDR4:MAC_ADDR5 */
 | 
			
		||||
#define MAC_ADDR0   2U
 | 
			
		||||
#define MAC_ADDR1   0U
 | 
			
		||||
#define MAC_ADDR2   0U
 | 
			
		||||
#define MAC_ADDR3   0U
 | 
			
		||||
#define MAC_ADDR4   0U
 | 
			
		||||
#define MAC_ADDR5   0U
 | 
			
		||||
 | 
			
		||||
/* Definition of the Ethernet driver buffers size and count */
 | 
			
		||||
#define ETH_RX_BUF_SIZE                 /* buffer size for receive               */
 | 
			
		||||
#define ETH_TX_BUF_SIZE                ETH_MAX_PACKET_SIZE /* buffer size for transmit              */
 | 
			
		||||
#define ETH_RXBUFNB                    4U       /* 4 Rx buffers of size ETH_RX_BUF_SIZE  */
 | 
			
		||||
#define ETH_TXBUFNB                    4U       /* 4 Tx buffers of size ETH_TX_BUF_SIZE  */
 | 
			
		||||
 | 
			
		||||
/* Section 2: PHY configuration section */
 | 
			
		||||
 | 
			
		||||
/* DP83848_PHY_ADDRESS Address*/
 | 
			
		||||
#define DP83848_PHY_ADDRESS
 | 
			
		||||
/* PHY Reset delay these values are based on a 1 ms Systick interrupt*/
 | 
			
		||||
#define PHY_RESET_DELAY                 0x000000FFU
 | 
			
		||||
/* PHY Configuration delay */
 | 
			
		||||
#define PHY_CONFIG_DELAY                0x00000FFFU
 | 
			
		||||
 | 
			
		||||
#define PHY_READ_TO                     0x0000FFFFU
 | 
			
		||||
#define PHY_WRITE_TO                    0x0000FFFFU
 | 
			
		||||
 | 
			
		||||
/* Section 3: Common PHY Registers */
 | 
			
		||||
 | 
			
		||||
#define PHY_BCR                         ((uint16_t)0x0000U)    /*!< Transceiver Basic Control Register   */
 | 
			
		||||
#define PHY_BSR                         ((uint16_t)0x0001U)    /*!< Transceiver Basic Status Register    */
 | 
			
		||||
 | 
			
		||||
#define PHY_RESET                       ((uint16_t)0x8000U)  /*!< PHY Reset */
 | 
			
		||||
#define PHY_LOOPBACK                    ((uint16_t)0x4000U)  /*!< Select loop-back mode */
 | 
			
		||||
#define PHY_FULLDUPLEX_100M             ((uint16_t)0x2100U)  /*!< Set the full-duplex mode at 100 Mb/s */
 | 
			
		||||
#define PHY_HALFDUPLEX_100M             ((uint16_t)0x2000U)  /*!< Set the half-duplex mode at 100 Mb/s */
 | 
			
		||||
#define PHY_FULLDUPLEX_10M              ((uint16_t)0x0100U)  /*!< Set the full-duplex mode at 10 Mb/s  */
 | 
			
		||||
#define PHY_HALFDUPLEX_10M              ((uint16_t)0x0000U)  /*!< Set the half-duplex mode at 10 Mb/s  */
 | 
			
		||||
#define PHY_AUTONEGOTIATION             ((uint16_t)0x1000U)  /*!< Enable auto-negotiation function     */
 | 
			
		||||
#define PHY_RESTART_AUTONEGOTIATION     ((uint16_t)0x0200U)  /*!< Restart auto-negotiation function    */
 | 
			
		||||
#define PHY_POWERDOWN                   ((uint16_t)0x0800U)  /*!< Select the power down mode           */
 | 
			
		||||
#define PHY_ISOLATE                     ((uint16_t)0x0400U)  /*!< Isolate PHY from MII                 */
 | 
			
		||||
 | 
			
		||||
#define PHY_AUTONEGO_COMPLETE           ((uint16_t)0x0020U)  /*!< Auto-Negotiation process completed   */
 | 
			
		||||
#define PHY_LINKED_STATUS               ((uint16_t)0x0004U)  /*!< Valid link established               */
 | 
			
		||||
#define PHY_JABBER_DETECTION            ((uint16_t)0x0002U)  /*!< Jabber condition detected            */
 | 
			
		||||
 | 
			
		||||
/* Section 4: Extended PHY Registers */
 | 
			
		||||
#define PHY_SR                          ((uint16_t))    /*!< PHY status register Offset                      */
 | 
			
		||||
 | 
			
		||||
#define PHY_SPEED_STATUS                ((uint16_t))  /*!< PHY Speed mask                                  */
 | 
			
		||||
#define PHY_DUPLEX_STATUS               ((uint16_t))  /*!< PHY Duplex mask                                 */
 | 
			
		||||
 | 
			
		||||
/* ################## SPI peripheral configuration ########################## */
 | 
			
		||||
 | 
			
		||||
/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver
 | 
			
		||||
* Activated: CRC code is present inside driver
 | 
			
		||||
* Deactivated: CRC code cleaned from driver
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#define USE_SPI_CRC                     0U
 | 
			
		||||
 | 
			
		||||
/* Includes ------------------------------------------------------------------*/
 | 
			
		||||
/**
 | 
			
		||||
  * @brief Include module's header file
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_RCC_MODULE_ENABLED
 | 
			
		||||
  #include "stm32f4xx_hal_rcc.h"
 | 
			
		||||
#endif /* HAL_RCC_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_GPIO_MODULE_ENABLED
 | 
			
		||||
  #include "stm32f4xx_hal_gpio.h"
 | 
			
		||||
#endif /* HAL_GPIO_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_EXTI_MODULE_ENABLED
 | 
			
		||||
  #include "stm32f4xx_hal_exti.h"
 | 
			
		||||
#endif /* HAL_EXTI_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_DMA_MODULE_ENABLED
 | 
			
		||||
  #include "stm32f4xx_hal_dma.h"
 | 
			
		||||
#endif /* HAL_DMA_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_CORTEX_MODULE_ENABLED
 | 
			
		||||
  #include "stm32f4xx_hal_cortex.h"
 | 
			
		||||
#endif /* HAL_CORTEX_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_ADC_MODULE_ENABLED
 | 
			
		||||
  #include "stm32f4xx_hal_adc.h"
 | 
			
		||||
#endif /* HAL_ADC_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_CAN_MODULE_ENABLED
 | 
			
		||||
  #include "stm32f4xx_hal_can.h"
 | 
			
		||||
#endif /* HAL_CAN_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_CAN_LEGACY_MODULE_ENABLED
 | 
			
		||||
  #include "stm32f4xx_hal_can_legacy.h"
 | 
			
		||||
#endif /* HAL_CAN_LEGACY_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_CRC_MODULE_ENABLED
 | 
			
		||||
  #include "stm32f4xx_hal_crc.h"
 | 
			
		||||
#endif /* HAL_CRC_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_CRYP_MODULE_ENABLED
 | 
			
		||||
  #include "stm32f4xx_hal_cryp.h"
 | 
			
		||||
#endif /* HAL_CRYP_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_DMA2D_MODULE_ENABLED
 | 
			
		||||
  #include "stm32f4xx_hal_dma2d.h"
 | 
			
		||||
#endif /* HAL_DMA2D_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_DAC_MODULE_ENABLED
 | 
			
		||||
  #include "stm32f4xx_hal_dac.h"
 | 
			
		||||
#endif /* HAL_DAC_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_DCMI_MODULE_ENABLED
 | 
			
		||||
  #include "stm32f4xx_hal_dcmi.h"
 | 
			
		||||
#endif /* HAL_DCMI_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_ETH_MODULE_ENABLED
 | 
			
		||||
  #include "stm32f4xx_hal_eth.h"
 | 
			
		||||
#endif /* HAL_ETH_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_ETH_LEGACY_MODULE_ENABLED
 | 
			
		||||
  #include "stm32f4xx_hal_eth_legacy.h"
 | 
			
		||||
#endif /* HAL_ETH_LEGACY_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_FLASH_MODULE_ENABLED
 | 
			
		||||
  #include "stm32f4xx_hal_flash.h"
 | 
			
		||||
#endif /* HAL_FLASH_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_SRAM_MODULE_ENABLED
 | 
			
		||||
  #include "stm32f4xx_hal_sram.h"
 | 
			
		||||
#endif /* HAL_SRAM_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_NOR_MODULE_ENABLED
 | 
			
		||||
  #include "stm32f4xx_hal_nor.h"
 | 
			
		||||
#endif /* HAL_NOR_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_NAND_MODULE_ENABLED
 | 
			
		||||
  #include "stm32f4xx_hal_nand.h"
 | 
			
		||||
#endif /* HAL_NAND_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_PCCARD_MODULE_ENABLED
 | 
			
		||||
  #include "stm32f4xx_hal_pccard.h"
 | 
			
		||||
#endif /* HAL_PCCARD_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_SDRAM_MODULE_ENABLED
 | 
			
		||||
  #include "stm32f4xx_hal_sdram.h"
 | 
			
		||||
#endif /* HAL_SDRAM_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_HASH_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_hash.h"
 | 
			
		||||
#endif /* HAL_HASH_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_I2C_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_i2c.h"
 | 
			
		||||
#endif /* HAL_I2C_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_SMBUS_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_smbus.h"
 | 
			
		||||
#endif /* HAL_SMBUS_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_I2S_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_i2s.h"
 | 
			
		||||
#endif /* HAL_I2S_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_IWDG_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_iwdg.h"
 | 
			
		||||
#endif /* HAL_IWDG_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_LTDC_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_ltdc.h"
 | 
			
		||||
#endif /* HAL_LTDC_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_PWR_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_pwr.h"
 | 
			
		||||
#endif /* HAL_PWR_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_RNG_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_rng.h"
 | 
			
		||||
#endif /* HAL_RNG_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_RTC_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_rtc.h"
 | 
			
		||||
#endif /* HAL_RTC_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_SAI_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_sai.h"
 | 
			
		||||
#endif /* HAL_SAI_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_SD_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_sd.h"
 | 
			
		||||
#endif /* HAL_SD_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_SPI_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_spi.h"
 | 
			
		||||
#endif /* HAL_SPI_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_TIM_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_tim.h"
 | 
			
		||||
#endif /* HAL_TIM_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_UART_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_uart.h"
 | 
			
		||||
#endif /* HAL_UART_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_USART_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_usart.h"
 | 
			
		||||
#endif /* HAL_USART_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_IRDA_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_irda.h"
 | 
			
		||||
#endif /* HAL_IRDA_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_SMARTCARD_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_smartcard.h"
 | 
			
		||||
#endif /* HAL_SMARTCARD_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_WWDG_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_wwdg.h"
 | 
			
		||||
#endif /* HAL_WWDG_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_PCD_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_pcd.h"
 | 
			
		||||
#endif /* HAL_PCD_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_HCD_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_hcd.h"
 | 
			
		||||
#endif /* HAL_HCD_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_DSI_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_dsi.h"
 | 
			
		||||
#endif /* HAL_DSI_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_QSPI_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_qspi.h"
 | 
			
		||||
#endif /* HAL_QSPI_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_CEC_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_cec.h"
 | 
			
		||||
#endif /* HAL_CEC_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_FMPI2C_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_fmpi2c.h"
 | 
			
		||||
#endif /* HAL_FMPI2C_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_FMPSMBUS_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_fmpsmbus.h"
 | 
			
		||||
#endif /* HAL_FMPSMBUS_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_SPDIFRX_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_spdifrx.h"
 | 
			
		||||
#endif /* HAL_SPDIFRX_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_DFSDM_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_dfsdm.h"
 | 
			
		||||
#endif /* HAL_DFSDM_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_LPTIM_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_lptim.h"
 | 
			
		||||
#endif /* HAL_LPTIM_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
#ifdef HAL_MMC_MODULE_ENABLED
 | 
			
		||||
 #include "stm32f4xx_hal_mmc.h"
 | 
			
		||||
#endif /* HAL_MMC_MODULE_ENABLED */
 | 
			
		||||
 | 
			
		||||
/* Exported macro ------------------------------------------------------------*/
 | 
			
		||||
#ifdef  USE_FULL_ASSERT
 | 
			
		||||
/**
 | 
			
		||||
  * @brief  The assert_param macro is used for function's parameters check.
 | 
			
		||||
  * @param  expr If expr is false, it calls assert_failed function
 | 
			
		||||
  *         which reports the name of the source file and the source
 | 
			
		||||
  *         line number of the call that failed.
 | 
			
		||||
  *         If expr is true, it returns no value.
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
  #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
 | 
			
		||||
/* Exported functions ------------------------------------------------------- */
 | 
			
		||||
  void assert_failed(uint8_t* file, uint32_t line);
 | 
			
		||||
#else
 | 
			
		||||
  #define assert_param(expr) ((void)0U)
 | 
			
		||||
#endif /* USE_FULL_ASSERT */
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* __STM32F4xx_HAL_CONF_H */
 | 
			
		||||
							
								
								
									
										66
									
								
								access_control_stm32/Core/Inc/stm32f4xx_it.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								access_control_stm32/Core/Inc/stm32f4xx_it.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,66 @@
 | 
			
		|||
/* USER CODE BEGIN Header */
 | 
			
		||||
/**
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @file    stm32f4xx_it.h
 | 
			
		||||
  * @brief   This file contains the headers of the interrupt handlers.
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @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 */
 | 
			
		||||
 | 
			
		||||
/* Define to prevent recursive inclusion -------------------------------------*/
 | 
			
		||||
#ifndef __STM32F4xx_IT_H
 | 
			
		||||
#define __STM32F4xx_IT_H
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
 extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Private includes ----------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN Includes */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END Includes */
 | 
			
		||||
 | 
			
		||||
/* Exported types ------------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN ET */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END ET */
 | 
			
		||||
 | 
			
		||||
/* Exported constants --------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN EC */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END EC */
 | 
			
		||||
 | 
			
		||||
/* Exported macro ------------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN EM */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END EM */
 | 
			
		||||
 | 
			
		||||
/* Exported functions prototypes ---------------------------------------------*/
 | 
			
		||||
void NMI_Handler(void);
 | 
			
		||||
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);
 | 
			
		||||
/* USER CODE BEGIN EFP */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END EFP */
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* __STM32F4xx_IT_H */
 | 
			
		||||
							
								
								
									
										270
									
								
								access_control_stm32/Core/Src/main.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										270
									
								
								access_control_stm32/Core/Src/main.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,270 @@
 | 
			
		|||
/* USER CODE BEGIN Header */
 | 
			
		||||
/**
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @file           : main.c
 | 
			
		||||
  * @brief          : Main program body
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @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 "main.h"
 | 
			
		||||
#include "string.h"
 | 
			
		||||
#include "stdio.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 ---------------------------------------------------------*/
 | 
			
		||||
UART_HandleTypeDef huart2;
 | 
			
		||||
 | 
			
		||||
/* USER CODE BEGIN PV */
 | 
			
		||||
uint8_t uart_buffer[10];
 | 
			
		||||
uint8_t uart_index = 0;
 | 
			
		||||
/* USER CODE END PV */
 | 
			
		||||
 | 
			
		||||
/* Private function prototypes -----------------------------------------------*/
 | 
			
		||||
void SystemClock_Config(void);
 | 
			
		||||
static void MX_GPIO_Init(void);
 | 
			
		||||
static void MX_USART2_UART_Init(void);
 | 
			
		||||
/* USER CODE BEGIN PFP */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END PFP */
 | 
			
		||||
 | 
			
		||||
/* Private user code ---------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN 0 */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END 0 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief  The application entry point.
 | 
			
		||||
  * @retval int
 | 
			
		||||
  */
 | 
			
		||||
int main(void)
 | 
			
		||||
{
 | 
			
		||||
  /* USER CODE BEGIN 1 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END 1 */
 | 
			
		||||
 | 
			
		||||
  /* MCU Configuration--------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
 | 
			
		||||
  HAL_Init();;
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN Init */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END Init */
 | 
			
		||||
 | 
			
		||||
  /* Configure the system clock */
 | 
			
		||||
  SystemClock_Config();
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN SysInit */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END SysInit */
 | 
			
		||||
 | 
			
		||||
  /* Initialize all configured peripherals */
 | 
			
		||||
  MX_GPIO_Init();
 | 
			
		||||
  MX_USART2_UART_Init();
 | 
			
		||||
  /* USER CODE BEGIN 2 */
 | 
			
		||||
  memset(uart_buffer,0,10);
 | 
			
		||||
  /* USER CODE END 2 */
 | 
			
		||||
 | 
			
		||||
  /* Infinite loop */
 | 
			
		||||
  /* USER CODE BEGIN WHILE */
 | 
			
		||||
  while (1)
 | 
			
		||||
  {
 | 
			
		||||
    /* USER CODE END WHILE */
 | 
			
		||||
	  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]);
 | 
			
		||||
				  }
 | 
			
		||||
			  }
 | 
			
		||||
			  uart_index = 0;
 | 
			
		||||
			  memset(uart_buffer,0,10);
 | 
			
		||||
		  }
 | 
			
		||||
 | 
			
		||||
	  }
 | 
			
		||||
    /* USER CODE BEGIN 3 */
 | 
			
		||||
  }
 | 
			
		||||
  /* USER CODE END 3 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief System Clock Configuration
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
void SystemClock_Config(void)
 | 
			
		||||
{
 | 
			
		||||
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
 | 
			
		||||
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
 | 
			
		||||
 | 
			
		||||
  /** Configure the main internal regulator output voltage
 | 
			
		||||
  */
 | 
			
		||||
  __HAL_RCC_PWR_CLK_ENABLE();
 | 
			
		||||
  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
 | 
			
		||||
 | 
			
		||||
  /** Initializes the RCC Oscillators according to the specified parameters
 | 
			
		||||
  * in the RCC_OscInitTypeDef structure.
 | 
			
		||||
  */
 | 
			
		||||
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
 | 
			
		||||
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
 | 
			
		||||
  RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
 | 
			
		||||
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
 | 
			
		||||
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
 | 
			
		||||
  RCC_OscInitStruct.PLL.PLLM = 16;
 | 
			
		||||
  RCC_OscInitStruct.PLL.PLLN = 336;
 | 
			
		||||
  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4;
 | 
			
		||||
  RCC_OscInitStruct.PLL.PLLQ = 4;
 | 
			
		||||
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /** Initializes the CPU, AHB and APB buses clocks
 | 
			
		||||
  */
 | 
			
		||||
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
 | 
			
		||||
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
 | 
			
		||||
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
 | 
			
		||||
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
 | 
			
		||||
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
 | 
			
		||||
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
 | 
			
		||||
 | 
			
		||||
  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief USART2 Initialization Function
 | 
			
		||||
  * @param None
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
static void MX_USART2_UART_Init(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN USART2_Init 0 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END USART2_Init 0 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN USART2_Init 1 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END USART2_Init 1 */
 | 
			
		||||
  huart2.Instance = USART2;
 | 
			
		||||
  huart2.Init.BaudRate = 115200;
 | 
			
		||||
  huart2.Init.WordLength = UART_WORDLENGTH_8B;
 | 
			
		||||
  huart2.Init.StopBits = UART_STOPBITS_1;
 | 
			
		||||
  huart2.Init.Parity = UART_PARITY_NONE;
 | 
			
		||||
  huart2.Init.Mode = UART_MODE_TX_RX;
 | 
			
		||||
  huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
 | 
			
		||||
  huart2.Init.OverSampling = UART_OVERSAMPLING_16;
 | 
			
		||||
  if (HAL_UART_Init(&huart2) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  /* USER CODE BEGIN USART2_Init 2 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END USART2_Init 2 */
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief GPIO Initialization Function
 | 
			
		||||
  * @param None
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
static void MX_GPIO_Init(void)
 | 
			
		||||
{
 | 
			
		||||
  GPIO_InitTypeDef GPIO_InitStruct = {0};
 | 
			
		||||
/* USER CODE BEGIN MX_GPIO_Init_1 */
 | 
			
		||||
/* USER CODE END MX_GPIO_Init_1 */
 | 
			
		||||
 | 
			
		||||
  /* GPIO Ports Clock Enable */
 | 
			
		||||
  __HAL_RCC_GPIOC_CLK_ENABLE();
 | 
			
		||||
  __HAL_RCC_GPIOH_CLK_ENABLE();
 | 
			
		||||
  __HAL_RCC_GPIOA_CLK_ENABLE();
 | 
			
		||||
  __HAL_RCC_GPIOB_CLK_ENABLE();
 | 
			
		||||
 | 
			
		||||
  /*Configure GPIO pin Output Level */
 | 
			
		||||
  HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);
 | 
			
		||||
 | 
			
		||||
  /*Configure GPIO pin : B1_Pin */
 | 
			
		||||
  GPIO_InitStruct.Pin = B1_Pin;
 | 
			
		||||
  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
 | 
			
		||||
  GPIO_InitStruct.Pull = GPIO_NOPULL;
 | 
			
		||||
  HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct);
 | 
			
		||||
 | 
			
		||||
  /*Configure GPIO pin : LD2_Pin */
 | 
			
		||||
  GPIO_InitStruct.Pin = LD2_Pin;
 | 
			
		||||
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
 | 
			
		||||
  GPIO_InitStruct.Pull = GPIO_NOPULL;
 | 
			
		||||
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
 | 
			
		||||
  HAL_GPIO_Init(LD2_GPIO_Port, &GPIO_InitStruct);
 | 
			
		||||
 | 
			
		||||
/* USER CODE BEGIN MX_GPIO_Init_2 */
 | 
			
		||||
/* USER CODE END MX_GPIO_Init_2 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* USER CODE BEGIN 4 */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END 4 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief  This function is executed in case of error occurrence.
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
void Error_Handler(void)
 | 
			
		||||
{
 | 
			
		||||
  /* USER CODE BEGIN Error_Handler_Debug */
 | 
			
		||||
  /* User can add his own implementation to report the HAL error return state */
 | 
			
		||||
  __disable_irq();
 | 
			
		||||
  while (1)
 | 
			
		||||
  {
 | 
			
		||||
  }
 | 
			
		||||
  /* USER CODE END Error_Handler_Debug */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef  USE_FULL_ASSERT
 | 
			
		||||
/**
 | 
			
		||||
  * @brief  Reports the name of the source file and the source line number
 | 
			
		||||
  *         where the assert_param error has occurred.
 | 
			
		||||
  * @param  file: pointer to the source file name
 | 
			
		||||
  * @param  line: assert_param error line source number
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
void assert_failed(uint8_t *file, uint32_t line)
 | 
			
		||||
{
 | 
			
		||||
  /* USER CODE BEGIN 6 */
 | 
			
		||||
  /* User can add his own implementation to report the file name and line number,
 | 
			
		||||
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
 | 
			
		||||
  /* USER CODE END 6 */
 | 
			
		||||
}
 | 
			
		||||
#endif /* USE_FULL_ASSERT */
 | 
			
		||||
							
								
								
									
										149
									
								
								access_control_stm32/Core/Src/stm32f4xx_hal_msp.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										149
									
								
								access_control_stm32/Core/Src/stm32f4xx_hal_msp.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,149 @@
 | 
			
		|||
/* USER CODE BEGIN Header */
 | 
			
		||||
/**
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @file         stm32f4xx_hal_msp.c
 | 
			
		||||
  * @brief        This file provides code for the MSP Initialization
 | 
			
		||||
  *               and de-Initialization codes.
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @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 "main.h"
 | 
			
		||||
 | 
			
		||||
/* USER CODE BEGIN Includes */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END Includes */
 | 
			
		||||
 | 
			
		||||
/* Private typedef -----------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN TD */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END TD */
 | 
			
		||||
 | 
			
		||||
/* Private define ------------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN Define */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END Define */
 | 
			
		||||
 | 
			
		||||
/* Private macro -------------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN Macro */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END Macro */
 | 
			
		||||
 | 
			
		||||
/* Private variables ---------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN PV */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END PV */
 | 
			
		||||
 | 
			
		||||
/* Private function prototypes -----------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN PFP */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END PFP */
 | 
			
		||||
 | 
			
		||||
/* External functions --------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN ExternalFunctions */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END ExternalFunctions */
 | 
			
		||||
 | 
			
		||||
/* USER CODE BEGIN 0 */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END 0 */
 | 
			
		||||
/**
 | 
			
		||||
  * Initializes the Global MSP.
 | 
			
		||||
  */
 | 
			
		||||
void HAL_MspInit(void)
 | 
			
		||||
{
 | 
			
		||||
  /* USER CODE BEGIN MspInit 0 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END MspInit 0 */
 | 
			
		||||
 | 
			
		||||
  __HAL_RCC_SYSCFG_CLK_ENABLE();
 | 
			
		||||
  __HAL_RCC_PWR_CLK_ENABLE();
 | 
			
		||||
 | 
			
		||||
  HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_0);
 | 
			
		||||
 | 
			
		||||
  /* System interrupt init*/
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN MspInit 1 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END MspInit 1 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
* @brief UART MSP Initialization
 | 
			
		||||
* This function configures the hardware resources used in this example
 | 
			
		||||
* @param huart: UART handle pointer
 | 
			
		||||
* @retval None
 | 
			
		||||
*/
 | 
			
		||||
void HAL_UART_MspInit(UART_HandleTypeDef* huart)
 | 
			
		||||
{
 | 
			
		||||
  GPIO_InitTypeDef GPIO_InitStruct = {0};
 | 
			
		||||
  if(huart->Instance==USART2)
 | 
			
		||||
  {
 | 
			
		||||
  /* USER CODE BEGIN USART2_MspInit 0 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END USART2_MspInit 0 */
 | 
			
		||||
    /* Peripheral clock enable */
 | 
			
		||||
    __HAL_RCC_USART2_CLK_ENABLE();
 | 
			
		||||
 | 
			
		||||
    __HAL_RCC_GPIOA_CLK_ENABLE();
 | 
			
		||||
    /**USART2 GPIO Configuration
 | 
			
		||||
    PA2     ------> USART2_TX
 | 
			
		||||
    PA3     ------> USART2_RX
 | 
			
		||||
    */
 | 
			
		||||
    GPIO_InitStruct.Pin = USART_TX_Pin|USART_RX_Pin;
 | 
			
		||||
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
 | 
			
		||||
    GPIO_InitStruct.Pull = GPIO_NOPULL;
 | 
			
		||||
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
 | 
			
		||||
    GPIO_InitStruct.Alternate = GPIO_AF7_USART2;
 | 
			
		||||
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN USART2_MspInit 1 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END USART2_MspInit 1 */
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
* @brief UART MSP De-Initialization
 | 
			
		||||
* This function freeze the hardware resources used in this example
 | 
			
		||||
* @param huart: UART handle pointer
 | 
			
		||||
* @retval None
 | 
			
		||||
*/
 | 
			
		||||
void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
 | 
			
		||||
{
 | 
			
		||||
  if(huart->Instance==USART2)
 | 
			
		||||
  {
 | 
			
		||||
  /* USER CODE BEGIN USART2_MspDeInit 0 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END USART2_MspDeInit 0 */
 | 
			
		||||
    /* Peripheral clock disable */
 | 
			
		||||
    __HAL_RCC_USART2_CLK_DISABLE();
 | 
			
		||||
 | 
			
		||||
    /**USART2 GPIO Configuration
 | 
			
		||||
    PA2     ------> USART2_TX
 | 
			
		||||
    PA3     ------> USART2_RX
 | 
			
		||||
    */
 | 
			
		||||
    HAL_GPIO_DeInit(GPIOA, USART_TX_Pin|USART_RX_Pin);
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN USART2_MspDeInit 1 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END USART2_MspDeInit 1 */
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* USER CODE BEGIN 1 */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END 1 */
 | 
			
		||||
							
								
								
									
										203
									
								
								access_control_stm32/Core/Src/stm32f4xx_it.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										203
									
								
								access_control_stm32/Core/Src/stm32f4xx_it.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,203 @@
 | 
			
		|||
/* USER CODE BEGIN Header */
 | 
			
		||||
/**
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @file    stm32f4xx_it.c
 | 
			
		||||
  * @brief   Interrupt Service Routines.
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @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 "main.h"
 | 
			
		||||
#include "stm32f4xx_it.h"
 | 
			
		||||
/* Private includes ----------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN Includes */
 | 
			
		||||
/* USER CODE END Includes */
 | 
			
		||||
 | 
			
		||||
/* Private typedef -----------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN TD */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END TD */
 | 
			
		||||
 | 
			
		||||
/* 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 PV */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END PV */
 | 
			
		||||
 | 
			
		||||
/* Private function prototypes -----------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN PFP */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END PFP */
 | 
			
		||||
 | 
			
		||||
/* Private user code ---------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN 0 */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END 0 */
 | 
			
		||||
 | 
			
		||||
/* External variables --------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
/* USER CODE BEGIN EV */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END EV */
 | 
			
		||||
 | 
			
		||||
/******************************************************************************/
 | 
			
		||||
/*           Cortex-M4 Processor Interruption and Exception Handlers          */
 | 
			
		||||
/******************************************************************************/
 | 
			
		||||
/**
 | 
			
		||||
  * @brief This function handles Non maskable interrupt.
 | 
			
		||||
  */
 | 
			
		||||
void NMI_Handler(void)
 | 
			
		||||
{
 | 
			
		||||
  /* USER CODE BEGIN NonMaskableInt_IRQn 0 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END NonMaskableInt_IRQn 0 */
 | 
			
		||||
  /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
 | 
			
		||||
  while (1)
 | 
			
		||||
  {
 | 
			
		||||
  }
 | 
			
		||||
  /* USER CODE END NonMaskableInt_IRQn 1 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief This function handles Hard fault interrupt.
 | 
			
		||||
  */
 | 
			
		||||
void HardFault_Handler(void)
 | 
			
		||||
{
 | 
			
		||||
  /* USER CODE BEGIN HardFault_IRQn 0 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END HardFault_IRQn 0 */
 | 
			
		||||
  while (1)
 | 
			
		||||
  {
 | 
			
		||||
    /* USER CODE BEGIN W1_HardFault_IRQn 0 */
 | 
			
		||||
    /* USER CODE END W1_HardFault_IRQn 0 */
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief This function handles Memory management fault.
 | 
			
		||||
  */
 | 
			
		||||
void MemManage_Handler(void)
 | 
			
		||||
{
 | 
			
		||||
  /* USER CODE BEGIN MemoryManagement_IRQn 0 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END MemoryManagement_IRQn 0 */
 | 
			
		||||
  while (1)
 | 
			
		||||
  {
 | 
			
		||||
    /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */
 | 
			
		||||
    /* USER CODE END W1_MemoryManagement_IRQn 0 */
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief This function handles Pre-fetch fault, memory access fault.
 | 
			
		||||
  */
 | 
			
		||||
void BusFault_Handler(void)
 | 
			
		||||
{
 | 
			
		||||
  /* USER CODE BEGIN BusFault_IRQn 0 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END BusFault_IRQn 0 */
 | 
			
		||||
  while (1)
 | 
			
		||||
  {
 | 
			
		||||
    /* USER CODE BEGIN W1_BusFault_IRQn 0 */
 | 
			
		||||
    /* USER CODE END W1_BusFault_IRQn 0 */
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief This function handles Undefined instruction or illegal state.
 | 
			
		||||
  */
 | 
			
		||||
void UsageFault_Handler(void)
 | 
			
		||||
{
 | 
			
		||||
  /* USER CODE BEGIN UsageFault_IRQn 0 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END UsageFault_IRQn 0 */
 | 
			
		||||
  while (1)
 | 
			
		||||
  {
 | 
			
		||||
    /* USER CODE BEGIN W1_UsageFault_IRQn 0 */
 | 
			
		||||
    /* USER CODE END W1_UsageFault_IRQn 0 */
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @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.
 | 
			
		||||
  */
 | 
			
		||||
void DebugMon_Handler(void)
 | 
			
		||||
{
 | 
			
		||||
  /* USER CODE BEGIN DebugMonitor_IRQn 0 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END DebugMonitor_IRQn 0 */
 | 
			
		||||
  /* USER CODE BEGIN DebugMonitor_IRQn 1 */
 | 
			
		||||
 | 
			
		||||
  /* 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.                  */
 | 
			
		||||
/* For the available peripheral interrupt handler names,                      */
 | 
			
		||||
/* please refer to the startup file (startup_stm32f4xx.s).                    */
 | 
			
		||||
/******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/* USER CODE BEGIN 1 */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END 1 */
 | 
			
		||||
							
								
								
									
										176
									
								
								access_control_stm32/Core/Src/syscalls.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										176
									
								
								access_control_stm32/Core/Src/syscalls.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,176 @@
 | 
			
		|||
/**
 | 
			
		||||
 ******************************************************************************
 | 
			
		||||
 * @file      syscalls.c
 | 
			
		||||
 * @author    Auto-generated by STM32CubeIDE
 | 
			
		||||
 * @brief     STM32CubeIDE Minimal System calls file
 | 
			
		||||
 *
 | 
			
		||||
 *            For more information about which c-functions
 | 
			
		||||
 *            need which of these lowlevel functions
 | 
			
		||||
 *            please consult the Newlib libc-manual
 | 
			
		||||
 ******************************************************************************
 | 
			
		||||
 * @attention
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (c) 2020-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.
 | 
			
		||||
 *
 | 
			
		||||
 ******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* Includes */
 | 
			
		||||
#include <sys/stat.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <signal.h>
 | 
			
		||||
#include <time.h>
 | 
			
		||||
#include <sys/time.h>
 | 
			
		||||
#include <sys/times.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Variables */
 | 
			
		||||
extern int __io_putchar(int ch) __attribute__((weak));
 | 
			
		||||
extern int __io_getchar(void) __attribute__((weak));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
char *__env[1] = { 0 };
 | 
			
		||||
char **environ = __env;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Functions */
 | 
			
		||||
void initialise_monitor_handles()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int _getpid(void)
 | 
			
		||||
{
 | 
			
		||||
  return 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int _kill(int pid, int sig)
 | 
			
		||||
{
 | 
			
		||||
  (void)pid;
 | 
			
		||||
  (void)sig;
 | 
			
		||||
  errno = EINVAL;
 | 
			
		||||
  return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void _exit (int status)
 | 
			
		||||
{
 | 
			
		||||
  _kill(status, -1);
 | 
			
		||||
  while (1) {}    /* Make sure we hang here */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
__attribute__((weak)) int _read(int file, char *ptr, int len)
 | 
			
		||||
{
 | 
			
		||||
  (void)file;
 | 
			
		||||
  int DataIdx;
 | 
			
		||||
 | 
			
		||||
  for (DataIdx = 0; DataIdx < len; DataIdx++)
 | 
			
		||||
  {
 | 
			
		||||
    *ptr++ = __io_getchar();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return len;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
__attribute__((weak)) int _write(int file, char *ptr, int len)
 | 
			
		||||
{
 | 
			
		||||
  (void)file;
 | 
			
		||||
  int DataIdx;
 | 
			
		||||
 | 
			
		||||
  for (DataIdx = 0; DataIdx < len; DataIdx++)
 | 
			
		||||
  {
 | 
			
		||||
    __io_putchar(*ptr++);
 | 
			
		||||
  }
 | 
			
		||||
  return len;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int _close(int file)
 | 
			
		||||
{
 | 
			
		||||
  (void)file;
 | 
			
		||||
  return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int _fstat(int file, struct stat *st)
 | 
			
		||||
{
 | 
			
		||||
  (void)file;
 | 
			
		||||
  st->st_mode = S_IFCHR;
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int _isatty(int file)
 | 
			
		||||
{
 | 
			
		||||
  (void)file;
 | 
			
		||||
  return 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int _lseek(int file, int ptr, int dir)
 | 
			
		||||
{
 | 
			
		||||
  (void)file;
 | 
			
		||||
  (void)ptr;
 | 
			
		||||
  (void)dir;
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int _open(char *path, int flags, ...)
 | 
			
		||||
{
 | 
			
		||||
  (void)path;
 | 
			
		||||
  (void)flags;
 | 
			
		||||
  /* Pretend like we always fail */
 | 
			
		||||
  return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int _wait(int *status)
 | 
			
		||||
{
 | 
			
		||||
  (void)status;
 | 
			
		||||
  errno = ECHILD;
 | 
			
		||||
  return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int _unlink(char *name)
 | 
			
		||||
{
 | 
			
		||||
  (void)name;
 | 
			
		||||
  errno = ENOENT;
 | 
			
		||||
  return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int _times(struct tms *buf)
 | 
			
		||||
{
 | 
			
		||||
  (void)buf;
 | 
			
		||||
  return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int _stat(char *file, struct stat *st)
 | 
			
		||||
{
 | 
			
		||||
  (void)file;
 | 
			
		||||
  st->st_mode = S_IFCHR;
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int _link(char *old, char *new)
 | 
			
		||||
{
 | 
			
		||||
  (void)old;
 | 
			
		||||
  (void)new;
 | 
			
		||||
  errno = EMLINK;
 | 
			
		||||
  return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int _fork(void)
 | 
			
		||||
{
 | 
			
		||||
  errno = EAGAIN;
 | 
			
		||||
  return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int _execve(char *name, char **argv, char **env)
 | 
			
		||||
{
 | 
			
		||||
  (void)name;
 | 
			
		||||
  (void)argv;
 | 
			
		||||
  (void)env;
 | 
			
		||||
  errno = ENOMEM;
 | 
			
		||||
  return -1;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										79
									
								
								access_control_stm32/Core/Src/sysmem.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								access_control_stm32/Core/Src/sysmem.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,79 @@
 | 
			
		|||
/**
 | 
			
		||||
 ******************************************************************************
 | 
			
		||||
 * @file      sysmem.c
 | 
			
		||||
 * @author    Generated by STM32CubeIDE
 | 
			
		||||
 * @brief     STM32CubeIDE System Memory calls file
 | 
			
		||||
 *
 | 
			
		||||
 *            For more information about which C functions
 | 
			
		||||
 *            need which of these lowlevel functions
 | 
			
		||||
 *            please consult the newlib libc manual
 | 
			
		||||
 ******************************************************************************
 | 
			
		||||
 * @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.
 | 
			
		||||
 *
 | 
			
		||||
 ******************************************************************************
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* Includes */
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Pointer to the current high watermark of the heap usage
 | 
			
		||||
 */
 | 
			
		||||
static uint8_t *__sbrk_heap_end = NULL;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief _sbrk() allocates memory to the newlib heap and is used by malloc
 | 
			
		||||
 *        and others from the C library
 | 
			
		||||
 *
 | 
			
		||||
 * @verbatim
 | 
			
		||||
 * ############################################################################
 | 
			
		||||
 * #  .data  #  .bss  #       newlib heap       #          MSP stack          #
 | 
			
		||||
 * #         #        #                         # Reserved by _Min_Stack_Size #
 | 
			
		||||
 * ############################################################################
 | 
			
		||||
 * ^-- RAM start      ^-- _end                             _estack, RAM end --^
 | 
			
		||||
 * @endverbatim
 | 
			
		||||
 *
 | 
			
		||||
 * This implementation starts allocating at the '_end' linker symbol
 | 
			
		||||
 * The '_Min_Stack_Size' linker symbol reserves a memory for the MSP stack
 | 
			
		||||
 * The implementation considers '_estack' linker symbol to be RAM end
 | 
			
		||||
 * NOTE: If the MSP stack, at any point during execution, grows larger than the
 | 
			
		||||
 * reserved size, please increase the '_Min_Stack_Size'.
 | 
			
		||||
 *
 | 
			
		||||
 * @param incr Memory size
 | 
			
		||||
 * @return Pointer to allocated memory
 | 
			
		||||
 */
 | 
			
		||||
void *_sbrk(ptrdiff_t incr)
 | 
			
		||||
{
 | 
			
		||||
  extern uint8_t _end; /* Symbol defined in the linker script */
 | 
			
		||||
  extern uint8_t _estack; /* Symbol defined in the linker script */
 | 
			
		||||
  extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */
 | 
			
		||||
  const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size;
 | 
			
		||||
  const uint8_t *max_heap = (uint8_t *)stack_limit;
 | 
			
		||||
  uint8_t *prev_heap_end;
 | 
			
		||||
 | 
			
		||||
  /* Initialize heap end at first call */
 | 
			
		||||
  if (NULL == __sbrk_heap_end)
 | 
			
		||||
  {
 | 
			
		||||
    __sbrk_heap_end = &_end;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* Protect heap from growing into the reserved MSP stack */
 | 
			
		||||
  if (__sbrk_heap_end + incr > max_heap)
 | 
			
		||||
  {
 | 
			
		||||
    errno = ENOMEM;
 | 
			
		||||
    return (void *)-1;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  prev_heap_end = __sbrk_heap_end;
 | 
			
		||||
  __sbrk_heap_end += incr;
 | 
			
		||||
 | 
			
		||||
  return (void *)prev_heap_end;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										747
									
								
								access_control_stm32/Core/Src/system_stm32f4xx.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										747
									
								
								access_control_stm32/Core/Src/system_stm32f4xx.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,747 @@
 | 
			
		|||
/**
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @file    system_stm32f4xx.c
 | 
			
		||||
  * @author  MCD Application Team
 | 
			
		||||
  * @brief   CMSIS Cortex-M4 Device Peripheral Access Layer System Source File.
 | 
			
		||||
  *
 | 
			
		||||
  *   This file provides two functions and one global variable to be called from 
 | 
			
		||||
  *   user application:
 | 
			
		||||
  *      - SystemInit(): This function is called at startup just after reset and 
 | 
			
		||||
  *                      before branch to main program. This call is made inside
 | 
			
		||||
  *                      the "startup_stm32f4xx.s" file.
 | 
			
		||||
  *
 | 
			
		||||
  *      - SystemCoreClock variable: Contains the core clock (HCLK), it can be used
 | 
			
		||||
  *                                  by the user application to setup the SysTick 
 | 
			
		||||
  *                                  timer or configure other parameters.
 | 
			
		||||
  *                                     
 | 
			
		||||
  *      - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must
 | 
			
		||||
  *                                 be called whenever the core clock is changed
 | 
			
		||||
  *                                 during program execution.
 | 
			
		||||
  *
 | 
			
		||||
  *
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @attention
 | 
			
		||||
  *
 | 
			
		||||
  * Copyright (c) 2017 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.
 | 
			
		||||
  *
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/** @addtogroup CMSIS
 | 
			
		||||
  * @{
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/** @addtogroup stm32f4xx_system
 | 
			
		||||
  * @{
 | 
			
		||||
  */  
 | 
			
		||||
  
 | 
			
		||||
/** @addtogroup STM32F4xx_System_Private_Includes
 | 
			
		||||
  * @{
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "stm32f4xx.h"
 | 
			
		||||
 | 
			
		||||
#if !defined  (HSE_VALUE) 
 | 
			
		||||
  #define HSE_VALUE    ((uint32_t)25000000) /*!< Default value of the External oscillator in Hz */
 | 
			
		||||
#endif /* HSE_VALUE */
 | 
			
		||||
 | 
			
		||||
#if !defined  (HSI_VALUE)
 | 
			
		||||
  #define HSI_VALUE    ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/
 | 
			
		||||
#endif /* HSI_VALUE */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/** @addtogroup STM32F4xx_System_Private_TypesDefinitions
 | 
			
		||||
  * @{
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/** @addtogroup STM32F4xx_System_Private_Defines
 | 
			
		||||
  * @{
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/************************* Miscellaneous Configuration ************************/
 | 
			
		||||
/*!< Uncomment the following line if you need to use external SRAM or SDRAM as data memory  */
 | 
			
		||||
#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)\
 | 
			
		||||
 || defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\
 | 
			
		||||
 || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx)
 | 
			
		||||
/* #define DATA_IN_ExtSRAM */
 | 
			
		||||
#endif /* STM32F40xxx || STM32F41xxx || STM32F42xxx || STM32F43xxx || STM32F469xx || STM32F479xx ||\
 | 
			
		||||
          STM32F412Zx || STM32F412Vx */
 | 
			
		||||
 
 | 
			
		||||
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\
 | 
			
		||||
 || defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx)
 | 
			
		||||
/* #define DATA_IN_ExtSDRAM */
 | 
			
		||||
#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F446xx || STM32F469xx ||\
 | 
			
		||||
          STM32F479xx */
 | 
			
		||||
 | 
			
		||||
/* Note: Following vector table addresses must be defined in line with linker
 | 
			
		||||
         configuration. */
 | 
			
		||||
/*!< Uncomment the following line if you need to relocate the vector table
 | 
			
		||||
     anywhere in Flash or Sram, else the vector table is kept at the automatic
 | 
			
		||||
     remap of boot address selected */
 | 
			
		||||
/* #define USER_VECT_TAB_ADDRESS */
 | 
			
		||||
 | 
			
		||||
#if defined(USER_VECT_TAB_ADDRESS)
 | 
			
		||||
/*!< Uncomment the following line if you need to relocate your vector Table
 | 
			
		||||
     in Sram else user remap will be done in Flash. */
 | 
			
		||||
/* #define VECT_TAB_SRAM */
 | 
			
		||||
#if defined(VECT_TAB_SRAM)
 | 
			
		||||
#define VECT_TAB_BASE_ADDRESS   SRAM_BASE       /*!< Vector Table base address field.
 | 
			
		||||
                                                     This value must be a multiple of 0x200. */
 | 
			
		||||
#define VECT_TAB_OFFSET         0x00000000U     /*!< Vector Table base offset field.
 | 
			
		||||
                                                     This value must be a multiple of 0x200. */
 | 
			
		||||
#else
 | 
			
		||||
#define VECT_TAB_BASE_ADDRESS   FLASH_BASE      /*!< Vector Table base address field.
 | 
			
		||||
                                                     This value must be a multiple of 0x200. */
 | 
			
		||||
#define VECT_TAB_OFFSET         0x00000000U     /*!< Vector Table base offset field.
 | 
			
		||||
                                                     This value must be a multiple of 0x200. */
 | 
			
		||||
#endif /* VECT_TAB_SRAM */
 | 
			
		||||
#endif /* USER_VECT_TAB_ADDRESS */
 | 
			
		||||
/******************************************************************************/
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/** @addtogroup STM32F4xx_System_Private_Macros
 | 
			
		||||
  * @{
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/** @addtogroup STM32F4xx_System_Private_Variables
 | 
			
		||||
  * @{
 | 
			
		||||
  */
 | 
			
		||||
  /* This variable is updated in three ways:
 | 
			
		||||
      1) by calling CMSIS function SystemCoreClockUpdate()
 | 
			
		||||
      2) by calling HAL API function HAL_RCC_GetHCLKFreq()
 | 
			
		||||
      3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency 
 | 
			
		||||
         Note: If you use this function to configure the system clock; then there
 | 
			
		||||
               is no need to call the 2 first functions listed above, since SystemCoreClock
 | 
			
		||||
               variable is updated automatically.
 | 
			
		||||
  */
 | 
			
		||||
uint32_t SystemCoreClock = 16000000;
 | 
			
		||||
const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
 | 
			
		||||
const uint8_t APBPrescTable[8]  = {0, 0, 0, 0, 1, 2, 3, 4};
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/** @addtogroup STM32F4xx_System_Private_FunctionPrototypes
 | 
			
		||||
  * @{
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)
 | 
			
		||||
  static void SystemInit_ExtMemCtl(void); 
 | 
			
		||||
#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/** @addtogroup STM32F4xx_System_Private_Functions
 | 
			
		||||
  * @{
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief  Setup the microcontroller system
 | 
			
		||||
  *         Initialize the FPU setting, vector table location and External memory 
 | 
			
		||||
  *         configuration.
 | 
			
		||||
  * @param  None
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
void SystemInit(void)
 | 
			
		||||
{
 | 
			
		||||
  /* FPU settings ------------------------------------------------------------*/
 | 
			
		||||
  #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
 | 
			
		||||
    SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */
 | 
			
		||||
  #endif
 | 
			
		||||
 | 
			
		||||
#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)
 | 
			
		||||
  SystemInit_ExtMemCtl(); 
 | 
			
		||||
#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */
 | 
			
		||||
 | 
			
		||||
  /* Configure the Vector Table location -------------------------------------*/
 | 
			
		||||
#if defined(USER_VECT_TAB_ADDRESS)
 | 
			
		||||
  SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
 | 
			
		||||
#endif /* USER_VECT_TAB_ADDRESS */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
   * @brief  Update SystemCoreClock variable according to Clock Register Values.
 | 
			
		||||
  *         The SystemCoreClock variable contains the core clock (HCLK), it can
 | 
			
		||||
  *         be used by the user application to setup the SysTick timer or configure
 | 
			
		||||
  *         other parameters.
 | 
			
		||||
  *           
 | 
			
		||||
  * @note   Each time the core clock (HCLK) changes, this function must be called
 | 
			
		||||
  *         to update SystemCoreClock variable value. Otherwise, any configuration
 | 
			
		||||
  *         based on this variable will be incorrect.         
 | 
			
		||||
  *     
 | 
			
		||||
  * @note   - The system frequency computed by this function is not the real 
 | 
			
		||||
  *           frequency in the chip. It is calculated based on the predefined 
 | 
			
		||||
  *           constant and the selected clock source:
 | 
			
		||||
  *             
 | 
			
		||||
  *           - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*)
 | 
			
		||||
  *                                              
 | 
			
		||||
  *           - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**)
 | 
			
		||||
  *                          
 | 
			
		||||
  *           - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) 
 | 
			
		||||
  *             or HSI_VALUE(*) multiplied/divided by the PLL factors.
 | 
			
		||||
  *         
 | 
			
		||||
  *         (*) HSI_VALUE is a constant defined in stm32f4xx_hal_conf.h file (default value
 | 
			
		||||
  *             16 MHz) but the real value may vary depending on the variations
 | 
			
		||||
  *             in voltage and temperature.   
 | 
			
		||||
  *    
 | 
			
		||||
  *         (**) HSE_VALUE is a constant defined in stm32f4xx_hal_conf.h file (its value
 | 
			
		||||
  *              depends on the application requirements), user has to ensure that HSE_VALUE
 | 
			
		||||
  *              is same as the real frequency of the crystal used. Otherwise, this function
 | 
			
		||||
  *              may have wrong result.
 | 
			
		||||
  *                
 | 
			
		||||
  *         - The result of this function could be not correct when using fractional
 | 
			
		||||
  *           value for HSE crystal.
 | 
			
		||||
  *     
 | 
			
		||||
  * @param  None
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
void SystemCoreClockUpdate(void)
 | 
			
		||||
{
 | 
			
		||||
  uint32_t tmp = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2;
 | 
			
		||||
  
 | 
			
		||||
  /* Get SYSCLK source -------------------------------------------------------*/
 | 
			
		||||
  tmp = RCC->CFGR & RCC_CFGR_SWS;
 | 
			
		||||
 | 
			
		||||
  switch (tmp)
 | 
			
		||||
  {
 | 
			
		||||
    case 0x00:  /* HSI used as system clock source */
 | 
			
		||||
      SystemCoreClock = HSI_VALUE;
 | 
			
		||||
      break;
 | 
			
		||||
    case 0x04:  /* HSE used as system clock source */
 | 
			
		||||
      SystemCoreClock = HSE_VALUE;
 | 
			
		||||
      break;
 | 
			
		||||
    case 0x08:  /* PLL used as system clock source */
 | 
			
		||||
 | 
			
		||||
      /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N
 | 
			
		||||
         SYSCLK = PLL_VCO / PLL_P
 | 
			
		||||
         */    
 | 
			
		||||
      pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22;
 | 
			
		||||
      pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;
 | 
			
		||||
      
 | 
			
		||||
      if (pllsource != 0)
 | 
			
		||||
      {
 | 
			
		||||
        /* HSE used as PLL clock source */
 | 
			
		||||
        pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
 | 
			
		||||
      }
 | 
			
		||||
      else
 | 
			
		||||
      {
 | 
			
		||||
        /* HSI used as PLL clock source */
 | 
			
		||||
        pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2;
 | 
			
		||||
      SystemCoreClock = pllvco/pllp;
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
      SystemCoreClock = HSI_VALUE;
 | 
			
		||||
      break;
 | 
			
		||||
  }
 | 
			
		||||
  /* Compute HCLK frequency --------------------------------------------------*/
 | 
			
		||||
  /* Get HCLK prescaler */
 | 
			
		||||
  tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];
 | 
			
		||||
  /* HCLK frequency */
 | 
			
		||||
  SystemCoreClock >>= tmp;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if defined (DATA_IN_ExtSRAM) && defined (DATA_IN_ExtSDRAM)
 | 
			
		||||
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\
 | 
			
		||||
 || defined(STM32F469xx) || defined(STM32F479xx)
 | 
			
		||||
/**
 | 
			
		||||
  * @brief  Setup the external memory controller.
 | 
			
		||||
  *         Called in startup_stm32f4xx.s before jump to main.
 | 
			
		||||
  *         This function configures the external memories (SRAM/SDRAM)
 | 
			
		||||
  *         This SRAM/SDRAM will be used as program data memory (including heap and stack).
 | 
			
		||||
  * @param  None
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
void SystemInit_ExtMemCtl(void)
 | 
			
		||||
{
 | 
			
		||||
  __IO uint32_t tmp = 0x00;
 | 
			
		||||
 | 
			
		||||
  register uint32_t tmpreg = 0, timeout = 0xFFFF;
 | 
			
		||||
  register __IO uint32_t index;
 | 
			
		||||
 | 
			
		||||
  /* Enable GPIOC, GPIOD, GPIOE, GPIOF, GPIOG, GPIOH and GPIOI interface clock */
 | 
			
		||||
  RCC->AHB1ENR |= 0x000001F8;
 | 
			
		||||
 | 
			
		||||
  /* Delay after an RCC peripheral clock enabling */
 | 
			
		||||
  tmp = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOCEN);
 | 
			
		||||
  
 | 
			
		||||
  /* Connect PDx pins to FMC Alternate function */
 | 
			
		||||
  GPIOD->AFR[0]  = 0x00CCC0CC;
 | 
			
		||||
  GPIOD->AFR[1]  = 0xCCCCCCCC;
 | 
			
		||||
  /* Configure PDx pins in Alternate function mode */  
 | 
			
		||||
  GPIOD->MODER   = 0xAAAA0A8A;
 | 
			
		||||
  /* Configure PDx pins speed to 100 MHz */  
 | 
			
		||||
  GPIOD->OSPEEDR = 0xFFFF0FCF;
 | 
			
		||||
  /* Configure PDx pins Output type to push-pull */  
 | 
			
		||||
  GPIOD->OTYPER  = 0x00000000;
 | 
			
		||||
  /* No pull-up, pull-down for PDx pins */ 
 | 
			
		||||
  GPIOD->PUPDR   = 0x00000000;
 | 
			
		||||
 | 
			
		||||
  /* Connect PEx pins to FMC Alternate function */
 | 
			
		||||
  GPIOE->AFR[0]  = 0xC00CC0CC;
 | 
			
		||||
  GPIOE->AFR[1]  = 0xCCCCCCCC;
 | 
			
		||||
  /* Configure PEx pins in Alternate function mode */ 
 | 
			
		||||
  GPIOE->MODER   = 0xAAAA828A;
 | 
			
		||||
  /* Configure PEx pins speed to 100 MHz */ 
 | 
			
		||||
  GPIOE->OSPEEDR = 0xFFFFC3CF;
 | 
			
		||||
  /* Configure PEx pins Output type to push-pull */  
 | 
			
		||||
  GPIOE->OTYPER  = 0x00000000;
 | 
			
		||||
  /* No pull-up, pull-down for PEx pins */ 
 | 
			
		||||
  GPIOE->PUPDR   = 0x00000000;
 | 
			
		||||
  
 | 
			
		||||
  /* Connect PFx pins to FMC Alternate function */
 | 
			
		||||
  GPIOF->AFR[0]  = 0xCCCCCCCC;
 | 
			
		||||
  GPIOF->AFR[1]  = 0xCCCCCCCC;
 | 
			
		||||
  /* Configure PFx pins in Alternate function mode */   
 | 
			
		||||
  GPIOF->MODER   = 0xAA800AAA;
 | 
			
		||||
  /* Configure PFx pins speed to 50 MHz */ 
 | 
			
		||||
  GPIOF->OSPEEDR = 0xAA800AAA;
 | 
			
		||||
  /* Configure PFx pins Output type to push-pull */  
 | 
			
		||||
  GPIOF->OTYPER  = 0x00000000;
 | 
			
		||||
  /* No pull-up, pull-down for PFx pins */ 
 | 
			
		||||
  GPIOF->PUPDR   = 0x00000000;
 | 
			
		||||
 | 
			
		||||
  /* Connect PGx pins to FMC Alternate function */
 | 
			
		||||
  GPIOG->AFR[0]  = 0xCCCCCCCC;
 | 
			
		||||
  GPIOG->AFR[1]  = 0xCCCCCCCC;
 | 
			
		||||
  /* Configure PGx pins in Alternate function mode */ 
 | 
			
		||||
  GPIOG->MODER   = 0xAAAAAAAA;
 | 
			
		||||
  /* Configure PGx pins speed to 50 MHz */ 
 | 
			
		||||
  GPIOG->OSPEEDR = 0xAAAAAAAA;
 | 
			
		||||
  /* Configure PGx pins Output type to push-pull */  
 | 
			
		||||
  GPIOG->OTYPER  = 0x00000000;
 | 
			
		||||
  /* No pull-up, pull-down for PGx pins */ 
 | 
			
		||||
  GPIOG->PUPDR   = 0x00000000;
 | 
			
		||||
  
 | 
			
		||||
  /* Connect PHx pins to FMC Alternate function */
 | 
			
		||||
  GPIOH->AFR[0]  = 0x00C0CC00;
 | 
			
		||||
  GPIOH->AFR[1]  = 0xCCCCCCCC;
 | 
			
		||||
  /* Configure PHx pins in Alternate function mode */ 
 | 
			
		||||
  GPIOH->MODER   = 0xAAAA08A0;
 | 
			
		||||
  /* Configure PHx pins speed to 50 MHz */ 
 | 
			
		||||
  GPIOH->OSPEEDR = 0xAAAA08A0;
 | 
			
		||||
  /* Configure PHx pins Output type to push-pull */  
 | 
			
		||||
  GPIOH->OTYPER  = 0x00000000;
 | 
			
		||||
  /* No pull-up, pull-down for PHx pins */ 
 | 
			
		||||
  GPIOH->PUPDR   = 0x00000000;
 | 
			
		||||
  
 | 
			
		||||
  /* Connect PIx pins to FMC Alternate function */
 | 
			
		||||
  GPIOI->AFR[0]  = 0xCCCCCCCC;
 | 
			
		||||
  GPIOI->AFR[1]  = 0x00000CC0;
 | 
			
		||||
  /* Configure PIx pins in Alternate function mode */ 
 | 
			
		||||
  GPIOI->MODER   = 0x0028AAAA;
 | 
			
		||||
  /* Configure PIx pins speed to 50 MHz */ 
 | 
			
		||||
  GPIOI->OSPEEDR = 0x0028AAAA;
 | 
			
		||||
  /* Configure PIx pins Output type to push-pull */  
 | 
			
		||||
  GPIOI->OTYPER  = 0x00000000;
 | 
			
		||||
  /* No pull-up, pull-down for PIx pins */ 
 | 
			
		||||
  GPIOI->PUPDR   = 0x00000000;
 | 
			
		||||
  
 | 
			
		||||
/*-- FMC Configuration -------------------------------------------------------*/
 | 
			
		||||
  /* Enable the FMC interface clock */
 | 
			
		||||
  RCC->AHB3ENR |= 0x00000001;
 | 
			
		||||
  /* Delay after an RCC peripheral clock enabling */
 | 
			
		||||
  tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);
 | 
			
		||||
 | 
			
		||||
  FMC_Bank5_6->SDCR[0] = 0x000019E4;
 | 
			
		||||
  FMC_Bank5_6->SDTR[0] = 0x01115351;      
 | 
			
		||||
  
 | 
			
		||||
  /* SDRAM initialization sequence */
 | 
			
		||||
  /* Clock enable command */
 | 
			
		||||
  FMC_Bank5_6->SDCMR = 0x00000011; 
 | 
			
		||||
  tmpreg = FMC_Bank5_6->SDSR & 0x00000020; 
 | 
			
		||||
  while((tmpreg != 0) && (timeout-- > 0))
 | 
			
		||||
  {
 | 
			
		||||
    tmpreg = FMC_Bank5_6->SDSR & 0x00000020; 
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* Delay */
 | 
			
		||||
  for (index = 0; index<1000; index++);
 | 
			
		||||
  
 | 
			
		||||
  /* PALL command */
 | 
			
		||||
  FMC_Bank5_6->SDCMR = 0x00000012;           
 | 
			
		||||
  tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
 | 
			
		||||
  timeout = 0xFFFF;
 | 
			
		||||
  while((tmpreg != 0) && (timeout-- > 0))
 | 
			
		||||
  {
 | 
			
		||||
    tmpreg = FMC_Bank5_6->SDSR & 0x00000020; 
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  /* Auto refresh command */
 | 
			
		||||
  FMC_Bank5_6->SDCMR = 0x00000073;
 | 
			
		||||
  tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
 | 
			
		||||
  timeout = 0xFFFF;
 | 
			
		||||
  while((tmpreg != 0) && (timeout-- > 0))
 | 
			
		||||
  {
 | 
			
		||||
    tmpreg = FMC_Bank5_6->SDSR & 0x00000020; 
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
  /* MRD register program */
 | 
			
		||||
  FMC_Bank5_6->SDCMR = 0x00046014;
 | 
			
		||||
  tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
 | 
			
		||||
  timeout = 0xFFFF;
 | 
			
		||||
  while((tmpreg != 0) && (timeout-- > 0))
 | 
			
		||||
  {
 | 
			
		||||
    tmpreg = FMC_Bank5_6->SDSR & 0x00000020; 
 | 
			
		||||
  } 
 | 
			
		||||
  
 | 
			
		||||
  /* Set refresh count */
 | 
			
		||||
  tmpreg = FMC_Bank5_6->SDRTR;
 | 
			
		||||
  FMC_Bank5_6->SDRTR = (tmpreg | (0x0000027C<<1));
 | 
			
		||||
  
 | 
			
		||||
  /* Disable write protection */
 | 
			
		||||
  tmpreg = FMC_Bank5_6->SDCR[0]; 
 | 
			
		||||
  FMC_Bank5_6->SDCR[0] = (tmpreg & 0xFFFFFDFF);
 | 
			
		||||
 | 
			
		||||
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)
 | 
			
		||||
  /* Configure and enable Bank1_SRAM2 */
 | 
			
		||||
  FMC_Bank1->BTCR[2]  = 0x00001011;
 | 
			
		||||
  FMC_Bank1->BTCR[3]  = 0x00000201;
 | 
			
		||||
  FMC_Bank1E->BWTR[2] = 0x0fffffff;
 | 
			
		||||
#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */ 
 | 
			
		||||
#if defined(STM32F469xx) || defined(STM32F479xx)
 | 
			
		||||
  /* Configure and enable Bank1_SRAM2 */
 | 
			
		||||
  FMC_Bank1->BTCR[2]  = 0x00001091;
 | 
			
		||||
  FMC_Bank1->BTCR[3]  = 0x00110212;
 | 
			
		||||
  FMC_Bank1E->BWTR[2] = 0x0fffffff;
 | 
			
		||||
#endif /* STM32F469xx || STM32F479xx */
 | 
			
		||||
 | 
			
		||||
  (void)(tmp); 
 | 
			
		||||
}
 | 
			
		||||
#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */
 | 
			
		||||
#elif defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)
 | 
			
		||||
/**
 | 
			
		||||
  * @brief  Setup the external memory controller.
 | 
			
		||||
  *         Called in startup_stm32f4xx.s before jump to main.
 | 
			
		||||
  *         This function configures the external memories (SRAM/SDRAM)
 | 
			
		||||
  *         This SRAM/SDRAM will be used as program data memory (including heap and stack).
 | 
			
		||||
  * @param  None
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
void SystemInit_ExtMemCtl(void)
 | 
			
		||||
{
 | 
			
		||||
  __IO uint32_t tmp = 0x00;
 | 
			
		||||
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\
 | 
			
		||||
 || defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx)
 | 
			
		||||
#if defined (DATA_IN_ExtSDRAM)
 | 
			
		||||
  register uint32_t tmpreg = 0, timeout = 0xFFFF;
 | 
			
		||||
  register __IO uint32_t index;
 | 
			
		||||
 | 
			
		||||
#if defined(STM32F446xx)
 | 
			
		||||
  /* Enable GPIOA, GPIOC, GPIOD, GPIOE, GPIOF, GPIOG interface
 | 
			
		||||
      clock */
 | 
			
		||||
  RCC->AHB1ENR |= 0x0000007D;
 | 
			
		||||
#else
 | 
			
		||||
  /* Enable GPIOC, GPIOD, GPIOE, GPIOF, GPIOG, GPIOH and GPIOI interface 
 | 
			
		||||
      clock */
 | 
			
		||||
  RCC->AHB1ENR |= 0x000001F8;
 | 
			
		||||
#endif /* STM32F446xx */  
 | 
			
		||||
  /* Delay after an RCC peripheral clock enabling */
 | 
			
		||||
  tmp = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOCEN);
 | 
			
		||||
  
 | 
			
		||||
#if defined(STM32F446xx)
 | 
			
		||||
  /* Connect PAx pins to FMC Alternate function */
 | 
			
		||||
  GPIOA->AFR[0]  |= 0xC0000000;
 | 
			
		||||
  GPIOA->AFR[1]  |= 0x00000000;
 | 
			
		||||
  /* Configure PDx pins in Alternate function mode */
 | 
			
		||||
  GPIOA->MODER   |= 0x00008000;
 | 
			
		||||
  /* Configure PDx pins speed to 50 MHz */
 | 
			
		||||
  GPIOA->OSPEEDR |= 0x00008000;
 | 
			
		||||
  /* Configure PDx pins Output type to push-pull */
 | 
			
		||||
  GPIOA->OTYPER  |= 0x00000000;
 | 
			
		||||
  /* No pull-up, pull-down for PDx pins */
 | 
			
		||||
  GPIOA->PUPDR   |= 0x00000000;
 | 
			
		||||
 | 
			
		||||
  /* Connect PCx pins to FMC Alternate function */
 | 
			
		||||
  GPIOC->AFR[0]  |= 0x00CC0000;
 | 
			
		||||
  GPIOC->AFR[1]  |= 0x00000000;
 | 
			
		||||
  /* Configure PDx pins in Alternate function mode */
 | 
			
		||||
  GPIOC->MODER   |= 0x00000A00;
 | 
			
		||||
  /* Configure PDx pins speed to 50 MHz */
 | 
			
		||||
  GPIOC->OSPEEDR |= 0x00000A00;
 | 
			
		||||
  /* Configure PDx pins Output type to push-pull */
 | 
			
		||||
  GPIOC->OTYPER  |= 0x00000000;
 | 
			
		||||
  /* No pull-up, pull-down for PDx pins */
 | 
			
		||||
  GPIOC->PUPDR   |= 0x00000000;
 | 
			
		||||
#endif /* STM32F446xx */
 | 
			
		||||
 | 
			
		||||
  /* Connect PDx pins to FMC Alternate function */
 | 
			
		||||
  GPIOD->AFR[0]  = 0x000000CC;
 | 
			
		||||
  GPIOD->AFR[1]  = 0xCC000CCC;
 | 
			
		||||
  /* Configure PDx pins in Alternate function mode */  
 | 
			
		||||
  GPIOD->MODER   = 0xA02A000A;
 | 
			
		||||
  /* Configure PDx pins speed to 50 MHz */  
 | 
			
		||||
  GPIOD->OSPEEDR = 0xA02A000A;
 | 
			
		||||
  /* Configure PDx pins Output type to push-pull */  
 | 
			
		||||
  GPIOD->OTYPER  = 0x00000000;
 | 
			
		||||
  /* No pull-up, pull-down for PDx pins */ 
 | 
			
		||||
  GPIOD->PUPDR   = 0x00000000;
 | 
			
		||||
 | 
			
		||||
  /* Connect PEx pins to FMC Alternate function */
 | 
			
		||||
  GPIOE->AFR[0]  = 0xC00000CC;
 | 
			
		||||
  GPIOE->AFR[1]  = 0xCCCCCCCC;
 | 
			
		||||
  /* Configure PEx pins in Alternate function mode */ 
 | 
			
		||||
  GPIOE->MODER   = 0xAAAA800A;
 | 
			
		||||
  /* Configure PEx pins speed to 50 MHz */ 
 | 
			
		||||
  GPIOE->OSPEEDR = 0xAAAA800A;
 | 
			
		||||
  /* Configure PEx pins Output type to push-pull */  
 | 
			
		||||
  GPIOE->OTYPER  = 0x00000000;
 | 
			
		||||
  /* No pull-up, pull-down for PEx pins */ 
 | 
			
		||||
  GPIOE->PUPDR   = 0x00000000;
 | 
			
		||||
 | 
			
		||||
  /* Connect PFx pins to FMC Alternate function */
 | 
			
		||||
  GPIOF->AFR[0]  = 0xCCCCCCCC;
 | 
			
		||||
  GPIOF->AFR[1]  = 0xCCCCCCCC;
 | 
			
		||||
  /* Configure PFx pins in Alternate function mode */   
 | 
			
		||||
  GPIOF->MODER   = 0xAA800AAA;
 | 
			
		||||
  /* Configure PFx pins speed to 50 MHz */ 
 | 
			
		||||
  GPIOF->OSPEEDR = 0xAA800AAA;
 | 
			
		||||
  /* Configure PFx pins Output type to push-pull */  
 | 
			
		||||
  GPIOF->OTYPER  = 0x00000000;
 | 
			
		||||
  /* No pull-up, pull-down for PFx pins */ 
 | 
			
		||||
  GPIOF->PUPDR   = 0x00000000;
 | 
			
		||||
 | 
			
		||||
  /* Connect PGx pins to FMC Alternate function */
 | 
			
		||||
  GPIOG->AFR[0]  = 0xCCCCCCCC;
 | 
			
		||||
  GPIOG->AFR[1]  = 0xCCCCCCCC;
 | 
			
		||||
  /* Configure PGx pins in Alternate function mode */ 
 | 
			
		||||
  GPIOG->MODER   = 0xAAAAAAAA;
 | 
			
		||||
  /* Configure PGx pins speed to 50 MHz */ 
 | 
			
		||||
  GPIOG->OSPEEDR = 0xAAAAAAAA;
 | 
			
		||||
  /* Configure PGx pins Output type to push-pull */  
 | 
			
		||||
  GPIOG->OTYPER  = 0x00000000;
 | 
			
		||||
  /* No pull-up, pull-down for PGx pins */ 
 | 
			
		||||
  GPIOG->PUPDR   = 0x00000000;
 | 
			
		||||
 | 
			
		||||
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\
 | 
			
		||||
 || defined(STM32F469xx) || defined(STM32F479xx)  
 | 
			
		||||
  /* Connect PHx pins to FMC Alternate function */
 | 
			
		||||
  GPIOH->AFR[0]  = 0x00C0CC00;
 | 
			
		||||
  GPIOH->AFR[1]  = 0xCCCCCCCC;
 | 
			
		||||
  /* Configure PHx pins in Alternate function mode */ 
 | 
			
		||||
  GPIOH->MODER   = 0xAAAA08A0;
 | 
			
		||||
  /* Configure PHx pins speed to 50 MHz */ 
 | 
			
		||||
  GPIOH->OSPEEDR = 0xAAAA08A0;
 | 
			
		||||
  /* Configure PHx pins Output type to push-pull */  
 | 
			
		||||
  GPIOH->OTYPER  = 0x00000000;
 | 
			
		||||
  /* No pull-up, pull-down for PHx pins */ 
 | 
			
		||||
  GPIOH->PUPDR   = 0x00000000;
 | 
			
		||||
  
 | 
			
		||||
  /* Connect PIx pins to FMC Alternate function */
 | 
			
		||||
  GPIOI->AFR[0]  = 0xCCCCCCCC;
 | 
			
		||||
  GPIOI->AFR[1]  = 0x00000CC0;
 | 
			
		||||
  /* Configure PIx pins in Alternate function mode */ 
 | 
			
		||||
  GPIOI->MODER   = 0x0028AAAA;
 | 
			
		||||
  /* Configure PIx pins speed to 50 MHz */ 
 | 
			
		||||
  GPIOI->OSPEEDR = 0x0028AAAA;
 | 
			
		||||
  /* Configure PIx pins Output type to push-pull */  
 | 
			
		||||
  GPIOI->OTYPER  = 0x00000000;
 | 
			
		||||
  /* No pull-up, pull-down for PIx pins */ 
 | 
			
		||||
  GPIOI->PUPDR   = 0x00000000;
 | 
			
		||||
#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */
 | 
			
		||||
  
 | 
			
		||||
/*-- FMC Configuration -------------------------------------------------------*/
 | 
			
		||||
  /* Enable the FMC interface clock */
 | 
			
		||||
  RCC->AHB3ENR |= 0x00000001;
 | 
			
		||||
  /* Delay after an RCC peripheral clock enabling */
 | 
			
		||||
  tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);
 | 
			
		||||
 | 
			
		||||
  /* Configure and enable SDRAM bank1 */
 | 
			
		||||
#if defined(STM32F446xx)
 | 
			
		||||
  FMC_Bank5_6->SDCR[0] = 0x00001954;
 | 
			
		||||
#else  
 | 
			
		||||
  FMC_Bank5_6->SDCR[0] = 0x000019E4;
 | 
			
		||||
#endif /* STM32F446xx */
 | 
			
		||||
  FMC_Bank5_6->SDTR[0] = 0x01115351;      
 | 
			
		||||
  
 | 
			
		||||
  /* SDRAM initialization sequence */
 | 
			
		||||
  /* Clock enable command */
 | 
			
		||||
  FMC_Bank5_6->SDCMR = 0x00000011; 
 | 
			
		||||
  tmpreg = FMC_Bank5_6->SDSR & 0x00000020; 
 | 
			
		||||
  while((tmpreg != 0) && (timeout-- > 0))
 | 
			
		||||
  {
 | 
			
		||||
    tmpreg = FMC_Bank5_6->SDSR & 0x00000020; 
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* Delay */
 | 
			
		||||
  for (index = 0; index<1000; index++);
 | 
			
		||||
  
 | 
			
		||||
  /* PALL command */
 | 
			
		||||
  FMC_Bank5_6->SDCMR = 0x00000012;           
 | 
			
		||||
  tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
 | 
			
		||||
  timeout = 0xFFFF;
 | 
			
		||||
  while((tmpreg != 0) && (timeout-- > 0))
 | 
			
		||||
  {
 | 
			
		||||
    tmpreg = FMC_Bank5_6->SDSR & 0x00000020; 
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  /* Auto refresh command */
 | 
			
		||||
#if defined(STM32F446xx)
 | 
			
		||||
  FMC_Bank5_6->SDCMR = 0x000000F3;
 | 
			
		||||
#else  
 | 
			
		||||
  FMC_Bank5_6->SDCMR = 0x00000073;
 | 
			
		||||
#endif /* STM32F446xx */
 | 
			
		||||
  tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
 | 
			
		||||
  timeout = 0xFFFF;
 | 
			
		||||
  while((tmpreg != 0) && (timeout-- > 0))
 | 
			
		||||
  {
 | 
			
		||||
    tmpreg = FMC_Bank5_6->SDSR & 0x00000020; 
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
  /* MRD register program */
 | 
			
		||||
#if defined(STM32F446xx)
 | 
			
		||||
  FMC_Bank5_6->SDCMR = 0x00044014;
 | 
			
		||||
#else  
 | 
			
		||||
  FMC_Bank5_6->SDCMR = 0x00046014;
 | 
			
		||||
#endif /* STM32F446xx */
 | 
			
		||||
  tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
 | 
			
		||||
  timeout = 0xFFFF;
 | 
			
		||||
  while((tmpreg != 0) && (timeout-- > 0))
 | 
			
		||||
  {
 | 
			
		||||
    tmpreg = FMC_Bank5_6->SDSR & 0x00000020; 
 | 
			
		||||
  } 
 | 
			
		||||
  
 | 
			
		||||
  /* Set refresh count */
 | 
			
		||||
  tmpreg = FMC_Bank5_6->SDRTR;
 | 
			
		||||
#if defined(STM32F446xx)
 | 
			
		||||
  FMC_Bank5_6->SDRTR = (tmpreg | (0x0000050C<<1));
 | 
			
		||||
#else    
 | 
			
		||||
  FMC_Bank5_6->SDRTR = (tmpreg | (0x0000027C<<1));
 | 
			
		||||
#endif /* STM32F446xx */
 | 
			
		||||
  
 | 
			
		||||
  /* Disable write protection */
 | 
			
		||||
  tmpreg = FMC_Bank5_6->SDCR[0]; 
 | 
			
		||||
  FMC_Bank5_6->SDCR[0] = (tmpreg & 0xFFFFFDFF);
 | 
			
		||||
#endif /* DATA_IN_ExtSDRAM */
 | 
			
		||||
#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F446xx || STM32F469xx || STM32F479xx */
 | 
			
		||||
 | 
			
		||||
#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)\
 | 
			
		||||
 || defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\
 | 
			
		||||
 || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx)
 | 
			
		||||
 | 
			
		||||
#if defined(DATA_IN_ExtSRAM)
 | 
			
		||||
/*-- GPIOs Configuration -----------------------------------------------------*/
 | 
			
		||||
   /* Enable GPIOD, GPIOE, GPIOF and GPIOG interface clock */
 | 
			
		||||
  RCC->AHB1ENR   |= 0x00000078;
 | 
			
		||||
  /* Delay after an RCC peripheral clock enabling */
 | 
			
		||||
  tmp = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIODEN);
 | 
			
		||||
  
 | 
			
		||||
  /* Connect PDx pins to FMC Alternate function */
 | 
			
		||||
  GPIOD->AFR[0]  = 0x00CCC0CC;
 | 
			
		||||
  GPIOD->AFR[1]  = 0xCCCCCCCC;
 | 
			
		||||
  /* Configure PDx pins in Alternate function mode */  
 | 
			
		||||
  GPIOD->MODER   = 0xAAAA0A8A;
 | 
			
		||||
  /* Configure PDx pins speed to 100 MHz */  
 | 
			
		||||
  GPIOD->OSPEEDR = 0xFFFF0FCF;
 | 
			
		||||
  /* Configure PDx pins Output type to push-pull */  
 | 
			
		||||
  GPIOD->OTYPER  = 0x00000000;
 | 
			
		||||
  /* No pull-up, pull-down for PDx pins */ 
 | 
			
		||||
  GPIOD->PUPDR   = 0x00000000;
 | 
			
		||||
 | 
			
		||||
  /* Connect PEx pins to FMC Alternate function */
 | 
			
		||||
  GPIOE->AFR[0]  = 0xC00CC0CC;
 | 
			
		||||
  GPIOE->AFR[1]  = 0xCCCCCCCC;
 | 
			
		||||
  /* Configure PEx pins in Alternate function mode */ 
 | 
			
		||||
  GPIOE->MODER   = 0xAAAA828A;
 | 
			
		||||
  /* Configure PEx pins speed to 100 MHz */ 
 | 
			
		||||
  GPIOE->OSPEEDR = 0xFFFFC3CF;
 | 
			
		||||
  /* Configure PEx pins Output type to push-pull */  
 | 
			
		||||
  GPIOE->OTYPER  = 0x00000000;
 | 
			
		||||
  /* No pull-up, pull-down for PEx pins */ 
 | 
			
		||||
  GPIOE->PUPDR   = 0x00000000;
 | 
			
		||||
 | 
			
		||||
  /* Connect PFx pins to FMC Alternate function */
 | 
			
		||||
  GPIOF->AFR[0]  = 0x00CCCCCC;
 | 
			
		||||
  GPIOF->AFR[1]  = 0xCCCC0000;
 | 
			
		||||
  /* Configure PFx pins in Alternate function mode */   
 | 
			
		||||
  GPIOF->MODER   = 0xAA000AAA;
 | 
			
		||||
  /* Configure PFx pins speed to 100 MHz */ 
 | 
			
		||||
  GPIOF->OSPEEDR = 0xFF000FFF;
 | 
			
		||||
  /* Configure PFx pins Output type to push-pull */  
 | 
			
		||||
  GPIOF->OTYPER  = 0x00000000;
 | 
			
		||||
  /* No pull-up, pull-down for PFx pins */ 
 | 
			
		||||
  GPIOF->PUPDR   = 0x00000000;
 | 
			
		||||
 | 
			
		||||
  /* Connect PGx pins to FMC Alternate function */
 | 
			
		||||
  GPIOG->AFR[0]  = 0x00CCCCCC;
 | 
			
		||||
  GPIOG->AFR[1]  = 0x000000C0;
 | 
			
		||||
  /* Configure PGx pins in Alternate function mode */ 
 | 
			
		||||
  GPIOG->MODER   = 0x00085AAA;
 | 
			
		||||
  /* Configure PGx pins speed to 100 MHz */ 
 | 
			
		||||
  GPIOG->OSPEEDR = 0x000CAFFF;
 | 
			
		||||
  /* Configure PGx pins Output type to push-pull */  
 | 
			
		||||
  GPIOG->OTYPER  = 0x00000000;
 | 
			
		||||
  /* No pull-up, pull-down for PGx pins */ 
 | 
			
		||||
  GPIOG->PUPDR   = 0x00000000;
 | 
			
		||||
  
 | 
			
		||||
/*-- FMC/FSMC Configuration --------------------------------------------------*/
 | 
			
		||||
  /* Enable the FMC/FSMC interface clock */
 | 
			
		||||
  RCC->AHB3ENR         |= 0x00000001;
 | 
			
		||||
 | 
			
		||||
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)
 | 
			
		||||
  /* Delay after an RCC peripheral clock enabling */
 | 
			
		||||
  tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);
 | 
			
		||||
  /* Configure and enable Bank1_SRAM2 */
 | 
			
		||||
  FMC_Bank1->BTCR[2]  = 0x00001011;
 | 
			
		||||
  FMC_Bank1->BTCR[3]  = 0x00000201;
 | 
			
		||||
  FMC_Bank1E->BWTR[2] = 0x0fffffff;
 | 
			
		||||
#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */ 
 | 
			
		||||
#if defined(STM32F469xx) || defined(STM32F479xx)
 | 
			
		||||
  /* Delay after an RCC peripheral clock enabling */
 | 
			
		||||
  tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);
 | 
			
		||||
  /* Configure and enable Bank1_SRAM2 */
 | 
			
		||||
  FMC_Bank1->BTCR[2]  = 0x00001091;
 | 
			
		||||
  FMC_Bank1->BTCR[3]  = 0x00110212;
 | 
			
		||||
  FMC_Bank1E->BWTR[2] = 0x0fffffff;
 | 
			
		||||
#endif /* STM32F469xx || STM32F479xx */
 | 
			
		||||
#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx)|| defined(STM32F417xx)\
 | 
			
		||||
   || defined(STM32F412Zx) || defined(STM32F412Vx)
 | 
			
		||||
  /* Delay after an RCC peripheral clock enabling */
 | 
			
		||||
  tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FSMCEN);
 | 
			
		||||
  /* Configure and enable Bank1_SRAM2 */
 | 
			
		||||
  FSMC_Bank1->BTCR[2]  = 0x00001011;
 | 
			
		||||
  FSMC_Bank1->BTCR[3]  = 0x00000201;
 | 
			
		||||
  FSMC_Bank1E->BWTR[2] = 0x0FFFFFFF;
 | 
			
		||||
#endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F412Zx || STM32F412Vx */
 | 
			
		||||
 | 
			
		||||
#endif /* DATA_IN_ExtSRAM */
 | 
			
		||||
#endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F427xx || STM32F437xx ||\
 | 
			
		||||
          STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx || STM32F412Zx || STM32F412Vx  */ 
 | 
			
		||||
  (void)(tmp); 
 | 
			
		||||
}
 | 
			
		||||
#endif /* DATA_IN_ExtSRAM && DATA_IN_ExtSDRAM */
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @}
 | 
			
		||||
  */
 | 
			
		||||
							
								
								
									
										435
									
								
								access_control_stm32/Core/Startup/startup_stm32f411retx.s
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										435
									
								
								access_control_stm32/Core/Startup/startup_stm32f411retx.s
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,435 @@
 | 
			
		|||
/**
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @file      startup_stm32f411xe.s
 | 
			
		||||
  * @author    MCD Application Team
 | 
			
		||||
  * @brief     STM32F411xExx Devices vector table for GCC based toolchains. 
 | 
			
		||||
  *            This module performs:
 | 
			
		||||
  *                - Set the initial SP
 | 
			
		||||
  *                - Set the initial PC == Reset_Handler,
 | 
			
		||||
  *                - Set the vector table entries with the exceptions ISR address
 | 
			
		||||
  *                - Branches to main in the C library (which eventually
 | 
			
		||||
  *                  calls main()).
 | 
			
		||||
  *            After Reset the Cortex-M4 processor is in Thread mode,
 | 
			
		||||
  *            priority is Privileged, and the Stack is set to Main.
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  * @attention
 | 
			
		||||
  *
 | 
			
		||||
  * Copyright (c) 2017 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.
 | 
			
		||||
  *
 | 
			
		||||
  ******************************************************************************
 | 
			
		||||
  */
 | 
			
		||||
    
 | 
			
		||||
  .syntax unified
 | 
			
		||||
  .cpu cortex-m4
 | 
			
		||||
  .fpu softvfp
 | 
			
		||||
  .thumb
 | 
			
		||||
 | 
			
		||||
.global  g_pfnVectors
 | 
			
		||||
.global  Default_Handler
 | 
			
		||||
 | 
			
		||||
/* start address for the initialization values of the .data section. 
 | 
			
		||||
defined in linker script */
 | 
			
		||||
.word  _sidata
 | 
			
		||||
/* start address for the .data section. defined in linker script */  
 | 
			
		||||
.word  _sdata
 | 
			
		||||
/* end address for the .data section. defined in linker script */
 | 
			
		||||
.word  _edata
 | 
			
		||||
/* start address for the .bss section. defined in linker script */
 | 
			
		||||
.word  _sbss
 | 
			
		||||
/* end address for the .bss section. defined in linker script */
 | 
			
		||||
.word  _ebss
 | 
			
		||||
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief  This is the code that gets called when the processor first
 | 
			
		||||
 *          starts execution following a reset event. Only the absolutely
 | 
			
		||||
 *          necessary set is performed, after which the application
 | 
			
		||||
 *          supplied main() routine is called. 
 | 
			
		||||
 * @param  None
 | 
			
		||||
 * @retval : None
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
    .section  .text.Reset_Handler
 | 
			
		||||
  .weak  Reset_Handler
 | 
			
		||||
  .type  Reset_Handler, %function
 | 
			
		||||
Reset_Handler:  
 | 
			
		||||
  ldr   sp, =_estack    		 /* set stack pointer */
 | 
			
		||||
 | 
			
		||||
/* Copy the data segment initializers from flash to SRAM */  
 | 
			
		||||
  ldr r0, =_sdata
 | 
			
		||||
  ldr r1, =_edata
 | 
			
		||||
  ldr r2, =_sidata
 | 
			
		||||
  movs r3, #0
 | 
			
		||||
  b LoopCopyDataInit
 | 
			
		||||
 | 
			
		||||
CopyDataInit:
 | 
			
		||||
  ldr r4, [r2, r3]
 | 
			
		||||
  str r4, [r0, r3]
 | 
			
		||||
  adds r3, r3, #4
 | 
			
		||||
 | 
			
		||||
LoopCopyDataInit:
 | 
			
		||||
  adds r4, r0, r3
 | 
			
		||||
  cmp r4, r1
 | 
			
		||||
  bcc CopyDataInit
 | 
			
		||||
  
 | 
			
		||||
/* Zero fill the bss segment. */
 | 
			
		||||
  ldr r2, =_sbss
 | 
			
		||||
  ldr r4, =_ebss
 | 
			
		||||
  movs r3, #0
 | 
			
		||||
  b LoopFillZerobss
 | 
			
		||||
 | 
			
		||||
FillZerobss:
 | 
			
		||||
  str  r3, [r2]
 | 
			
		||||
  adds r2, r2, #4
 | 
			
		||||
 | 
			
		||||
LoopFillZerobss:
 | 
			
		||||
  cmp r2, r4
 | 
			
		||||
  bcc FillZerobss
 | 
			
		||||
 | 
			
		||||
/* Call the clock system initialization function.*/
 | 
			
		||||
  bl  SystemInit   
 | 
			
		||||
/* Call static constructors */
 | 
			
		||||
    bl __libc_init_array
 | 
			
		||||
/* Call the application's entry point.*/
 | 
			
		||||
  bl  main
 | 
			
		||||
  bx  lr    
 | 
			
		||||
.size  Reset_Handler, .-Reset_Handler
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief  This is the code that gets called when the processor receives an 
 | 
			
		||||
 *         unexpected interrupt.  This simply enters an infinite loop, preserving
 | 
			
		||||
 *         the system state for examination by a debugger.
 | 
			
		||||
 * @param  None     
 | 
			
		||||
 * @retval None       
 | 
			
		||||
*/
 | 
			
		||||
    .section  .text.Default_Handler,"ax",%progbits
 | 
			
		||||
Default_Handler:
 | 
			
		||||
Infinite_Loop:
 | 
			
		||||
  b  Infinite_Loop
 | 
			
		||||
  .size  Default_Handler, .-Default_Handler
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
*
 | 
			
		||||
* The minimal vector table for a Cortex M3. Note that the proper constructs
 | 
			
		||||
* must be placed on this to ensure that it ends up at physical address
 | 
			
		||||
* 0x0000.0000.
 | 
			
		||||
* 
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
   .section  .isr_vector,"a",%progbits
 | 
			
		||||
  .type  g_pfnVectors, %object
 | 
			
		||||
  .size  g_pfnVectors, .-g_pfnVectors
 | 
			
		||||
    
 | 
			
		||||
g_pfnVectors:
 | 
			
		||||
  .word  _estack
 | 
			
		||||
  .word  Reset_Handler
 | 
			
		||||
  .word  NMI_Handler
 | 
			
		||||
  .word  HardFault_Handler
 | 
			
		||||
  .word  MemManage_Handler
 | 
			
		||||
  .word  BusFault_Handler
 | 
			
		||||
  .word  UsageFault_Handler
 | 
			
		||||
  .word  0
 | 
			
		||||
  .word  0
 | 
			
		||||
  .word  0
 | 
			
		||||
  .word  0
 | 
			
		||||
  .word  SVC_Handler
 | 
			
		||||
  .word  DebugMon_Handler
 | 
			
		||||
  .word  0
 | 
			
		||||
  .word  PendSV_Handler
 | 
			
		||||
  .word  SysTick_Handler
 | 
			
		||||
  
 | 
			
		||||
  /* External Interrupts */
 | 
			
		||||
  .word     WWDG_IRQHandler                   /* Window WatchDog              */                                        
 | 
			
		||||
  .word     PVD_IRQHandler                    /* PVD through EXTI Line detection */                        
 | 
			
		||||
  .word     TAMP_STAMP_IRQHandler             /* Tamper and TimeStamps through the EXTI line */            
 | 
			
		||||
  .word     RTC_WKUP_IRQHandler               /* RTC Wakeup through the EXTI line */                      
 | 
			
		||||
  .word     FLASH_IRQHandler                  /* FLASH                        */                                          
 | 
			
		||||
  .word     RCC_IRQHandler                    /* RCC                          */                                            
 | 
			
		||||
  .word     EXTI0_IRQHandler                  /* EXTI Line0                   */                        
 | 
			
		||||
  .word     EXTI1_IRQHandler                  /* EXTI Line1                   */                          
 | 
			
		||||
  .word     EXTI2_IRQHandler                  /* EXTI Line2                   */                          
 | 
			
		||||
  .word     EXTI3_IRQHandler                  /* EXTI Line3                   */                          
 | 
			
		||||
  .word     EXTI4_IRQHandler                  /* EXTI Line4                   */                          
 | 
			
		||||
  .word     DMA1_Stream0_IRQHandler           /* DMA1 Stream 0                */                  
 | 
			
		||||
  .word     DMA1_Stream1_IRQHandler           /* DMA1 Stream 1                */                   
 | 
			
		||||
  .word     DMA1_Stream2_IRQHandler           /* DMA1 Stream 2                */                   
 | 
			
		||||
  .word     DMA1_Stream3_IRQHandler           /* DMA1 Stream 3                */                   
 | 
			
		||||
  .word     DMA1_Stream4_IRQHandler           /* DMA1 Stream 4                */                   
 | 
			
		||||
  .word     DMA1_Stream5_IRQHandler           /* DMA1 Stream 5                */                   
 | 
			
		||||
  .word     DMA1_Stream6_IRQHandler           /* DMA1 Stream 6                */                   
 | 
			
		||||
  .word     ADC_IRQHandler                    /* ADC1, ADC2 and ADC3s         */                   
 | 
			
		||||
  .word     0               				  /* Reserved                      */                         
 | 
			
		||||
  .word     0              					  /* Reserved                     */                          
 | 
			
		||||
  .word     0                                 /* Reserved                     */                          
 | 
			
		||||
  .word     0                                 /* Reserved                     */                          
 | 
			
		||||
  .word     EXTI9_5_IRQHandler                /* External Line[9:5]s          */                          
 | 
			
		||||
  .word     TIM1_BRK_TIM9_IRQHandler          /* TIM1 Break and TIM9          */         
 | 
			
		||||
  .word     TIM1_UP_TIM10_IRQHandler          /* TIM1 Update and TIM10        */         
 | 
			
		||||
  .word     TIM1_TRG_COM_TIM11_IRQHandler     /* TIM1 Trigger and Commutation and TIM11 */
 | 
			
		||||
  .word     TIM1_CC_IRQHandler                /* TIM1 Capture Compare         */                          
 | 
			
		||||
  .word     TIM2_IRQHandler                   /* TIM2                         */                   
 | 
			
		||||
  .word     TIM3_IRQHandler                   /* TIM3                         */                   
 | 
			
		||||
  .word     TIM4_IRQHandler                   /* TIM4                         */                   
 | 
			
		||||
  .word     I2C1_EV_IRQHandler                /* I2C1 Event                   */                          
 | 
			
		||||
  .word     I2C1_ER_IRQHandler                /* I2C1 Error                   */                          
 | 
			
		||||
  .word     I2C2_EV_IRQHandler                /* I2C2 Event                   */                          
 | 
			
		||||
  .word     I2C2_ER_IRQHandler                /* I2C2 Error                   */                            
 | 
			
		||||
  .word     SPI1_IRQHandler                   /* SPI1                         */                   
 | 
			
		||||
  .word     SPI2_IRQHandler                   /* SPI2                         */                   
 | 
			
		||||
  .word     USART1_IRQHandler                 /* USART1                       */                   
 | 
			
		||||
  .word     USART2_IRQHandler                 /* USART2                       */                   
 | 
			
		||||
  .word     0               				  /* Reserved                       */                   
 | 
			
		||||
  .word     EXTI15_10_IRQHandler              /* External Line[15:10]s        */                          
 | 
			
		||||
  .word     RTC_Alarm_IRQHandler              /* RTC Alarm (A and B) through EXTI Line */                 
 | 
			
		||||
  .word     OTG_FS_WKUP_IRQHandler            /* USB OTG FS Wakeup through EXTI line */                       
 | 
			
		||||
  .word     0                                 /* Reserved     				  */         
 | 
			
		||||
  .word     0                                 /* Reserved       			  */         
 | 
			
		||||
  .word     0                                 /* Reserved 					  */
 | 
			
		||||
  .word     0                                 /* Reserved                     */                          
 | 
			
		||||
  .word     DMA1_Stream7_IRQHandler           /* DMA1 Stream7                 */                          
 | 
			
		||||
  .word     0                                 /* Reserved                     */                   
 | 
			
		||||
  .word     SDIO_IRQHandler                   /* SDIO                         */                   
 | 
			
		||||
  .word     TIM5_IRQHandler                   /* TIM5                         */                   
 | 
			
		||||
  .word     SPI3_IRQHandler                   /* SPI3                         */                   
 | 
			
		||||
  .word     0                                 /* Reserved                     */                   
 | 
			
		||||
  .word     0                                 /* Reserved                     */                   
 | 
			
		||||
  .word     0                                 /* Reserved                     */                   
 | 
			
		||||
  .word     0                                 /* Reserved                     */
 | 
			
		||||
  .word     DMA2_Stream0_IRQHandler           /* DMA2 Stream 0                */                   
 | 
			
		||||
  .word     DMA2_Stream1_IRQHandler           /* DMA2 Stream 1                */                   
 | 
			
		||||
  .word     DMA2_Stream2_IRQHandler           /* DMA2 Stream 2                */                   
 | 
			
		||||
  .word     DMA2_Stream3_IRQHandler           /* DMA2 Stream 3                */                   
 | 
			
		||||
  .word     DMA2_Stream4_IRQHandler           /* DMA2 Stream 4                */                   
 | 
			
		||||
  .word     0                    			  /* Reserved                     */                   
 | 
			
		||||
  .word     0              					  /* Reserved                     */                     
 | 
			
		||||
  .word     0              					  /* Reserved                     */                          
 | 
			
		||||
  .word     0             					  /* Reserved                     */                          
 | 
			
		||||
  .word     0              					  /* Reserved                     */                          
 | 
			
		||||
  .word     0              					  /* Reserved                     */                          
 | 
			
		||||
  .word     OTG_FS_IRQHandler                 /* USB OTG FS                   */                   
 | 
			
		||||
  .word     DMA2_Stream5_IRQHandler           /* DMA2 Stream 5                */                   
 | 
			
		||||
  .word     DMA2_Stream6_IRQHandler           /* DMA2 Stream 6                */                   
 | 
			
		||||
  .word     DMA2_Stream7_IRQHandler           /* DMA2 Stream 7                */                   
 | 
			
		||||
  .word     USART6_IRQHandler                 /* USART6                       */                    
 | 
			
		||||
  .word     I2C3_EV_IRQHandler                /* I2C3 event                   */                          
 | 
			
		||||
  .word     I2C3_ER_IRQHandler                /* I2C3 error                   */                          
 | 
			
		||||
  .word     0                                 /* Reserved                     */                   
 | 
			
		||||
  .word     0                                 /* Reserved                     */                   
 | 
			
		||||
  .word     0                                 /* Reserved                     */                         
 | 
			
		||||
  .word     0                                 /* Reserved                     */                   
 | 
			
		||||
  .word     0                                 /* Reserved                     */                   
 | 
			
		||||
  .word     0                                 /* Reserved                     */                   
 | 
			
		||||
  .word     0                                 /* Reserved                     */
 | 
			
		||||
  .word     FPU_IRQHandler                    /* FPU                          */
 | 
			
		||||
  .word     0                                 /* Reserved                     */                   
 | 
			
		||||
  .word     0                                 /* Reserved                     */
 | 
			
		||||
  .word     SPI4_IRQHandler                   /* SPI4                         */
 | 
			
		||||
  .word     SPI5_IRQHandler                   /* SPI5                         */  
 | 
			
		||||
                    
 | 
			
		||||
/*******************************************************************************
 | 
			
		||||
*
 | 
			
		||||
* Provide weak aliases for each Exception handler to the Default_Handler. 
 | 
			
		||||
* As they are weak aliases, any function with the same name will override 
 | 
			
		||||
* this definition.
 | 
			
		||||
* 
 | 
			
		||||
*******************************************************************************/
 | 
			
		||||
   .weak      NMI_Handler
 | 
			
		||||
   .thumb_set NMI_Handler,Default_Handler
 | 
			
		||||
  
 | 
			
		||||
   .weak      HardFault_Handler
 | 
			
		||||
   .thumb_set HardFault_Handler,Default_Handler
 | 
			
		||||
  
 | 
			
		||||
   .weak      MemManage_Handler
 | 
			
		||||
   .thumb_set MemManage_Handler,Default_Handler
 | 
			
		||||
  
 | 
			
		||||
   .weak      BusFault_Handler
 | 
			
		||||
   .thumb_set BusFault_Handler,Default_Handler
 | 
			
		||||
 | 
			
		||||
   .weak      UsageFault_Handler
 | 
			
		||||
   .thumb_set UsageFault_Handler,Default_Handler
 | 
			
		||||
 | 
			
		||||
   .weak      SVC_Handler
 | 
			
		||||
   .thumb_set SVC_Handler,Default_Handler
 | 
			
		||||
 | 
			
		||||
   .weak      DebugMon_Handler
 | 
			
		||||
   .thumb_set DebugMon_Handler,Default_Handler
 | 
			
		||||
 | 
			
		||||
   .weak      PendSV_Handler
 | 
			
		||||
   .thumb_set PendSV_Handler,Default_Handler
 | 
			
		||||
 | 
			
		||||
   .weak      SysTick_Handler
 | 
			
		||||
   .thumb_set SysTick_Handler,Default_Handler              
 | 
			
		||||
  
 | 
			
		||||
   .weak      WWDG_IRQHandler                   
 | 
			
		||||
   .thumb_set WWDG_IRQHandler,Default_Handler      
 | 
			
		||||
                  
 | 
			
		||||
   .weak      PVD_IRQHandler      
 | 
			
		||||
   .thumb_set PVD_IRQHandler,Default_Handler
 | 
			
		||||
               
 | 
			
		||||
   .weak      TAMP_STAMP_IRQHandler            
 | 
			
		||||
   .thumb_set TAMP_STAMP_IRQHandler,Default_Handler
 | 
			
		||||
            
 | 
			
		||||
   .weak      RTC_WKUP_IRQHandler                  
 | 
			
		||||
   .thumb_set RTC_WKUP_IRQHandler,Default_Handler
 | 
			
		||||
            
 | 
			
		||||
   .weak      FLASH_IRQHandler         
 | 
			
		||||
   .thumb_set FLASH_IRQHandler,Default_Handler
 | 
			
		||||
                  
 | 
			
		||||
   .weak      RCC_IRQHandler      
 | 
			
		||||
   .thumb_set RCC_IRQHandler,Default_Handler
 | 
			
		||||
                  
 | 
			
		||||
   .weak      EXTI0_IRQHandler         
 | 
			
		||||
   .thumb_set EXTI0_IRQHandler,Default_Handler
 | 
			
		||||
                  
 | 
			
		||||
   .weak      EXTI1_IRQHandler         
 | 
			
		||||
   .thumb_set EXTI1_IRQHandler,Default_Handler
 | 
			
		||||
                     
 | 
			
		||||
   .weak      EXTI2_IRQHandler         
 | 
			
		||||
   .thumb_set EXTI2_IRQHandler,Default_Handler 
 | 
			
		||||
                 
 | 
			
		||||
   .weak      EXTI3_IRQHandler         
 | 
			
		||||
   .thumb_set EXTI3_IRQHandler,Default_Handler
 | 
			
		||||
                        
 | 
			
		||||
   .weak      EXTI4_IRQHandler         
 | 
			
		||||
   .thumb_set EXTI4_IRQHandler,Default_Handler
 | 
			
		||||
                  
 | 
			
		||||
   .weak      DMA1_Stream0_IRQHandler               
 | 
			
		||||
   .thumb_set DMA1_Stream0_IRQHandler,Default_Handler
 | 
			
		||||
         
 | 
			
		||||
   .weak      DMA1_Stream1_IRQHandler               
 | 
			
		||||
   .thumb_set DMA1_Stream1_IRQHandler,Default_Handler
 | 
			
		||||
                  
 | 
			
		||||
   .weak      DMA1_Stream2_IRQHandler               
 | 
			
		||||
   .thumb_set DMA1_Stream2_IRQHandler,Default_Handler
 | 
			
		||||
                  
 | 
			
		||||
   .weak      DMA1_Stream3_IRQHandler               
 | 
			
		||||
   .thumb_set DMA1_Stream3_IRQHandler,Default_Handler 
 | 
			
		||||
                 
 | 
			
		||||
   .weak      DMA1_Stream4_IRQHandler              
 | 
			
		||||
   .thumb_set DMA1_Stream4_IRQHandler,Default_Handler
 | 
			
		||||
                  
 | 
			
		||||
   .weak      DMA1_Stream5_IRQHandler               
 | 
			
		||||
   .thumb_set DMA1_Stream5_IRQHandler,Default_Handler
 | 
			
		||||
                  
 | 
			
		||||
   .weak      DMA1_Stream6_IRQHandler               
 | 
			
		||||
   .thumb_set DMA1_Stream6_IRQHandler,Default_Handler
 | 
			
		||||
                  
 | 
			
		||||
   .weak      ADC_IRQHandler      
 | 
			
		||||
   .thumb_set ADC_IRQHandler,Default_Handler
 | 
			
		||||
            
 | 
			
		||||
   .weak      EXTI9_5_IRQHandler   
 | 
			
		||||
   .thumb_set EXTI9_5_IRQHandler,Default_Handler
 | 
			
		||||
            
 | 
			
		||||
   .weak      TIM1_BRK_TIM9_IRQHandler            
 | 
			
		||||
   .thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler
 | 
			
		||||
            
 | 
			
		||||
   .weak      TIM1_UP_TIM10_IRQHandler            
 | 
			
		||||
   .thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler
 | 
			
		||||
      
 | 
			
		||||
   .weak      TIM1_TRG_COM_TIM11_IRQHandler      
 | 
			
		||||
   .thumb_set TIM1_TRG_COM_TIM11_IRQHandler,Default_Handler
 | 
			
		||||
      
 | 
			
		||||
   .weak      TIM1_CC_IRQHandler   
 | 
			
		||||
   .thumb_set TIM1_CC_IRQHandler,Default_Handler
 | 
			
		||||
                  
 | 
			
		||||
   .weak      TIM2_IRQHandler            
 | 
			
		||||
   .thumb_set TIM2_IRQHandler,Default_Handler
 | 
			
		||||
                  
 | 
			
		||||
   .weak      TIM3_IRQHandler            
 | 
			
		||||
   .thumb_set TIM3_IRQHandler,Default_Handler
 | 
			
		||||
                  
 | 
			
		||||
   .weak      TIM4_IRQHandler            
 | 
			
		||||
   .thumb_set TIM4_IRQHandler,Default_Handler
 | 
			
		||||
                  
 | 
			
		||||
   .weak      I2C1_EV_IRQHandler   
 | 
			
		||||
   .thumb_set I2C1_EV_IRQHandler,Default_Handler
 | 
			
		||||
                     
 | 
			
		||||
   .weak      I2C1_ER_IRQHandler   
 | 
			
		||||
   .thumb_set I2C1_ER_IRQHandler,Default_Handler
 | 
			
		||||
                     
 | 
			
		||||
   .weak      I2C2_EV_IRQHandler   
 | 
			
		||||
   .thumb_set I2C2_EV_IRQHandler,Default_Handler
 | 
			
		||||
                  
 | 
			
		||||
   .weak      I2C2_ER_IRQHandler   
 | 
			
		||||
   .thumb_set I2C2_ER_IRQHandler,Default_Handler
 | 
			
		||||
                           
 | 
			
		||||
   .weak      SPI1_IRQHandler            
 | 
			
		||||
   .thumb_set SPI1_IRQHandler,Default_Handler
 | 
			
		||||
                        
 | 
			
		||||
   .weak      SPI2_IRQHandler            
 | 
			
		||||
   .thumb_set SPI2_IRQHandler,Default_Handler
 | 
			
		||||
                  
 | 
			
		||||
   .weak      USART1_IRQHandler      
 | 
			
		||||
   .thumb_set USART1_IRQHandler,Default_Handler
 | 
			
		||||
                     
 | 
			
		||||
   .weak      USART2_IRQHandler      
 | 
			
		||||
   .thumb_set USART2_IRQHandler,Default_Handler
 | 
			
		||||
                                  
 | 
			
		||||
   .weak      EXTI15_10_IRQHandler               
 | 
			
		||||
   .thumb_set EXTI15_10_IRQHandler,Default_Handler
 | 
			
		||||
               
 | 
			
		||||
   .weak      RTC_Alarm_IRQHandler               
 | 
			
		||||
   .thumb_set RTC_Alarm_IRQHandler,Default_Handler
 | 
			
		||||
            
 | 
			
		||||
   .weak      OTG_FS_WKUP_IRQHandler         
 | 
			
		||||
   .thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler
 | 
			
		||||
            
 | 
			
		||||
   .weak      DMA1_Stream7_IRQHandler               
 | 
			
		||||
   .thumb_set DMA1_Stream7_IRQHandler,Default_Handler
 | 
			
		||||
                     
 | 
			
		||||
   .weak      SDIO_IRQHandler            
 | 
			
		||||
   .thumb_set SDIO_IRQHandler,Default_Handler
 | 
			
		||||
                     
 | 
			
		||||
   .weak      TIM5_IRQHandler            
 | 
			
		||||
   .thumb_set TIM5_IRQHandler,Default_Handler
 | 
			
		||||
                     
 | 
			
		||||
   .weak      SPI3_IRQHandler            
 | 
			
		||||
   .thumb_set SPI3_IRQHandler,Default_Handler
 | 
			
		||||
                     
 | 
			
		||||
   .weak      DMA2_Stream0_IRQHandler               
 | 
			
		||||
   .thumb_set DMA2_Stream0_IRQHandler,Default_Handler
 | 
			
		||||
               
 | 
			
		||||
   .weak      DMA2_Stream1_IRQHandler               
 | 
			
		||||
   .thumb_set DMA2_Stream1_IRQHandler,Default_Handler
 | 
			
		||||
                  
 | 
			
		||||
   .weak      DMA2_Stream2_IRQHandler               
 | 
			
		||||
   .thumb_set DMA2_Stream2_IRQHandler,Default_Handler
 | 
			
		||||
            
 | 
			
		||||
   .weak      DMA2_Stream3_IRQHandler               
 | 
			
		||||
   .thumb_set DMA2_Stream3_IRQHandler,Default_Handler
 | 
			
		||||
            
 | 
			
		||||
   .weak      DMA2_Stream4_IRQHandler               
 | 
			
		||||
   .thumb_set DMA2_Stream4_IRQHandler,Default_Handler
 | 
			
		||||
            
 | 
			
		||||
   .weak      OTG_FS_IRQHandler      
 | 
			
		||||
   .thumb_set OTG_FS_IRQHandler,Default_Handler
 | 
			
		||||
                     
 | 
			
		||||
   .weak      DMA2_Stream5_IRQHandler               
 | 
			
		||||
   .thumb_set DMA2_Stream5_IRQHandler,Default_Handler
 | 
			
		||||
                  
 | 
			
		||||
   .weak      DMA2_Stream6_IRQHandler               
 | 
			
		||||
   .thumb_set DMA2_Stream6_IRQHandler,Default_Handler
 | 
			
		||||
                  
 | 
			
		||||
   .weak      DMA2_Stream7_IRQHandler               
 | 
			
		||||
   .thumb_set DMA2_Stream7_IRQHandler,Default_Handler
 | 
			
		||||
                  
 | 
			
		||||
   .weak      USART6_IRQHandler      
 | 
			
		||||
   .thumb_set USART6_IRQHandler,Default_Handler
 | 
			
		||||
                        
 | 
			
		||||
   .weak      I2C3_EV_IRQHandler   
 | 
			
		||||
   .thumb_set I2C3_EV_IRQHandler,Default_Handler
 | 
			
		||||
                        
 | 
			
		||||
   .weak      I2C3_ER_IRQHandler   
 | 
			
		||||
   .thumb_set I2C3_ER_IRQHandler,Default_Handler
 | 
			
		||||
                        
 | 
			
		||||
   .weak      FPU_IRQHandler                  
 | 
			
		||||
   .thumb_set FPU_IRQHandler,Default_Handler  
 | 
			
		||||
 | 
			
		||||
   .weak      SPI4_IRQHandler                  
 | 
			
		||||
   .thumb_set SPI4_IRQHandler,Default_Handler
 | 
			
		||||
 | 
			
		||||
   .weak      SPI5_IRQHandler                  
 | 
			
		||||
   .thumb_set SPI5_IRQHandler,Default_Handler    
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue