|
@@ -51,62 +51,62 @@ static rt_err_t stm32_configure(struct rt_serial_device *serial, struct serial_c
|
|
|
RT_ASSERT(cfg != RT_NULL);
|
|
|
|
|
|
uart = (struct stm32_uart *)serial->parent.user_data;
|
|
|
-
|
|
|
- uart->UartHandle.Init.BaudRate = cfg->baud_rate;
|
|
|
- uart->UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
|
|
|
- uart->UartHandle.Init.Mode = UART_MODE_TX_RX;
|
|
|
- uart->UartHandle.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
|
|
|
-
|
|
|
- switch(cfg->data_bits)
|
|
|
- {
|
|
|
- case DATA_BITS_7:
|
|
|
- uart->UartHandle.Init.WordLength = UART_WORDLENGTH_7B;
|
|
|
- break;
|
|
|
- case DATA_BITS_8:
|
|
|
- uart->UartHandle.Init.WordLength = UART_WORDLENGTH_8B;
|
|
|
- break;
|
|
|
- case DATA_BITS_9:
|
|
|
- uart->UartHandle.Init.WordLength = UART_WORDLENGTH_9B;
|
|
|
- break;
|
|
|
- default:
|
|
|
- uart->UartHandle.Init.WordLength = UART_WORDLENGTH_8B;
|
|
|
- break;
|
|
|
- }
|
|
|
- switch(cfg->stop_bits)
|
|
|
- {
|
|
|
- case STOP_BITS_1:
|
|
|
- uart->UartHandle.Init.StopBits = UART_STOPBITS_1;
|
|
|
- break;
|
|
|
- case STOP_BITS_2:
|
|
|
- uart->UartHandle.Init.StopBits = UART_STOPBITS_2;
|
|
|
- break;
|
|
|
- default:
|
|
|
- uart->UartHandle.Init.StopBits = UART_STOPBITS_1;
|
|
|
- break;
|
|
|
- }
|
|
|
- switch(cfg->parity)
|
|
|
- {
|
|
|
- case PARITY_NONE:
|
|
|
- uart->UartHandle.Init.Parity = UART_PARITY_NONE;
|
|
|
- break;
|
|
|
- case PARITY_ODD:
|
|
|
- uart->UartHandle.Init.Parity = UART_PARITY_ODD;
|
|
|
- break;
|
|
|
- case PARITY_EVEN:
|
|
|
- uart->UartHandle.Init.Parity = UART_PARITY_EVEN;
|
|
|
- break;
|
|
|
- default:
|
|
|
- uart->UartHandle.Init.Parity = UART_PARITY_NONE;
|
|
|
- break;
|
|
|
- }
|
|
|
- if(HAL_UART_DeInit(&uart->UartHandle) != HAL_OK)
|
|
|
- {
|
|
|
- return RT_ERROR;
|
|
|
- }
|
|
|
- if(HAL_UART_Init(&uart->UartHandle) != HAL_OK)
|
|
|
- {
|
|
|
- return RT_ERROR;
|
|
|
- }
|
|
|
+
|
|
|
+ uart->UartHandle.Init.BaudRate = cfg->baud_rate;
|
|
|
+ uart->UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
|
|
|
+ uart->UartHandle.Init.Mode = UART_MODE_TX_RX;
|
|
|
+ uart->UartHandle.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
|
|
|
+
|
|
|
+ switch (cfg->data_bits)
|
|
|
+ {
|
|
|
+ case DATA_BITS_7:
|
|
|
+ uart->UartHandle.Init.WordLength = UART_WORDLENGTH_7B;
|
|
|
+ break;
|
|
|
+ case DATA_BITS_8:
|
|
|
+ uart->UartHandle.Init.WordLength = UART_WORDLENGTH_8B;
|
|
|
+ break;
|
|
|
+ case DATA_BITS_9:
|
|
|
+ uart->UartHandle.Init.WordLength = UART_WORDLENGTH_9B;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ uart->UartHandle.Init.WordLength = UART_WORDLENGTH_8B;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ switch (cfg->stop_bits)
|
|
|
+ {
|
|
|
+ case STOP_BITS_1:
|
|
|
+ uart->UartHandle.Init.StopBits = UART_STOPBITS_1;
|
|
|
+ break;
|
|
|
+ case STOP_BITS_2:
|
|
|
+ uart->UartHandle.Init.StopBits = UART_STOPBITS_2;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ uart->UartHandle.Init.StopBits = UART_STOPBITS_1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ switch (cfg->parity)
|
|
|
+ {
|
|
|
+ case PARITY_NONE:
|
|
|
+ uart->UartHandle.Init.Parity = UART_PARITY_NONE;
|
|
|
+ break;
|
|
|
+ case PARITY_ODD:
|
|
|
+ uart->UartHandle.Init.Parity = UART_PARITY_ODD;
|
|
|
+ break;
|
|
|
+ case PARITY_EVEN:
|
|
|
+ uart->UartHandle.Init.Parity = UART_PARITY_EVEN;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ uart->UartHandle.Init.Parity = UART_PARITY_NONE;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (HAL_UART_DeInit(&uart->UartHandle) != HAL_OK)
|
|
|
+ {
|
|
|
+ return RT_ERROR;
|
|
|
+ }
|
|
|
+ if (HAL_UART_Init(&uart->UartHandle) != HAL_OK)
|
|
|
+ {
|
|
|
+ return RT_ERROR;
|
|
|
+ }
|
|
|
|
|
|
return RT_EOK;
|
|
|
}
|
|
@@ -124,7 +124,7 @@ static rt_err_t stm32_control(struct rt_serial_device *serial, int cmd, void *ar
|
|
|
/* disable rx irq */
|
|
|
UART_DISABLE_IRQ(uart->irq);
|
|
|
/* disable interrupt */
|
|
|
- __HAL_UART_DISABLE_IT(&uart->UartHandle, UART_IT_RXNE);
|
|
|
+ __HAL_UART_DISABLE_IT(&uart->UartHandle, UART_IT_RXNE);
|
|
|
break;
|
|
|
case RT_DEVICE_CTRL_SET_INT:
|
|
|
/* enable rx irq */
|
|
@@ -190,59 +190,59 @@ void USART1_IRQHandler(void)
|
|
|
/* enter interrupt */
|
|
|
rt_interrupt_enter();
|
|
|
|
|
|
- /* UART in mode Receiver ---------------------------------------------------*/
|
|
|
- if((__HAL_UART_GET_IT(&uart->UartHandle, UART_IT_RXNE) != RESET) && (__HAL_UART_GET_IT_SOURCE(&uart->UartHandle, UART_IT_RXNE) != RESET))
|
|
|
- {
|
|
|
- rt_hw_serial_isr(&serial1,RT_SERIAL_EVENT_RX_IND);
|
|
|
- /* Clear RXNE interrupt flag */
|
|
|
- __HAL_UART_SEND_REQ(&uart->UartHandle, UART_RXDATA_FLUSH_REQUEST);
|
|
|
- }
|
|
|
+ /* UART in mode Receiver ---------------------------------------------------*/
|
|
|
+ if ((__HAL_UART_GET_IT(&uart->UartHandle, UART_IT_RXNE) != RESET) && (__HAL_UART_GET_IT_SOURCE(&uart->UartHandle, UART_IT_RXNE) != RESET))
|
|
|
+ {
|
|
|
+ rt_hw_serial_isr(&serial1, RT_SERIAL_EVENT_RX_IND);
|
|
|
+ /* Clear RXNE interrupt flag */
|
|
|
+ __HAL_UART_SEND_REQ(&uart->UartHandle, UART_RXDATA_FLUSH_REQUEST);
|
|
|
+ }
|
|
|
/* leave interrupt */
|
|
|
rt_interrupt_leave();
|
|
|
}
|
|
|
#endif /* RT_USING_UART1 */
|
|
|
|
|
|
/**
|
|
|
- * @brief UART MSP Initialization
|
|
|
- * This function configures the hardware resources used in this example:
|
|
|
+ * @brief UART MSP Initialization
|
|
|
+ * This function configures the hardware resources used in this example:
|
|
|
* - Peripheral's clock enable
|
|
|
- * - Peripheral's GPIO Configuration
|
|
|
+ * - Peripheral's GPIO Configuration
|
|
|
* - NVIC configuration for UART interrupt request enable
|
|
|
* @param huart: UART handle pointer
|
|
|
* @retval None
|
|
|
*/
|
|
|
void HAL_UART_MspInit(UART_HandleTypeDef *huart)
|
|
|
-{
|
|
|
- GPIO_InitTypeDef GPIO_InitStruct;
|
|
|
- if(huart->Instance == USART1)
|
|
|
- {
|
|
|
- /* Enable GPIO TX/RX clock */
|
|
|
- USART1_TX_GPIO_CLK_ENABLE();
|
|
|
- USART1_RX_GPIO_CLK_ENABLE();
|
|
|
- /* Enable USARTx clock */
|
|
|
- USART1_CLK_ENABLE();
|
|
|
-
|
|
|
- /* UART TX GPIO pin configuration */
|
|
|
- GPIO_InitStruct.Pin = USART1_TX_PIN;
|
|
|
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
|
|
- GPIO_InitStruct.Pull = GPIO_PULLUP;
|
|
|
- GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
|
|
|
- GPIO_InitStruct.Alternate = USART1_TX_AF;
|
|
|
- HAL_GPIO_Init(USART1_TX_GPIO_PORT, &GPIO_InitStruct);
|
|
|
-
|
|
|
- /* UART RX GPIO pin configuration */
|
|
|
- GPIO_InitStruct.Pin = USART1_RX_PIN;
|
|
|
- GPIO_InitStruct.Alternate = USART1_RX_AF;
|
|
|
- HAL_GPIO_Init(USART1_RX_GPIO_PORT, &GPIO_InitStruct);
|
|
|
-
|
|
|
- /* NVIC for USART */
|
|
|
- HAL_NVIC_SetPriority(USART1_IRQn, 0, 1);
|
|
|
- HAL_NVIC_EnableIRQ(USART1_IRQn);
|
|
|
- }
|
|
|
+{
|
|
|
+ GPIO_InitTypeDef GPIO_InitStruct;
|
|
|
+ if (huart->Instance == USART1)
|
|
|
+ {
|
|
|
+ /* Enable GPIO TX/RX clock */
|
|
|
+ USART1_TX_GPIO_CLK_ENABLE();
|
|
|
+ USART1_RX_GPIO_CLK_ENABLE();
|
|
|
+ /* Enable USARTx clock */
|
|
|
+ USART1_CLK_ENABLE();
|
|
|
+
|
|
|
+ /* UART TX GPIO pin configuration */
|
|
|
+ GPIO_InitStruct.Pin = USART1_TX_PIN;
|
|
|
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
|
|
+ GPIO_InitStruct.Pull = GPIO_PULLUP;
|
|
|
+ GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
|
|
|
+ GPIO_InitStruct.Alternate = USART1_TX_AF;
|
|
|
+ HAL_GPIO_Init(USART1_TX_GPIO_PORT, &GPIO_InitStruct);
|
|
|
+
|
|
|
+ /* UART RX GPIO pin configuration */
|
|
|
+ GPIO_InitStruct.Pin = USART1_RX_PIN;
|
|
|
+ GPIO_InitStruct.Alternate = USART1_RX_AF;
|
|
|
+ HAL_GPIO_Init(USART1_RX_GPIO_PORT, &GPIO_InitStruct);
|
|
|
+
|
|
|
+ /* NVIC for USART */
|
|
|
+ HAL_NVIC_SetPriority(USART1_IRQn, 0, 1);
|
|
|
+ HAL_NVIC_EnableIRQ(USART1_IRQn);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * @brief UART MSP De-Initialization
|
|
|
+ * @brief UART MSP De-Initialization
|
|
|
* This function frees the hardware resources used in this example:
|
|
|
* - Disable the Peripheral's clock
|
|
|
* - Revert GPIO and NVIC configuration to their default state
|
|
@@ -251,21 +251,21 @@ void HAL_UART_MspInit(UART_HandleTypeDef *huart)
|
|
|
*/
|
|
|
void HAL_UART_MspDeInit(UART_HandleTypeDef *huart)
|
|
|
{
|
|
|
- if(huart->Instance == USART1)
|
|
|
- {
|
|
|
- /* Reset peripherals */
|
|
|
- USART1_FORCE_RESET();
|
|
|
- USART1_RELEASE_RESET();
|
|
|
-
|
|
|
- /* Disable peripherals and GPIO Clocks */
|
|
|
- /* Configure UART Tx as alternate function */
|
|
|
- HAL_GPIO_DeInit(USART1_TX_GPIO_PORT, USART1_TX_PIN);
|
|
|
- /* Configure UART Rx as alternate function */
|
|
|
- HAL_GPIO_DeInit(USART1_RX_GPIO_PORT, USART1_RX_PIN);
|
|
|
-
|
|
|
- /* Disable the NVIC for UART */
|
|
|
- HAL_NVIC_DisableIRQ(USART1_IRQn);
|
|
|
- }
|
|
|
+ if (huart->Instance == USART1)
|
|
|
+ {
|
|
|
+ /* Reset peripherals */
|
|
|
+ USART1_FORCE_RESET();
|
|
|
+ USART1_RELEASE_RESET();
|
|
|
+
|
|
|
+ /* Disable peripherals and GPIO Clocks */
|
|
|
+ /* Configure UART Tx as alternate function */
|
|
|
+ HAL_GPIO_DeInit(USART1_TX_GPIO_PORT, USART1_TX_PIN);
|
|
|
+ /* Configure UART Rx as alternate function */
|
|
|
+ HAL_GPIO_DeInit(USART1_RX_GPIO_PORT, USART1_RX_PIN);
|
|
|
+
|
|
|
+ /* Disable the NVIC for UART */
|
|
|
+ HAL_NVIC_DisableIRQ(USART1_IRQn);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
int stm32_hw_usart_init(void)
|
|
@@ -276,7 +276,7 @@ int stm32_hw_usart_init(void)
|
|
|
#ifdef RT_USING_UART1
|
|
|
uart = &uart1;
|
|
|
uart->UartHandle.Instance = USART1;
|
|
|
-
|
|
|
+
|
|
|
serial1.ops = &stm32_uart_ops;
|
|
|
serial1.config = config;
|
|
|
|