/**
 * @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;
}
Esempio n. 2
0
/* 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__);
  }

}