Move include declaration to private includes

This commit is contained in:
2026-06-09 09:50:00 +02:00
parent 5d3c8c0ec0
commit 770e97ccd9
+465 -466
View File
@@ -1,466 +1,465 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/** /**
****************************************************************************** ******************************************************************************
* @file : main.c * @file : main.c
* @brief : Main program body * @brief : Main program body
****************************************************************************** ******************************************************************************
* @attention * @attention
* *
* Copyright (c) 2026 STMicroelectronics. * Copyright (c) 2026 STMicroelectronics.
* All rights reserved. * All rights reserved.
* *
* This software is licensed under terms that can be found in the LICENSE file * This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component. * in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS. * If no LICENSE file comes with this software, it is provided AS-IS.
* *
****************************************************************************** ******************************************************************************
*/ */
/* USER CODE END Header */ /* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/
#include "main.h" #include "main.h"
#include "cmsis_os.h" #include "cmsis_os.h"
#include "canlog.h"
/* Private includes ----------------------------------------------------------*/
/* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */
/* USER CODE BEGIN Includes */ #include "canlog.h"
/* USER CODE END Includes */
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
/* Private typedef -----------------------------------------------------------*/ /* USER CODE BEGIN PTD */
/* USER CODE BEGIN PTD */ typedef struct {
typedef struct { GPIO_TypeDef* port;
GPIO_TypeDef* port; uint16_t pin;
uint16_t pin; } LED_Config;
} LED_Config; /* USER CODE END PTD */
/* USER CODE END PTD */
/* Private define ------------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/ /* USER CODE BEGIN PD */
/* USER CODE BEGIN PD */
/* USER CODE END PD */
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/ /* USER CODE BEGIN PM */
/* USER CODE BEGIN PM */
/* USER CODE END PM */
/* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/ CAN_HandleTypeDef hcan1;
CAN_HandleTypeDef hcan1; CAN_HandleTypeDef hcan2;
CAN_HandleTypeDef hcan2;
SD_HandleTypeDef hsd;
SD_HandleTypeDef hsd; DMA_HandleTypeDef hdma_sdio_rx;
DMA_HandleTypeDef hdma_sdio_rx; DMA_HandleTypeDef hdma_sdio_tx;
DMA_HandleTypeDef hdma_sdio_tx;
/* USER CODE BEGIN PV */
/* USER CODE BEGIN PV */ LED_Config led_can1 = {GPIOB, GPIO_PIN_2};
LED_Config led_can1 = {GPIOB, GPIO_PIN_2}; LED_Config led_can2 = {GPIOB, GPIO_PIN_5};
LED_Config led_can2 = {GPIOB, GPIO_PIN_5}; /* USER CODE END PV */
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void);
void SystemClock_Config(void); static void MX_GPIO_Init(void);
static void MX_GPIO_Init(void); static void MX_DMA_Init(void);
static void MX_DMA_Init(void); static void MX_CAN1_Init(void);
static void MX_CAN1_Init(void); static void MX_CAN2_Init(void);
static void MX_CAN2_Init(void); static void MX_SDIO_SD_Init(void);
static void MX_SDIO_SD_Init(void);
/* USER CODE BEGIN PFP */
/* USER CODE BEGIN PFP */ void vCAN_Get(void *argument);
void vCAN_Get(void *argument); void vLED_HeartbeatOnCanRx(void *argument);
void vLED_HeartbeatOnCanRx(void *argument); /* USER CODE END PFP */
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
/* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */
/* USER CODE BEGIN 0 */
/* USER CODE END 0 */
/* USER CODE END 0 */
/**
/** * @brief The application entry point.
* @brief The application entry point. * @retval int
* @retval int */
*/ int main(void)
int main(void) {
{
/* USER CODE BEGIN 1 */
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init();
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* USER CODE END Init */
/* Configure the system clock */
/* Configure the system clock */ SystemClock_Config();
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
/* Initialize all configured peripherals */ MX_GPIO_Init();
MX_GPIO_Init(); MX_DMA_Init();
MX_DMA_Init(); MX_CAN1_Init();
MX_CAN1_Init(); MX_CAN2_Init();
MX_CAN2_Init(); MX_SDIO_SD_Init();
MX_SDIO_SD_Init(); /* USER CODE BEGIN 2 */
/* USER CODE BEGIN 2 */
// Initialize CAN1 and CAN2
// Initialize CAN1 and CAN2 CAN_Logger_Init(&hcan1, &hcan2);
CAN_Logger_Init(&hcan1, &hcan2);
/* USER CODE END 2 */
/* USER CODE END 2 */
/* Init scheduler */
/* Init scheduler */ osKernelInitialize();
osKernelInitialize();
/* USER CODE BEGIN RTOS_MUTEX */
/* USER CODE BEGIN RTOS_MUTEX */ /* add mutexes, ... */
/* add mutexes, ... */ /* USER CODE END RTOS_MUTEX */
/* USER CODE END RTOS_MUTEX */
/* USER CODE BEGIN RTOS_SEMAPHORES */
/* USER CODE BEGIN RTOS_SEMAPHORES */ /* add semaphores, ... */
/* add semaphores, ... */ /* USER CODE END RTOS_SEMAPHORES */
/* USER CODE END RTOS_SEMAPHORES */
/* USER CODE BEGIN RTOS_TIMERS */
/* USER CODE BEGIN RTOS_TIMERS */ /* start timers, add new ones, ... */
/* start timers, add new ones, ... */ /* USER CODE END RTOS_TIMERS */
/* USER CODE END RTOS_TIMERS */
/* USER CODE BEGIN RTOS_QUEUES */
/* USER CODE BEGIN RTOS_QUEUES */ /* add queues, ... */
/* add queues, ... */ /* USER CODE END RTOS_QUEUES */
/* USER CODE END RTOS_QUEUES */
/* USER CODE BEGIN RTOS_THREADS */
/* USER CODE BEGIN RTOS_THREADS */ vCAN1_rx = osThreadNew(vCAN_Get, &hcan1, &vCAN1_rx_attributes);
vCAN1_rx = osThreadNew(vCAN_Get, &hcan1, &vCAN1_rx_attributes); vCAN2_rx = osThreadNew(vCAN_Get, &hcan2, &vCAN2_rx_attributes);
vCAN2_rx = osThreadNew(vCAN_Get, &hcan2, &vCAN2_rx_attributes); vLED_CAN1_Heartbeat = osThreadNew(vLED_HeartbeatOnCanRx, &led_can1, &vLED_CAN1_Heartbeat_attributes);
vLED_CAN1_Heartbeat = osThreadNew(vLED_HeartbeatOnCanRx, &led_can1, &vLED_CAN1_Heartbeat_attributes); vLED_CAN2_Heartbeat = osThreadNew(vLED_HeartbeatOnCanRx, &led_can2, &vLED_CAN2_Heartbeat_attributes);
vLED_CAN2_Heartbeat = osThreadNew(vLED_HeartbeatOnCanRx, &led_can2, &vLED_CAN2_Heartbeat_attributes); /* USER CODE END RTOS_THREADS */
/* USER CODE END RTOS_THREADS */
/* USER CODE BEGIN RTOS_EVENTS */
/* USER CODE BEGIN RTOS_EVENTS */ /* add events, ... */
/* add events, ... */ /* USER CODE END RTOS_EVENTS */
/* USER CODE END RTOS_EVENTS */
/* Start scheduler */
/* Start scheduler */ osKernelStart();
osKernelStart();
/* We should never get here as control is now taken by the scheduler */
/* We should never get here as control is now taken by the scheduler */
/* Infinite loop */
/* Infinite loop */ /* USER CODE BEGIN WHILE */
/* USER CODE BEGIN WHILE */ while (1)
while (1) {
{ /* USER CODE END WHILE */
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
/* USER CODE BEGIN 3 */ }
} /* USER CODE END 3 */
/* USER CODE END 3 */ }
}
/**
/** * @brief System Clock Configuration
* @brief System Clock Configuration * @retval None
* @retval None */
*/ void SystemClock_Config(void)
void SystemClock_Config(void) {
{ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
/** Configure the main internal regulator output voltage
/** Configure the main internal regulator output voltage */
*/ __HAL_RCC_PWR_CLK_ENABLE();
__HAL_RCC_PWR_CLK_ENABLE(); __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
/** Initializes the RCC Oscillators according to the specified parameters
/** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure.
* in the RCC_OscInitTypeDef structure. */
*/ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; RCC_OscInitStruct.PLL.PLLM = 16;
RCC_OscInitStruct.PLL.PLLM = 16; RCC_OscInitStruct.PLL.PLLN = 336;
RCC_OscInitStruct.PLL.PLLN = 336; RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; RCC_OscInitStruct.PLL.PLLQ = 7;
RCC_OscInitStruct.PLL.PLLQ = 7; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
{ Error_Handler();
Error_Handler(); }
}
/** Initializes the CPU, AHB and APB buses clocks
/** Initializes the CPU, AHB and APB buses clocks */
*/ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV4;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV4;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) {
{ Error_Handler();
Error_Handler(); }
} }
}
/**
/** * @brief CAN1 Initialization Function
* @brief CAN1 Initialization Function * @param None
* @param None * @retval None
* @retval None */
*/ static void MX_CAN1_Init(void)
static void MX_CAN1_Init(void) {
{
/* USER CODE BEGIN CAN1_Init 0 */
/* USER CODE BEGIN CAN1_Init 0 */
/* USER CODE END CAN1_Init 0 */
/* USER CODE END CAN1_Init 0 */
/* USER CODE BEGIN CAN1_Init 1 */
/* USER CODE BEGIN CAN1_Init 1 */
/* USER CODE END CAN1_Init 1 */
/* USER CODE END CAN1_Init 1 */ hcan1.Instance = CAN1;
hcan1.Instance = CAN1; hcan1.Init.Prescaler = 4;
hcan1.Init.Prescaler = 4; hcan1.Init.Mode = CAN_MODE_SILENT;
hcan1.Init.Mode = CAN_MODE_SILENT; hcan1.Init.SyncJumpWidth = CAN_SJW_1TQ;
hcan1.Init.SyncJumpWidth = CAN_SJW_1TQ; hcan1.Init.TimeSeg1 = CAN_BS1_16TQ;
hcan1.Init.TimeSeg1 = CAN_BS1_16TQ; hcan1.Init.TimeSeg2 = CAN_BS2_4TQ;
hcan1.Init.TimeSeg2 = CAN_BS2_4TQ; hcan1.Init.TimeTriggeredMode = DISABLE;
hcan1.Init.TimeTriggeredMode = DISABLE; hcan1.Init.AutoBusOff = DISABLE;
hcan1.Init.AutoBusOff = DISABLE; hcan1.Init.AutoWakeUp = ENABLE;
hcan1.Init.AutoWakeUp = ENABLE; hcan1.Init.AutoRetransmission = DISABLE;
hcan1.Init.AutoRetransmission = DISABLE; hcan1.Init.ReceiveFifoLocked = DISABLE;
hcan1.Init.ReceiveFifoLocked = DISABLE; hcan1.Init.TransmitFifoPriority = DISABLE;
hcan1.Init.TransmitFifoPriority = DISABLE; if (HAL_CAN_Init(&hcan1) != HAL_OK)
if (HAL_CAN_Init(&hcan1) != HAL_OK) {
{ Error_Handler();
Error_Handler(); }
} /* USER CODE BEGIN CAN1_Init 2 */
/* USER CODE BEGIN CAN1_Init 2 */
/* USER CODE END CAN1_Init 2 */
/* USER CODE END CAN1_Init 2 */
}
}
/**
/** * @brief CAN2 Initialization Function
* @brief CAN2 Initialization Function * @param None
* @param None * @retval None
* @retval None */
*/ static void MX_CAN2_Init(void)
static void MX_CAN2_Init(void) {
{
/* USER CODE BEGIN CAN2_Init 0 */
/* USER CODE BEGIN CAN2_Init 0 */
/* USER CODE END CAN2_Init 0 */
/* USER CODE END CAN2_Init 0 */
/* USER CODE BEGIN CAN2_Init 1 */
/* USER CODE BEGIN CAN2_Init 1 */
/* USER CODE END CAN2_Init 1 */
/* USER CODE END CAN2_Init 1 */ hcan2.Instance = CAN2;
hcan2.Instance = CAN2; hcan2.Init.Prescaler = 8;
hcan2.Init.Prescaler = 8; hcan2.Init.Mode = CAN_MODE_SILENT;
hcan2.Init.Mode = CAN_MODE_SILENT; hcan2.Init.SyncJumpWidth = CAN_SJW_1TQ;
hcan2.Init.SyncJumpWidth = CAN_SJW_1TQ; hcan2.Init.TimeSeg1 = CAN_BS1_16TQ;
hcan2.Init.TimeSeg1 = CAN_BS1_16TQ; hcan2.Init.TimeSeg2 = CAN_BS2_4TQ;
hcan2.Init.TimeSeg2 = CAN_BS2_4TQ; hcan2.Init.TimeTriggeredMode = DISABLE;
hcan2.Init.TimeTriggeredMode = DISABLE; hcan2.Init.AutoBusOff = DISABLE;
hcan2.Init.AutoBusOff = DISABLE; hcan2.Init.AutoWakeUp = ENABLE;
hcan2.Init.AutoWakeUp = ENABLE; hcan2.Init.AutoRetransmission = DISABLE;
hcan2.Init.AutoRetransmission = DISABLE; hcan2.Init.ReceiveFifoLocked = DISABLE;
hcan2.Init.ReceiveFifoLocked = DISABLE; hcan2.Init.TransmitFifoPriority = DISABLE;
hcan2.Init.TransmitFifoPriority = DISABLE; if (HAL_CAN_Init(&hcan2) != HAL_OK)
if (HAL_CAN_Init(&hcan2) != HAL_OK) {
{ Error_Handler();
Error_Handler(); }
} /* USER CODE BEGIN CAN2_Init 2 */
/* USER CODE BEGIN CAN2_Init 2 */
/* USER CODE END CAN2_Init 2 */
/* USER CODE END CAN2_Init 2 */
}
}
/**
/** * @brief SDIO Initialization Function
* @brief SDIO Initialization Function * @param None
* @param None * @retval None
* @retval None */
*/ static void MX_SDIO_SD_Init(void)
static void MX_SDIO_SD_Init(void) {
{
/* USER CODE BEGIN SDIO_Init 0 */
/* USER CODE BEGIN SDIO_Init 0 */
/* USER CODE END SDIO_Init 0 */
/* USER CODE END SDIO_Init 0 */
/* USER CODE BEGIN SDIO_Init 1 */
/* USER CODE BEGIN SDIO_Init 1 */
/* USER CODE END SDIO_Init 1 */
/* USER CODE END SDIO_Init 1 */ hsd.Instance = SDIO;
hsd.Instance = SDIO; hsd.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING;
hsd.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING; hsd.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE;
hsd.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE; hsd.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE;
hsd.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE; hsd.Init.BusWide = SDIO_BUS_WIDE_1B;
hsd.Init.BusWide = SDIO_BUS_WIDE_1B; hsd.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_DISABLE;
hsd.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_DISABLE; hsd.Init.ClockDiv = 0;
hsd.Init.ClockDiv = 0; if (HAL_SD_Init(&hsd) != HAL_OK)
if (HAL_SD_Init(&hsd) != HAL_OK) {
{ Error_Handler();
Error_Handler(); }
} if (HAL_SD_ConfigWideBusOperation(&hsd, SDIO_BUS_WIDE_4B) != HAL_OK)
if (HAL_SD_ConfigWideBusOperation(&hsd, SDIO_BUS_WIDE_4B) != HAL_OK) {
{ Error_Handler();
Error_Handler(); }
} /* USER CODE BEGIN SDIO_Init 2 */
/* USER CODE BEGIN SDIO_Init 2 */
/* USER CODE END SDIO_Init 2 */
/* USER CODE END SDIO_Init 2 */
}
}
/**
/** * Enable DMA controller clock
* Enable DMA controller clock */
*/ static void MX_DMA_Init(void)
static void MX_DMA_Init(void) {
{
/* DMA controller clock enable */
/* DMA controller clock enable */ __HAL_RCC_DMA2_CLK_ENABLE();
__HAL_RCC_DMA2_CLK_ENABLE();
/* DMA interrupt init */
/* DMA interrupt init */ /* DMA2_Stream3_IRQn interrupt configuration */
/* DMA2_Stream3_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DMA2_Stream3_IRQn, 5, 0);
HAL_NVIC_SetPriority(DMA2_Stream3_IRQn, 5, 0); HAL_NVIC_EnableIRQ(DMA2_Stream3_IRQn);
HAL_NVIC_EnableIRQ(DMA2_Stream3_IRQn); /* DMA2_Stream6_IRQn interrupt configuration */
/* DMA2_Stream6_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 5, 0);
HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 5, 0); HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
}
}
/**
/** * @brief GPIO Initialization Function
* @brief GPIO Initialization Function * @param None
* @param None * @retval None
* @retval None */
*/ static void MX_GPIO_Init(void)
static void MX_GPIO_Init(void) {
{ GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitTypeDef GPIO_InitStruct = {0}; /* USER CODE BEGIN MX_GPIO_Init_1 */
/* USER CODE BEGIN MX_GPIO_Init_1 */
/* USER CODE END MX_GPIO_Init_1 */
/* USER CODE END MX_GPIO_Init_1 */
/* GPIO Ports Clock Enable */
/* GPIO Ports Clock Enable */ __HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOH_CLK_ENABLE();
__HAL_RCC_GPIOH_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
/*Configure GPIO pin Output Level */
/*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5, GPIO_PIN_RESET);
/*Configure GPIO pins : PC13 PC14 PC15 PC0
/*Configure GPIO pins : PC13 PC14 PC15 PC0 PC1 PC2 PC3 PC4
PC1 PC2 PC3 PC4 PC5 PC6 PC7 */
PC5 PC6 PC7 */ GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_0
GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_0 |GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4
|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4 |GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7;
|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
/*Configure GPIO pins : PH0 PH1 */
/*Configure GPIO pins : PH0 PH1 */ GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);
HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);
/*Configure GPIO pins : PA0 PA1 PA2 PA3
/*Configure GPIO pins : PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7
PA4 PA5 PA6 PA7 PA8 PA9 PA10 PA11
PA8 PA9 PA10 PA11 PA12 PA13 PA14 PA15 */
PA12 PA13 PA14 PA15 */ GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3 |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7
|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7 |GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11
|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11 |GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;
|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/*Configure GPIO pins : PB0 PB1 PB2 PB10
/*Configure GPIO pins : PB0 PB1 PB2 PB10 PB11 PB14 PB15 PB6
PB11 PB14 PB15 PB6 PB7 */
PB7 */ GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_10
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_10 |GPIO_PIN_11|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_6
|GPIO_PIN_11|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_6 |GPIO_PIN_7;
|GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/*Configure GPIO pins : PB3 PB4 PB5 */
/*Configure GPIO pins : PB3 PB4 PB5 */ GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5;
GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* USER CODE BEGIN MX_GPIO_Init_2 */
/* USER CODE BEGIN MX_GPIO_Init_2 */
/* USER CODE END MX_GPIO_Init_2 */
/* USER CODE END MX_GPIO_Init_2 */ }
}
/* USER CODE BEGIN 4 */
/* USER CODE BEGIN 4 */
/* USER CODE END 4 */
/* USER CODE END 4 */
/**
/** * @brief Period elapsed callback in non blocking mode
* @brief Period elapsed callback in non blocking mode * @note This function is called when TIM6 interrupt took place, inside
* @note This function is called when TIM6 interrupt took place, inside * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment
* HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment * a global variable "uwTick" used as application time base.
* a global variable "uwTick" used as application time base. * @param htim : TIM handle
* @param htim : TIM handle * @retval None
* @retval None */
*/ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
{ /* USER CODE BEGIN Callback 0 */
/* USER CODE BEGIN Callback 0 */
/* USER CODE END Callback 0 */
/* USER CODE END Callback 0 */ if (htim->Instance == TIM6)
if (htim->Instance == TIM6) {
{ HAL_IncTick();
HAL_IncTick(); }
} /* USER CODE BEGIN Callback 1 */
/* USER CODE BEGIN Callback 1 */
/* USER CODE END Callback 1 */
/* USER CODE END Callback 1 */ }
}
/**
/** * @brief This function is executed in case of error occurrence.
* @brief This function is executed in case of error occurrence. * @retval None
* @retval None */
*/ void Error_Handler(void)
void Error_Handler(void) {
{ /* USER CODE BEGIN Error_Handler_Debug */
/* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */
/* User can add his own implementation to report the HAL error return state */ __disable_irq();
__disable_irq(); while (1)
while (1) {
{ }
} /* USER CODE END Error_Handler_Debug */
/* USER CODE END Error_Handler_Debug */ }
} #ifdef USE_FULL_ASSERT
#ifdef USE_FULL_ASSERT /**
/** * @brief Reports the name of the source file and the source line number
* @brief Reports the name of the source file and the source line number * where the assert_param error has occurred.
* where the assert_param error has occurred. * @param file: pointer to the source file name
* @param file: pointer to the source file name * @param line: assert_param error line source number
* @param line: assert_param error line source number * @retval None
* @retval None */
*/ void assert_failed(uint8_t *file, uint32_t line)
void assert_failed(uint8_t *file, uint32_t line) {
{ /* USER CODE BEGIN 6 */
/* USER CODE BEGIN 6 */ /* User can add his own implementation to report the file name and line number,
/* 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) */
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* USER CODE END 6 */
/* USER CODE END 6 */ }
} #endif /* USE_FULL_ASSERT */
#endif /* USE_FULL_ASSERT */