/** * @brief Uart Initialization Function. * @param numUart: numero della periferica UART da inizializzare. * numUart può assumere uno dei seguenti valori: * @arg HELPER_UART1: periferica UART 1; * @arg HELPER_UART2: periferica UART 2. * @arg HELPER_UART3: periferica UART 3; * @arg HELPER_UART4: periferica UART 4. * @arg HELPER_UART5: periferica UART 5; * @arg HELPER_UART6: periferica UART 6. * * @retval Stato, che può assumere uno dei seguenti valori: * @arg HELPER_UART_OK: inizializzazione avvenuta con successo; * @arg HELPER_UART_ERROR: Errore qualsiasi avvenuto durante l'Inizializzazione. */ HELPER_UART_Status_TypeDef HELPER_UART_Init(HELPER_UART_TypeDef numUart){ //A seconda della periferica mi riferisco ad un Handle Specifico UART_HandleTypeDef *UartHandle_x=HELPER_UART_GetHandle(numUart); if(HAL_UART_GetState(UartHandle_x) == HAL_UART_STATE_RESET) { /* UART configuration -----------------------------------------------------*/ UartHandle_x->Instance = HELPER_UART(numUart); UartHandle_x->Init.Mode = HELPER_UART_MODE(numUart); UartHandle_x->Init.WordLength = HELPER_UART_LENGHT(numUart); UartHandle_x->Init.StopBits = HELPER_UART_STOP_B(numUart); UartHandle_x->Init.Parity = HELPER_UART_PARITY(numUart); UartHandle_x->Init.BaudRate = HELPER_UART_BAUDRATE(numUart); UartHandle_x->Init.HwFlowCtl = HELPER_UART_HWCONTROL(numUart); UartHandle_x->Init.OverSampling= HELPER_UART_OVERSAMPLING(numUart); //La HAL_UART_MspInit(UartHandle_x) sarà chiamata internamente dalla HAL_XYZ_Init(..) HAL_StatusTypeDef status = 0; switch(HELPER_UART_FUNCTIONAL_MODE(numUart)) { case HELPER_UART_HALF_DUPLEX_MODE: status = HAL_HalfDuplex_Init(UartHandle_x);break; case HELPER_UART_LIN_MODE: status = HAL_LIN_Init(UartHandle_x,UART_LINBREAKDETECTLENGTH_11B);break; case HELPER_UART_MULTIPROCESSOR_MODE: status = HAL_MultiProcessor_Init(UartHandle_x, HELPER_UART_MULTIPROCESSOR_ADDRESS(numUart), HELPER_UART_MULTIPROCESSOR_WAKEUP_METHOD(numUart) ); break; default: status = HAL_UART_Init(UartHandle_x); } if(status!=HAL_OK) return HELPER_UART_ERROR; else return HELPER_UART_OK; } else return HELPER_UART_ERROR; }
/* USART2 init function */ static void MX_USART2_UART_Init(void) { huart2.Instance = USART2; huart2.Init.BaudRate = 9600; 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; huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; if (HAL_LIN_Init(&huart2, UART_LINBREAKDETECTLENGTH_10B) != HAL_OK) { _Error_Handler(__FILE__, __LINE__); } }