本帖最后由 一路向北lm 于 2025-3-12 13:45 编辑
串口1初始化,波特率115200,7位数据位,1停止位 偶校验- static void MX_USART1_UART_Init(void)
- {
- /* USER CODE BEGIN USART1_Init 0 */
- /* USER CODE END USART1_Init 0 */
- /* USER CODE BEGIN USART1_Init 1 */
- /* USER CODE END USART1_Init 1 */
- huart1.Instance = USART1;
- huart1.Init.BaudRate = 115200;
- huart1.Init.WordLength = UART_WORDLENGTH_8B;
- huart1.Init.StopBits = UART_STOPBITS_1;
- huart1.Init.Parity = UART_PARITY_ODD;
- huart1.Init.Mode = UART_MODE_TX_RX;
- huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
- huart1.Init.OverSampling = UART_OVERSAMPLING_16;
- huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
- huart1.Init.ClockPrescaler = UART_PRESCALER_DIV1;
- huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
- if (HAL_UART_Init(&huart1) != HAL_OK)
- {
- Error_Handler();
- }
- if (HAL_UARTEx_SetTxFifoThreshold(&huart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
- {
- Error_Handler();
- }
- if (HAL_UARTEx_SetRxFifoThreshold(&huart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
- {
- Error_Handler();
- }
- if (HAL_UARTEx_DisableFifoMode(&huart1) != HAL_OK)
- {
- Error_Handler();
- }
- /* USER CODE BEGIN USART1_Init 2 */
- /* USER CODE END USART1_Init 2 */
- }
串口1传输测试,发送aTxStartMessage数组,接受并使用led指示 - if(HAL_UART_Transmit_IT(&huart1, (uint8_t*)aTxStartMessage, TXSTARTMESSAGESIZE)!= HAL_OK)
- {
- /* Transfer error in transmission process */
- Error_Handler();
- }
- /*##-2- Put UART peripheral in reception process ###########################*/
- /* Any data received will be stored in "aRxBuffer" buffer : the number max of
- data received is 10 */
- if(HAL_UART_Receive_IT(&huart1, (uint8_t *)aRxBuffer, RXBUFFERSIZE) != HAL_OK)
- {
- /* Transfer error in reception process */
- Error_Handler();
- }
- /*##-3- Wait for the end of the transfer ###################################*/
- /* Before starting a new communication transfer, you need to check the current
- state of the peripheral; if it's busy you need to wait for the end of current
- transfer before starting a new one.
- For simplicity reasons, this example is just waiting till the end of the
- transfer, but application may perform other tasks while transfer operation
- is ongoing. */
- while (HAL_UART_GetState(&huart1) != HAL_UART_STATE_READY)
- {
- /* While waiting for character from PC side, LED1 is toggling every 100ms */
- BSP_LED_Toggle(LED1);
- HAL_Delay(100);
- }
- /*##-4- Send the received Buffer ###########################################*/
- if(HAL_UART_Transmit_IT(&huart1, (uint8_t*)aRxBuffer, RXBUFFERSIZE)!= HAL_OK)
- {
- /* Transfer error in transmission process */
- Error_Handler();
- }
- /*##-5- Wait for the end of the transfer ###################################*/
- /* Before starting a new communication transfer, you need to check the current
- state of the peripheral; if it's busy you need to wait for the end of current
- transfer before starting a new one.
- For simplicity reasons, this example is just waiting till the end of the
- transfer, but application may perform other tasks while transfer operation
- is ongoing. */
- while (HAL_UART_GetState(&huart1) != HAL_UART_STATE_READY)
- {
- }
- /*##-6- Send the End Message ###############################################*/
- if(HAL_UART_Transmit_IT(&huart1, (uint8_t*)aTxEndMessage, TXENDMESSAGESIZE)!= HAL_OK)
- {
- /* Transfer error in transmission process */
- Error_Handler();
- }
- /*##-7- Wait for the end of the transfer ###################################*/
- while (HAL_UART_GetState(&huart1) != HAL_UART_STATE_READY)
- {
- }
- /* Turn on LED1 if test passes then enter infinite loop */
- BSP_LED_On(LED1);
串口助手打印测试信息如下:
|