Add DRS switch
This commit is contained in:
		
							
								
								
									
										370
									
								
								Core/Src/main.c
									
									
									
									
									
								
							
							
						
						
									
										370
									
								
								Core/Src/main.c
									
									
									
									
									
								
							@ -17,8 +17,8 @@
 | 
			
		||||
 */
 | 
			
		||||
/* USER CODE END Header */
 | 
			
		||||
/* Includes ------------------------------------------------------------------*/
 | 
			
		||||
#include "main.h"
 | 
			
		||||
#include "app_threadx.h"
 | 
			
		||||
#include "main.h"
 | 
			
		||||
#include "app_touchgfx.h"
 | 
			
		||||
 | 
			
		||||
/* Private includes ----------------------------------------------------------*/
 | 
			
		||||
@ -100,18 +100,19 @@ static void MX_DMA2D_Init(void);
 | 
			
		||||
/* USER CODE END 0 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief  The application entry point.
 | 
			
		||||
 * @retval int
 | 
			
		||||
 */
 | 
			
		||||
int main(void) {
 | 
			
		||||
  * @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.
 | 
			
		||||
   */
 | 
			
		||||
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
 | 
			
		||||
  HAL_Init();
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN Init */
 | 
			
		||||
@ -157,6 +158,7 @@ int main(void) {
 | 
			
		||||
  MX_ThreadX_Init();
 | 
			
		||||
 | 
			
		||||
  /* We should never get here as control is now taken by the scheduler */
 | 
			
		||||
 | 
			
		||||
  /* Infinite loop */
 | 
			
		||||
  /* USER CODE BEGIN WHILE */
 | 
			
		||||
  while (1) {
 | 
			
		||||
@ -168,10 +170,11 @@ int main(void) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief System Clock Configuration
 | 
			
		||||
 * @retval None
 | 
			
		||||
 */
 | 
			
		||||
void SystemClock_Config(void) {
 | 
			
		||||
  * @brief System Clock Configuration
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
void SystemClock_Config(void)
 | 
			
		||||
{
 | 
			
		||||
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
 | 
			
		||||
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
 | 
			
		||||
 | 
			
		||||
@ -179,19 +182,18 @@ void SystemClock_Config(void) {
 | 
			
		||||
  RCC->CKGAENR = 0xFFFFFFFF;
 | 
			
		||||
 | 
			
		||||
  /** Supply configuration update enable
 | 
			
		||||
   */
 | 
			
		||||
  */
 | 
			
		||||
  HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY);
 | 
			
		||||
 | 
			
		||||
  /** Configure the main internal regulator output voltage
 | 
			
		||||
   */
 | 
			
		||||
  */
 | 
			
		||||
  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2);
 | 
			
		||||
 | 
			
		||||
  while (!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {
 | 
			
		||||
  }
 | 
			
		||||
  while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}
 | 
			
		||||
 | 
			
		||||
  /** Initializes the RCC Oscillators according to the specified parameters
 | 
			
		||||
   * in the RCC_OscInitTypeDef structure.
 | 
			
		||||
   */
 | 
			
		||||
  * in the RCC_OscInitTypeDef structure.
 | 
			
		||||
  */
 | 
			
		||||
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
 | 
			
		||||
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
 | 
			
		||||
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
 | 
			
		||||
@ -204,15 +206,16 @@ void SystemClock_Config(void) {
 | 
			
		||||
  RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_3;
 | 
			
		||||
  RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE;
 | 
			
		||||
  RCC_OscInitStruct.PLL.PLLFRACN = 0;
 | 
			
		||||
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
 | 
			
		||||
  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_CLOCKTYPE_D3PCLK1 | RCC_CLOCKTYPE_D1PCLK1;
 | 
			
		||||
  */
 | 
			
		||||
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
 | 
			
		||||
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2
 | 
			
		||||
                              |RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1;
 | 
			
		||||
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
 | 
			
		||||
  RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;
 | 
			
		||||
  RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV1;
 | 
			
		||||
@ -221,17 +224,19 @@ void SystemClock_Config(void) {
 | 
			
		||||
  RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;
 | 
			
		||||
  RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2;
 | 
			
		||||
 | 
			
		||||
  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK) {
 | 
			
		||||
  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief CRC Initialization Function
 | 
			
		||||
 * @param None
 | 
			
		||||
 * @retval None
 | 
			
		||||
 */
 | 
			
		||||
static void MX_CRC_Init(void) {
 | 
			
		||||
  * @brief CRC Initialization Function
 | 
			
		||||
  * @param None
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
static void MX_CRC_Init(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN CRC_Init 0 */
 | 
			
		||||
 | 
			
		||||
@ -246,20 +251,23 @@ static void MX_CRC_Init(void) {
 | 
			
		||||
  hcrc.Init.InputDataInversionMode = CRC_INPUTDATA_INVERSION_NONE;
 | 
			
		||||
  hcrc.Init.OutputDataInversionMode = CRC_OUTPUTDATA_INVERSION_DISABLE;
 | 
			
		||||
  hcrc.InputDataFormat = CRC_INPUTDATA_FORMAT_BYTES;
 | 
			
		||||
  if (HAL_CRC_Init(&hcrc) != HAL_OK) {
 | 
			
		||||
  if (HAL_CRC_Init(&hcrc) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  /* USER CODE BEGIN CRC_Init 2 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END CRC_Init 2 */
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief DMA2D Initialization Function
 | 
			
		||||
 * @param None
 | 
			
		||||
 * @retval None
 | 
			
		||||
 */
 | 
			
		||||
static void MX_DMA2D_Init(void) {
 | 
			
		||||
  * @brief DMA2D Initialization Function
 | 
			
		||||
  * @param None
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
static void MX_DMA2D_Init(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN DMA2D_Init 0 */
 | 
			
		||||
 | 
			
		||||
@ -279,23 +287,27 @@ static void MX_DMA2D_Init(void) {
 | 
			
		||||
  hdma2d.LayerCfg[1].AlphaInverted = DMA2D_REGULAR_ALPHA;
 | 
			
		||||
  hdma2d.LayerCfg[1].RedBlueSwap = DMA2D_RB_REGULAR;
 | 
			
		||||
  hdma2d.LayerCfg[1].ChromaSubSampling = DMA2D_NO_CSS;
 | 
			
		||||
  if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) {
 | 
			
		||||
  if (HAL_DMA2D_Init(&hdma2d) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) {
 | 
			
		||||
  if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  /* USER CODE BEGIN DMA2D_Init 2 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END DMA2D_Init 2 */
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief FDCAN1 Initialization Function
 | 
			
		||||
 * @param None
 | 
			
		||||
 * @retval None
 | 
			
		||||
 */
 | 
			
		||||
static void MX_FDCAN1_Init(void) {
 | 
			
		||||
  * @brief FDCAN1 Initialization Function
 | 
			
		||||
  * @param None
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
static void MX_FDCAN1_Init(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN FDCAN1_Init 0 */
 | 
			
		||||
 | 
			
		||||
@ -332,20 +344,23 @@ static void MX_FDCAN1_Init(void) {
 | 
			
		||||
  hfdcan1.Init.TxFifoQueueElmtsNbr = 1;
 | 
			
		||||
  hfdcan1.Init.TxFifoQueueMode = FDCAN_TX_FIFO_OPERATION;
 | 
			
		||||
  hfdcan1.Init.TxElmtSize = FDCAN_DATA_BYTES_8;
 | 
			
		||||
  if (HAL_FDCAN_Init(&hfdcan1) != HAL_OK) {
 | 
			
		||||
  if (HAL_FDCAN_Init(&hfdcan1) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  /* USER CODE BEGIN FDCAN1_Init 2 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END FDCAN1_Init 2 */
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief JPEG Initialization Function
 | 
			
		||||
 * @param None
 | 
			
		||||
 * @retval None
 | 
			
		||||
 */
 | 
			
		||||
static void MX_JPEG_Init(void) {
 | 
			
		||||
  * @brief JPEG Initialization Function
 | 
			
		||||
  * @param None
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
static void MX_JPEG_Init(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN JPEG_Init 0 */
 | 
			
		||||
 | 
			
		||||
@ -355,20 +370,23 @@ static void MX_JPEG_Init(void) {
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END JPEG_Init 1 */
 | 
			
		||||
  hjpeg.Instance = JPEG;
 | 
			
		||||
  if (HAL_JPEG_Init(&hjpeg) != HAL_OK) {
 | 
			
		||||
  if (HAL_JPEG_Init(&hjpeg) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  /* USER CODE BEGIN JPEG_Init 2 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END JPEG_Init 2 */
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief LTDC Initialization Function
 | 
			
		||||
 * @param None
 | 
			
		||||
 * @retval None
 | 
			
		||||
 */
 | 
			
		||||
static void MX_LTDC_Init(void) {
 | 
			
		||||
  * @brief LTDC Initialization Function
 | 
			
		||||
  * @param None
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
static void MX_LTDC_Init(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN LTDC_Init 0 */
 | 
			
		||||
 | 
			
		||||
@ -395,7 +413,8 @@ static void MX_LTDC_Init(void) {
 | 
			
		||||
  hltdc.Init.Backcolor.Blue = 0;
 | 
			
		||||
  hltdc.Init.Backcolor.Green = 0;
 | 
			
		||||
  hltdc.Init.Backcolor.Red = 0;
 | 
			
		||||
  if (HAL_LTDC_Init(&hltdc) != HAL_OK) {
 | 
			
		||||
  if (HAL_LTDC_Init(&hltdc) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  pLayerCfg.WindowX0 = 0;
 | 
			
		||||
@ -413,20 +432,23 @@ static void MX_LTDC_Init(void) {
 | 
			
		||||
  pLayerCfg.Backcolor.Blue = 0;
 | 
			
		||||
  pLayerCfg.Backcolor.Green = 0;
 | 
			
		||||
  pLayerCfg.Backcolor.Red = 0;
 | 
			
		||||
  if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) {
 | 
			
		||||
  if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  /* USER CODE BEGIN LTDC_Init 2 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END LTDC_Init 2 */
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief OCTOSPI1 Initialization Function
 | 
			
		||||
 * @param None
 | 
			
		||||
 * @retval None
 | 
			
		||||
 */
 | 
			
		||||
static void MX_OCTOSPI1_Init(void) {
 | 
			
		||||
  * @brief OCTOSPI1 Initialization Function
 | 
			
		||||
  * @param None
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
static void MX_OCTOSPI1_Init(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN OCTOSPI1_Init 0 */
 | 
			
		||||
 | 
			
		||||
@ -454,27 +476,30 @@ static void MX_OCTOSPI1_Init(void) {
 | 
			
		||||
  hospi1.Init.DelayBlockBypass = HAL_OSPI_DELAY_BLOCK_BYPASSED;
 | 
			
		||||
  hospi1.Init.MaxTran = 0;
 | 
			
		||||
  hospi1.Init.Refresh = 0;
 | 
			
		||||
  if (HAL_OSPI_Init(&hospi1) != HAL_OK) {
 | 
			
		||||
  if (HAL_OSPI_Init(&hospi1) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  sOspiManagerCfg.ClkPort = 1;
 | 
			
		||||
  sOspiManagerCfg.NCSPort = 1;
 | 
			
		||||
  sOspiManagerCfg.IOLowPort = HAL_OSPIM_IOPORT_1_LOW;
 | 
			
		||||
  if (HAL_OSPIM_Config(&hospi1, &sOspiManagerCfg,
 | 
			
		||||
                       HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK) {
 | 
			
		||||
  if (HAL_OSPIM_Config(&hospi1, &sOspiManagerCfg, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  /* USER CODE BEGIN OCTOSPI1_Init 2 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END OCTOSPI1_Init 2 */
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief SPI3 Initialization Function
 | 
			
		||||
 * @param None
 | 
			
		||||
 * @retval None
 | 
			
		||||
 */
 | 
			
		||||
static void MX_SPI3_Init(void) {
 | 
			
		||||
  * @brief SPI3 Initialization Function
 | 
			
		||||
  * @param None
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
static void MX_SPI3_Init(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN SPI3_Init 0 */
 | 
			
		||||
 | 
			
		||||
@ -499,29 +524,30 @@ static void MX_SPI3_Init(void) {
 | 
			
		||||
  hspi3.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;
 | 
			
		||||
  hspi3.Init.NSSPolarity = SPI_NSS_POLARITY_LOW;
 | 
			
		||||
  hspi3.Init.FifoThreshold = SPI_FIFO_THRESHOLD_01DATA;
 | 
			
		||||
  hspi3.Init.TxCRCInitializationPattern =
 | 
			
		||||
      SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN;
 | 
			
		||||
  hspi3.Init.RxCRCInitializationPattern =
 | 
			
		||||
      SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN;
 | 
			
		||||
  hspi3.Init.TxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN;
 | 
			
		||||
  hspi3.Init.RxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN;
 | 
			
		||||
  hspi3.Init.MasterSSIdleness = SPI_MASTER_SS_IDLENESS_00CYCLE;
 | 
			
		||||
  hspi3.Init.MasterInterDataIdleness = SPI_MASTER_INTERDATA_IDLENESS_00CYCLE;
 | 
			
		||||
  hspi3.Init.MasterReceiverAutoSusp = SPI_MASTER_RX_AUTOSUSP_DISABLE;
 | 
			
		||||
  hspi3.Init.MasterKeepIOState = SPI_MASTER_KEEP_IO_STATE_DISABLE;
 | 
			
		||||
  hspi3.Init.IOSwap = SPI_IO_SWAP_DISABLE;
 | 
			
		||||
  if (HAL_SPI_Init(&hspi3) != HAL_OK) {
 | 
			
		||||
  if (HAL_SPI_Init(&hspi3) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  /* USER CODE BEGIN SPI3_Init 2 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END SPI3_Init 2 */
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief TIM1 Initialization Function
 | 
			
		||||
 * @param None
 | 
			
		||||
 * @retval None
 | 
			
		||||
 */
 | 
			
		||||
static void MX_TIM1_Init(void) {
 | 
			
		||||
  * @brief TIM1 Initialization Function
 | 
			
		||||
  * @param None
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
static void MX_TIM1_Init(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN TIM1_Init 0 */
 | 
			
		||||
 | 
			
		||||
@ -542,20 +568,24 @@ static void MX_TIM1_Init(void) {
 | 
			
		||||
  htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
 | 
			
		||||
  htim1.Init.RepetitionCounter = 0;
 | 
			
		||||
  htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
 | 
			
		||||
  if (HAL_TIM_Base_Init(&htim1) != HAL_OK) {
 | 
			
		||||
  if (HAL_TIM_Base_Init(&htim1) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
 | 
			
		||||
  if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) {
 | 
			
		||||
  if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  if (HAL_TIM_PWM_Init(&htim1) != HAL_OK) {
 | 
			
		||||
  if (HAL_TIM_PWM_Init(&htim1) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
 | 
			
		||||
  sMasterConfig.MasterOutputTrigger2 = TIM_TRGO2_RESET;
 | 
			
		||||
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
 | 
			
		||||
  if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) {
 | 
			
		||||
  if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  sConfigOC.OCMode = TIM_OCMODE_PWM1;
 | 
			
		||||
@ -565,13 +595,16 @@ static void MX_TIM1_Init(void) {
 | 
			
		||||
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
 | 
			
		||||
  sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
 | 
			
		||||
  sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
 | 
			
		||||
  if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) {
 | 
			
		||||
  if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) {
 | 
			
		||||
  if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) {
 | 
			
		||||
  if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
 | 
			
		||||
@ -585,21 +618,24 @@ static void MX_TIM1_Init(void) {
 | 
			
		||||
  sBreakDeadTimeConfig.Break2Polarity = TIM_BREAK2POLARITY_HIGH;
 | 
			
		||||
  sBreakDeadTimeConfig.Break2Filter = 0;
 | 
			
		||||
  sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
 | 
			
		||||
  if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) {
 | 
			
		||||
  if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  /* USER CODE BEGIN TIM1_Init 2 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END TIM1_Init 2 */
 | 
			
		||||
  HAL_TIM_MspPostInit(&htim1);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief TIM2 Initialization Function
 | 
			
		||||
 * @param None
 | 
			
		||||
 * @retval None
 | 
			
		||||
 */
 | 
			
		||||
static void MX_TIM2_Init(void) {
 | 
			
		||||
  * @brief TIM2 Initialization Function
 | 
			
		||||
  * @param None
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
static void MX_TIM2_Init(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN TIM2_Init 0 */
 | 
			
		||||
 | 
			
		||||
@ -618,40 +654,47 @@ static void MX_TIM2_Init(void) {
 | 
			
		||||
  htim2.Init.Period = 99;
 | 
			
		||||
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
 | 
			
		||||
  htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
 | 
			
		||||
  if (HAL_TIM_Base_Init(&htim2) != HAL_OK) {
 | 
			
		||||
  if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
 | 
			
		||||
  if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) {
 | 
			
		||||
  if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) {
 | 
			
		||||
  if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
 | 
			
		||||
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
 | 
			
		||||
  if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) {
 | 
			
		||||
  if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  sConfigOC.OCMode = TIM_OCMODE_PWM1;
 | 
			
		||||
  sConfigOC.Pulse = 100;
 | 
			
		||||
  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
 | 
			
		||||
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
 | 
			
		||||
  if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) {
 | 
			
		||||
  if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  /* USER CODE BEGIN TIM2_Init 2 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END TIM2_Init 2 */
 | 
			
		||||
  HAL_TIM_MspPostInit(&htim2);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief TIM4 Initialization Function
 | 
			
		||||
 * @param None
 | 
			
		||||
 * @retval None
 | 
			
		||||
 */
 | 
			
		||||
static void MX_TIM4_Init(void) {
 | 
			
		||||
  * @brief TIM4 Initialization Function
 | 
			
		||||
  * @param None
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
static void MX_TIM4_Init(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN TIM4_Init 0 */
 | 
			
		||||
 | 
			
		||||
@ -669,36 +712,42 @@ static void MX_TIM4_Init(void) {
 | 
			
		||||
  htim4.Init.Period = 65535;
 | 
			
		||||
  htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
 | 
			
		||||
  htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
 | 
			
		||||
  if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) {
 | 
			
		||||
  if (HAL_TIM_PWM_Init(&htim4) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
 | 
			
		||||
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
 | 
			
		||||
  if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) {
 | 
			
		||||
  if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  sConfigOC.OCMode = TIM_OCMODE_PWM1;
 | 
			
		||||
  sConfigOC.Pulse = 0;
 | 
			
		||||
  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
 | 
			
		||||
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
 | 
			
		||||
  if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) {
 | 
			
		||||
  if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) {
 | 
			
		||||
  if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  /* USER CODE BEGIN TIM4_Init 2 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END TIM4_Init 2 */
 | 
			
		||||
  HAL_TIM_MspPostInit(&htim4);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief TIM17 Initialization Function
 | 
			
		||||
 * @param None
 | 
			
		||||
 * @retval None
 | 
			
		||||
 */
 | 
			
		||||
static void MX_TIM17_Init(void) {
 | 
			
		||||
  * @brief TIM17 Initialization Function
 | 
			
		||||
  * @param None
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
static void MX_TIM17_Init(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN TIM17_Init 0 */
 | 
			
		||||
 | 
			
		||||
@ -708,24 +757,27 @@ static void MX_TIM17_Init(void) {
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END TIM17_Init 1 */
 | 
			
		||||
  htim17.Instance = TIM17;
 | 
			
		||||
  htim17.Init.Prescaler = 16 - 1;
 | 
			
		||||
  htim17.Init.Prescaler = 16-1;
 | 
			
		||||
  htim17.Init.CounterMode = TIM_COUNTERMODE_UP;
 | 
			
		||||
  htim17.Init.Period = 1000 - 1;
 | 
			
		||||
  htim17.Init.Period = 1000-1;
 | 
			
		||||
  htim17.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
 | 
			
		||||
  htim17.Init.RepetitionCounter = 0;
 | 
			
		||||
  htim17.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
 | 
			
		||||
  if (HAL_TIM_Base_Init(&htim17) != HAL_OK) {
 | 
			
		||||
  if (HAL_TIM_Base_Init(&htim17) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  /* USER CODE BEGIN TIM17_Init 2 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END TIM17_Init 2 */
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Enable DMA controller clock
 | 
			
		||||
 */
 | 
			
		||||
static void MX_DMA_Init(void) {
 | 
			
		||||
  * Enable DMA controller clock
 | 
			
		||||
  */
 | 
			
		||||
static void MX_DMA_Init(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  /* DMA controller clock enable */
 | 
			
		||||
  __HAL_RCC_DMA1_CLK_ENABLE();
 | 
			
		||||
@ -734,17 +786,19 @@ static void MX_DMA_Init(void) {
 | 
			
		||||
  /* DMA1_Stream0_IRQn interrupt configuration */
 | 
			
		||||
  HAL_NVIC_SetPriority(DMA1_Stream0_IRQn, 0, 0);
 | 
			
		||||
  HAL_NVIC_EnableIRQ(DMA1_Stream0_IRQn);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief GPIO Initialization Function
 | 
			
		||||
 * @param None
 | 
			
		||||
 * @retval None
 | 
			
		||||
 */
 | 
			
		||||
static void MX_GPIO_Init(void) {
 | 
			
		||||
  * @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 */
 | 
			
		||||
/* USER CODE BEGIN MX_GPIO_Init_1 */
 | 
			
		||||
/* USER CODE END MX_GPIO_Init_1 */
 | 
			
		||||
 | 
			
		||||
  /* GPIO Ports Clock Enable */
 | 
			
		||||
  __HAL_RCC_GPIOE_CLK_ENABLE();
 | 
			
		||||
@ -757,38 +811,33 @@ static void MX_GPIO_Init(void) {
 | 
			
		||||
  __HAL_RCC_GPIOG_CLK_ENABLE();
 | 
			
		||||
 | 
			
		||||
  /*Configure GPIO pin Output Level */
 | 
			
		||||
  HAL_GPIO_WritePin(
 | 
			
		||||
      GPIOA, STATUS1_Pin | STATUS2_Pin | DISPSPI_SCL_Pin | DISPSPI_SDA_Pin,
 | 
			
		||||
      GPIO_PIN_RESET);
 | 
			
		||||
  HAL_GPIO_WritePin(GPIOA, STATUS1_Pin|STATUS2_Pin|DISPSPI_SCL_Pin|DISPSPI_SDA_Pin, GPIO_PIN_RESET);
 | 
			
		||||
 | 
			
		||||
  /*Configure GPIO pin Output Level */
 | 
			
		||||
  HAL_GPIO_WritePin(LED_LE_GPIO_Port, LED_LE_Pin, GPIO_PIN_RESET);
 | 
			
		||||
 | 
			
		||||
  /*Configure GPIO pin Output Level */
 | 
			
		||||
  HAL_GPIO_WritePin(GPIOG, DISPSPI_CSX_Pin | DISPSPI_DCX_Pin | DISP_RESET_Pin,
 | 
			
		||||
                    GPIO_PIN_RESET);
 | 
			
		||||
  HAL_GPIO_WritePin(GPIOG, DISPSPI_CSX_Pin|DISPSPI_DCX_Pin|DISP_RESET_Pin, GPIO_PIN_RESET);
 | 
			
		||||
 | 
			
		||||
  /*Configure GPIO pin Output Level */
 | 
			
		||||
  HAL_GPIO_WritePin(BOOT0_SET_GPIO_Port, BOOT0_SET_Pin, GPIO_PIN_RESET);
 | 
			
		||||
 | 
			
		||||
  /*Configure GPIO pins : ENC1A_Pin ENC1B_Pin ENC2A_Pin ENC2B_Pin */
 | 
			
		||||
  GPIO_InitStruct.Pin = ENC1A_Pin | ENC1B_Pin | ENC2A_Pin | ENC2B_Pin;
 | 
			
		||||
  GPIO_InitStruct.Pin = ENC1A_Pin|ENC1B_Pin|ENC2A_Pin|ENC2B_Pin;
 | 
			
		||||
  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;
 | 
			
		||||
  GPIO_InitStruct.Pull = GPIO_NOPULL;
 | 
			
		||||
  HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
 | 
			
		||||
 | 
			
		||||
  /*Configure GPIO pins : BTN1_Pin BTN2_Pin BTN3_Pin BTN4_Pin
 | 
			
		||||
                           BTN5_Pin BTN6_Pin */
 | 
			
		||||
  GPIO_InitStruct.Pin =
 | 
			
		||||
      BTN1_Pin | BTN2_Pin | BTN3_Pin | BTN4_Pin | BTN5_Pin | BTN6_Pin;
 | 
			
		||||
                           BTN5_Pin BTN6_Pin SW_DRS_Pin */
 | 
			
		||||
  GPIO_InitStruct.Pin = BTN1_Pin|BTN2_Pin|BTN3_Pin|BTN4_Pin
 | 
			
		||||
                          |BTN5_Pin|BTN6_Pin|SW_DRS_Pin;
 | 
			
		||||
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
 | 
			
		||||
  GPIO_InitStruct.Pull = GPIO_NOPULL;
 | 
			
		||||
  HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
 | 
			
		||||
 | 
			
		||||
  /*Configure GPIO pins : STATUS1_Pin STATUS2_Pin DISPSPI_SCL_Pin
 | 
			
		||||
   * DISPSPI_SDA_Pin */
 | 
			
		||||
  GPIO_InitStruct.Pin =
 | 
			
		||||
      STATUS1_Pin | STATUS2_Pin | DISPSPI_SCL_Pin | DISPSPI_SDA_Pin;
 | 
			
		||||
  /*Configure GPIO pins : STATUS1_Pin STATUS2_Pin DISPSPI_SCL_Pin DISPSPI_SDA_Pin */
 | 
			
		||||
  GPIO_InitStruct.Pin = STATUS1_Pin|STATUS2_Pin|DISPSPI_SCL_Pin|DISPSPI_SDA_Pin;
 | 
			
		||||
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
 | 
			
		||||
  GPIO_InitStruct.Pull = GPIO_NOPULL;
 | 
			
		||||
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
 | 
			
		||||
@ -802,7 +851,7 @@ static void MX_GPIO_Init(void) {
 | 
			
		||||
  HAL_GPIO_Init(LED_LE_GPIO_Port, &GPIO_InitStruct);
 | 
			
		||||
 | 
			
		||||
  /*Configure GPIO pins : DISPSPI_CSX_Pin DISPSPI_DCX_Pin DISP_RESET_Pin */
 | 
			
		||||
  GPIO_InitStruct.Pin = DISPSPI_CSX_Pin | DISPSPI_DCX_Pin | DISP_RESET_Pin;
 | 
			
		||||
  GPIO_InitStruct.Pin = DISPSPI_CSX_Pin|DISPSPI_DCX_Pin|DISP_RESET_Pin;
 | 
			
		||||
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
 | 
			
		||||
  GPIO_InitStruct.Pull = GPIO_NOPULL;
 | 
			
		||||
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
 | 
			
		||||
@ -825,8 +874,8 @@ static void MX_GPIO_Init(void) {
 | 
			
		||||
  HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0);
 | 
			
		||||
  HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN MX_GPIO_Init_2 */
 | 
			
		||||
  /* USER CODE END MX_GPIO_Init_2 */
 | 
			
		||||
/* USER CODE BEGIN MX_GPIO_Init_2 */
 | 
			
		||||
/* USER CODE END MX_GPIO_Init_2 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* USER CODE BEGIN 4 */
 | 
			
		||||
@ -837,14 +886,15 @@ extern "C" {
 | 
			
		||||
/* USER CODE END 4 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief  Period elapsed callback in non blocking mode
 | 
			
		||||
 * @note   This function is called  when TIM6 interrupt took place, inside
 | 
			
		||||
 * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment
 | 
			
		||||
 * a global variable "uwTick" used as application time base.
 | 
			
		||||
 * @param  htim : TIM handle
 | 
			
		||||
 * @retval None
 | 
			
		||||
 */
 | 
			
		||||
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
 | 
			
		||||
  * @brief  Period elapsed callback in non blocking mode
 | 
			
		||||
  * @note   This function is called  when TIM6 interrupt took place, inside
 | 
			
		||||
  * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment
 | 
			
		||||
  * a global variable "uwTick" used as application time base.
 | 
			
		||||
  * @param  htim : TIM handle
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
 | 
			
		||||
{
 | 
			
		||||
  /* USER CODE BEGIN Callback 0 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END Callback 0 */
 | 
			
		||||
@ -859,10 +909,11 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief  This function is executed in case of error occurrence.
 | 
			
		||||
 * @retval None
 | 
			
		||||
 */
 | 
			
		||||
void Error_Handler(void) {
 | 
			
		||||
  * @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();
 | 
			
		||||
@ -878,15 +929,16 @@ void _damnyoucubemx() {
 | 
			
		||||
  /* USER CODE END Error_Handler_Debug */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef USE_FULL_ASSERT
 | 
			
		||||
#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) {
 | 
			
		||||
  * @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,
 | 
			
		||||
 | 
			
		||||
@ -65,6 +65,7 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
 | 
			
		||||
  */
 | 
			
		||||
void HAL_MspInit(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN MspInit 0 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END MspInit 0 */
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user