Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* USER CODE BEGIN Header */
- /**
- ******************************************************************************
- * @file : main.c
- * @brief : Main program body
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2024 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"
- /* Private includes ----------------------------------------------------------*/
- /* USER CODE BEGIN Includes */
- #include "stdio.h"
- #include "stdlib.h"
- #include "math.h"
- #include "string.h"
- /* USER CODE END Includes */
- /* Private typedef -----------------------------------------------------------*/
- /* USER CODE BEGIN PTD */
- /* USER CODE END PTD */
- /* Private define ------------------------------------------------------------*/
- /* USER CODE BEGIN PD */
- #define MAX_BUFFER_SIZE 64
- #define MAX_COMMAND_PARSED 10
- /* USER CODE END PD */
- /* Private macro -------------------------------------------------------------*/
- /* USER CODE BEGIN PM */
- /* USER CODE END PM */
- /* Private variables ---------------------------------------------------------*/
- ADC_HandleTypeDef hadc3;
- TIM_HandleTypeDef htim16;
- TIM_HandleTypeDef htim17;
- UART_HandleTypeDef huart3;
- DMA_HandleTypeDef hdma_usart3_rx;
- DMA_HandleTypeDef hdma_usart3_tx;
- /* USER CODE BEGIN PV */
- uint8_t CMD_LINE[MAX_BUFFER_SIZE];
- uint8_t Flag_Enable_Parse_And_Receive = 0;
- char *CMD_PARSED[MAX_COMMAND_PARSED];
- /* USER CODE END PV */
- /* Private function prototypes -----------------------------------------------*/
- void SystemClock_Config(void);
- static void MX_GPIO_Init(void);
- static void MX_DMA_Init(void);
- static void MX_ADC3_Init(void);
- static void MX_TIM16_Init(void);
- static void MX_USART3_UART_Init(void);
- static void MX_TIM17_Init(void);
- /* USER CODE BEGIN PFP */
- /* USER CODE END PFP */
- /* Private user code ---------------------------------------------------------*/
- /* USER CODE BEGIN 0 */
- typedef struct {
- uint8_t mode;
- uint8_t enable;
- uint8_t period;
- uint8_t continuous_refresh;
- uint8_t read_pos_vel;
- uint8_t samples;
- } Command_line;
- typedef enum {
- STATE_RESET,
- STATE_CONFIG,
- STATE_MANUALCTR,
- STATE_OPENLOOP,
- STATE_AUTOMATIC,
- STATE_ERROR
- } Table_State;
- typedef struct {
- Table_State State;
- uint8_t mode;
- } Search_engine;
- void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size) {
- if (huart == &huart3) {
- Flag_Enable_Parse_And_Receive = 1;
- }
- }
- void error() {
- }
- void config(){
- }
- void initialize_modes(Search_engine Modes[5][5]) {
- for (uint8_t i = 0; i < 4; i++) {
- for (uint8_t j = 0; j < 4; j++) {
- Modes[i][j].State = STATE_ERROR;
- Modes[i][j].mode = j;
- }
- }
- Modes[STATE_RESET][0].State = STATE_RESET;
- Modes[STATE_RESET][1].State = STATE_CONFIG;
- Modes[STATE_CONFIG][0].State = STATE_RESET;
- Modes[STATE_CONFIG][1].State = STATE_CONFIG;
- Modes[STATE_CONFIG][2].State = STATE_MANUALCTR;
- Modes[STATE_CONFIG][3].State = STATE_OPENLOOP;
- Modes[STATE_CONFIG][4].State = STATE_AUTOMATIC;
- Modes[STATE_MANUALCTR][1].State = STATE_CONFIG;
- Modes[STATE_MANUALCTR][2].State = STATE_MANUALCTR;
- Modes[STATE_MANUALCTR][3].State = STATE_OPENLOOP;
- Modes[STATE_OPENLOOP][1].State = STATE_CONFIG;
- Modes[STATE_OPENLOOP][2].State = STATE_MANUALCTR;
- Modes[STATE_OPENLOOP][3].State = STATE_OPENLOOP;
- Modes[STATE_AUTOMATIC][1].State = STATE_CONFIG;
- Modes[STATE_AUTOMATIC][4].State = STATE_AUTOMATIC;
- }
- void state_configuration(Table_State Current_State,Command_line *User_Inputs){
- switch(Current_State){
- case STATE_RESET:
- User_Inputs->enable=0;
- User_Inputs->period=1;
- User_Inputs->continuous_refresh=0;
- User_Inputs->read_pos_vel=0;
- User_Inputs->samples=0;
- break;
- case STATE_CONFIG:
- config();
- break;
- case STATE_MANUALCTR:
- break;
- case STATE_OPENLOOP:
- break;
- case STATE_AUTOMATIC:
- break;
- case STATE_ERROR:
- break;
- }
- }
- Table_State get_state(Search_engine Modes[5][5],Command_line *User_Inputs,Table_State Current_State) {
- uint8_t mode=0;
- mode=User_Inputs->mode;
- if(mode<0 || mode >4){
- }else{
- Table_State Next_State=Modes[Current_State][mode].State;
- if(Next_State == STATE_ERROR){
- //handle error
- }else return Next_State;
- }
- exit(EXIT_FAILURE);
- }
- uint8_t parsing(uint8_t CMD_LINE[], char *CMD_PARSED[]) {
- uint8_t Space_Counter = 0;
- char *Token = strtok((char*) CMD_LINE, " ");
- while (Token != NULL) {
- CMD_PARSED[Space_Counter] = Token;
- Space_Counter++;
- Token = strtok(NULL, " ");
- }
- Space_Counter--;
- return Space_Counter;
- }
- uint8_t search_engine(char *CMD_PARSED[], uint8_t Space_Counter,
- Command_line *User_Inputs) {
- for (uint8_t i = 0; i < Space_Counter; i++) {
- if (strcmp(CMD_PARSED[i], "CS") == 0) {
- User_Inputs->mode = strtoul(CMD_PARSED[++i], NULL, 10);
- if (User_Inputs->mode > 4) {
- User_Inputs->mode = 0;
- return 1 ;
- }
- } else if (strcmp(CMD_PARSED[i], "EN") == 0) {
- User_Inputs->enable = strtoul(CMD_PARSED[++i], NULL, 10);
- if (User_Inputs->enable > 1) {
- User_Inputs->enable = 0;
- return 2;
- }
- } else if (strcmp(CMD_PARSED[i], "HW") == 0) {
- User_Inputs->period = strtoul(CMD_PARSED[++i], NULL, 10);
- if (User_Inputs->period > 1000 || User_Inputs->period < 1) {
- User_Inputs->period = 1;
- return 3;
- }
- } else if (strcmp(CMD_PARSED[i], "CR") == 0) {
- User_Inputs->continuous_refresh = strtoul(CMD_PARSED[++i], NULL, 10);
- if (User_Inputs->continuous_refresh > 2) {
- User_Inputs->continuous_refresh = 0;
- return 4;
- }
- } else if (strcmp(CMD_PARSED[i], "L") == 0) {
- User_Inputs->read_pos_vel = strtoul(CMD_PARSED[++i], NULL, 10);
- if (User_Inputs->read_pos_vel > 2) {
- User_Inputs->read_pos_vel = 0;
- return 5;
- }
- } else if (strcmp(CMD_PARSED[i], "KA") == 0) {
- User_Inputs->samples = strtoul(CMD_PARSED[++i], NULL, 10);
- if (User_Inputs->samples > 10000) {
- User_Inputs->samples = 0;
- return 6;
- }
- }
- }
- return 7;
- }
- /* USER CODE END 0 */
- /**
- * @brief The application entry point.
- * @retval int
- */
- int main(void) {
- /* USER CODE BEGIN 1 */
- Command_line User_Inputs = { 0 };
- Search_engine Modes[5][5];
- Table_State Current_State=STATE_RESET;
- Table_State Next_State=STATE_RESET;
- /* 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_DMA_Init();
- MX_ADC3_Init();
- MX_TIM16_Init();
- MX_USART3_UART_Init();
- MX_TIM17_Init();
- /* USER CODE BEGIN 2 */
- initialize_modes(Modes);
- HAL_UARTEx_ReceiveToIdle_DMA(&huart3, CMD_LINE, MAX_BUFFER_SIZE);
- __HAL_DMA_DISABLE_IT(&hdma_usart3_rx, DMA_IT_HT);
- /* USER CODE END 2 */
- /* Infinite loop */
- /* USER CODE BEGIN WHILE */
- while (1) {
- if (Flag_Enable_Parse_And_Receive == 1) {
- Flag_Enable_Parse_And_Receive = 0;
- uint8_t Spaces_Counter = parsing(CMD_LINE, CMD_PARSED);
- search_engine(CMD_PARSED, Spaces_Counter, &User_Inputs);
- state_configuration(Current_State,&User_Inputs);
- Next_State=get_state(Modes,&User_Inputs,Current_State);
- Current_State=Next_State;
- memset(CMD_LINE,0,MAX_BUFFER_SIZE);
- HAL_UARTEx_ReceiveToIdle_DMA(&huart3, CMD_LINE,
- MAX_BUFFER_SIZE);
- __HAL_DMA_DISABLE_IT(&hdma_usart3_rx, DMA_IT_HT);
- }
- /* USER CODE END WHILE */
- /* 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 };
- /** 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)) {
- }
- /** Macro to configure the PLL clock source
- */
- __HAL_RCC_PLL_PLLSOURCE_CONFIG(RCC_PLLSOURCE_HSE);
- /** Initializes the RCC Oscillators according to the specified parameters
- * in the RCC_OscInitTypeDef structure.
- */
- RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI
- | RCC_OSCILLATORTYPE_HSE;
- RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS;
- RCC_OscInitStruct.HSIState = RCC_HSI_DIV1;
- RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
- RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
- 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.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
- RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;
- RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV1;
- RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV1;
- RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV1;
- RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV1;
- RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV1;
- if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK) {
- Error_Handler();
- }
- }
- /**
- * @brief ADC3 Initialization Function
- * @param None
- * @retval None
- */
- static void MX_ADC3_Init(void) {
- /* USER CODE BEGIN ADC3_Init 0 */
- /* USER CODE END ADC3_Init 0 */
- ADC_ChannelConfTypeDef sConfig = { 0 };
- /* USER CODE BEGIN ADC3_Init 1 */
- /* USER CODE END ADC3_Init 1 */
- /** Common config
- */
- hadc3.Instance = ADC3;
- hadc3.Init.Resolution = ADC_RESOLUTION_16B;
- hadc3.Init.ScanConvMode = ADC_SCAN_DISABLE;
- hadc3.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
- hadc3.Init.LowPowerAutoWait = DISABLE;
- hadc3.Init.ContinuousConvMode = DISABLE;
- hadc3.Init.NbrOfConversion = 1;
- hadc3.Init.DiscontinuousConvMode = DISABLE;
- hadc3.Init.ExternalTrigConv = ADC_SOFTWARE_START;
- hadc3.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
- hadc3.Init.ConversionDataManagement = ADC_CONVERSIONDATA_DR;
- hadc3.Init.Overrun = ADC_OVR_DATA_PRESERVED;
- hadc3.Init.LeftBitShift = ADC_LEFTBITSHIFT_NONE;
- hadc3.Init.OversamplingMode = DISABLE;
- if (HAL_ADC_Init(&hadc3) != HAL_OK) {
- Error_Handler();
- }
- /** Configure Regular Channel
- */
- sConfig.Channel = ADC_CHANNEL_1;
- sConfig.Rank = ADC_REGULAR_RANK_1;
- sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;
- sConfig.SingleDiff = ADC_SINGLE_ENDED;
- sConfig.OffsetNumber = ADC_OFFSET_NONE;
- sConfig.Offset = 0;
- sConfig.OffsetSignedSaturation = DISABLE;
- if (HAL_ADC_ConfigChannel(&hadc3, &sConfig) != HAL_OK) {
- Error_Handler();
- }
- /* USER CODE BEGIN ADC3_Init 2 */
- /* USER CODE END ADC3_Init 2 */
- }
- /**
- * @brief TIM16 Initialization Function
- * @param None
- * @retval None
- */
- static void MX_TIM16_Init(void) {
- /* USER CODE BEGIN TIM16_Init 0 */
- /* USER CODE END TIM16_Init 0 */
- /* USER CODE BEGIN TIM16_Init 1 */
- /* USER CODE END TIM16_Init 1 */
- htim16.Instance = TIM16;
- htim16.Init.Prescaler = 64 - 1;
- htim16.Init.CounterMode = TIM_COUNTERMODE_UP;
- htim16.Init.Period = 1000 - 1;
- htim16.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
- htim16.Init.RepetitionCounter = 0;
- htim16.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
- if (HAL_TIM_Base_Init(&htim16) != HAL_OK) {
- Error_Handler();
- }
- /* USER CODE BEGIN TIM16_Init 2 */
- /* USER CODE END TIM16_Init 2 */
- }
- /**
- * @brief TIM17 Initialization Function
- * @param None
- * @retval None
- */
- static void MX_TIM17_Init(void) {
- /* USER CODE BEGIN TIM17_Init 0 */
- /* USER CODE END TIM17_Init 0 */
- /* USER CODE BEGIN TIM17_Init 1 */
- /* USER CODE END TIM17_Init 1 */
- htim17.Instance = TIM17;
- htim17.Init.Prescaler = 64000 - 1;
- htim17.Init.CounterMode = TIM_COUNTERMODE_UP;
- htim17.Init.Period = 65535;
- 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) {
- Error_Handler();
- }
- /* USER CODE BEGIN TIM17_Init 2 */
- /* USER CODE END TIM17_Init 2 */
- }
- /**
- * @brief USART3 Initialization Function
- * @param None
- * @retval None
- */
- static void MX_USART3_UART_Init(void) {
- /* USER CODE BEGIN USART3_Init 0 */
- /* USER CODE END USART3_Init 0 */
- /* USER CODE BEGIN USART3_Init 1 */
- /* USER CODE END USART3_Init 1 */
- huart3.Instance = USART3;
- huart3.Init.BaudRate = 115200;
- huart3.Init.WordLength = UART_WORDLENGTH_8B;
- huart3.Init.StopBits = UART_STOPBITS_1;
- huart3.Init.Parity = UART_PARITY_NONE;
- huart3.Init.Mode = UART_MODE_TX_RX;
- huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
- huart3.Init.OverSampling = UART_OVERSAMPLING_16;
- huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
- huart3.Init.ClockPrescaler = UART_PRESCALER_DIV1;
- huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
- if (HAL_UART_Init(&huart3) != HAL_OK) {
- Error_Handler();
- }
- if (HAL_UARTEx_SetTxFifoThreshold(&huart3, UART_TXFIFO_THRESHOLD_1_8)
- != HAL_OK) {
- Error_Handler();
- }
- if (HAL_UARTEx_SetRxFifoThreshold(&huart3, UART_RXFIFO_THRESHOLD_1_8)
- != HAL_OK) {
- Error_Handler();
- }
- if (HAL_UARTEx_DisableFifoMode(&huart3) != HAL_OK) {
- Error_Handler();
- }
- /* USER CODE BEGIN USART3_Init 2 */
- /* USER CODE END USART3_Init 2 */
- }
- /**
- * Enable DMA controller clock
- */
- static void MX_DMA_Init(void) {
- /* DMA controller clock enable */
- __HAL_RCC_DMA1_CLK_ENABLE();
- /* DMA interrupt init */
- /* DMA1_Stream0_IRQn interrupt configuration */
- HAL_NVIC_SetPriority(DMA1_Stream0_IRQn, 0, 0);
- HAL_NVIC_EnableIRQ(DMA1_Stream0_IRQn);
- /* DMA1_Stream1_IRQn interrupt configuration */
- HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
- HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
- }
- /**
- * @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_GPIOF_CLK_ENABLE();
- __HAL_RCC_GPIOH_CLK_ENABLE();
- __HAL_RCC_GPIOA_CLK_ENABLE();
- __HAL_RCC_GPIOB_CLK_ENABLE();
- __HAL_RCC_GPIOD_CLK_ENABLE();
- __HAL_RCC_GPIOG_CLK_ENABLE();
- __HAL_RCC_GPIOE_CLK_ENABLE();
- /*Configure GPIO pin Output Level */
- HAL_GPIO_WritePin(GPIOB, LD1_Pin | LD3_Pin, GPIO_PIN_RESET);
- /*Configure GPIO pin Output Level */
- HAL_GPIO_WritePin(USB_OTG_FS_PWR_EN_GPIO_Port, USB_OTG_FS_PWR_EN_Pin,
- GPIO_PIN_RESET);
- /*Configure GPIO pin Output Level */
- HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);
- /*Configure GPIO pin : PC13 */
- GPIO_InitStruct.Pin = GPIO_PIN_13;
- GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
- /*Configure GPIO pins : PC1 PC4 PC5 */
- GPIO_InitStruct.Pin = GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
- HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
- /*Configure GPIO pins : PA1 PA2 PA7 */
- GPIO_InitStruct.Pin = GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_7;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
- /*Configure GPIO pins : LD1_Pin LD3_Pin */
- GPIO_InitStruct.Pin = LD1_Pin | LD3_Pin;
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
- /*Configure GPIO pin : PB13 */
- GPIO_InitStruct.Pin = GPIO_PIN_13;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
- HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
- /*Configure GPIO pin : USB_OTG_FS_PWR_EN_Pin */
- GPIO_InitStruct.Pin = USB_OTG_FS_PWR_EN_Pin;
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- HAL_GPIO_Init(USB_OTG_FS_PWR_EN_GPIO_Port, &GPIO_InitStruct);
- /*Configure GPIO pin : PG5 */
- GPIO_InitStruct.Pin = GPIO_PIN_5;
- GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
- /*Configure GPIO pins : PA8 PA11 PA12 */
- GPIO_InitStruct.Pin = GPIO_PIN_8 | GPIO_PIN_11 | GPIO_PIN_12;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- GPIO_InitStruct.Alternate = GPIO_AF10_OTG1_FS;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
- /*Configure GPIO pins : PG11 PG13 */
- GPIO_InitStruct.Pin = GPIO_PIN_11 | GPIO_PIN_13;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
- HAL_GPIO_Init(GPIOG, &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);
- /* EXTI interrupt init*/
- HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);
- HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
- /* 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 */
Advertisement
Add Comment
Please, Sign In to add comment