一:串口的基础知识
USART提供了一种灵活的机制,可用于与外部设备进行全双工数据交换,这些设备需要一种符合行业标准的NRZ异步串行数据格式。通过使用分频Baud 速率生成器,可实现非常广泛的Baud速率范围。
USART支持同步单向和半双工单线通信,以及LIN(本地互连网络)、智能卡协议、IrDA(红外数据协会)SIR ENDEC规范以及调制解调器操作(CTS/RTS)。同时还支持多处理器通信。
通过使用直接内存访问(DMA)进行多缓冲配置,可实现高达20 Mbaud的高速数据通信。
二:原理图如下所示:



这里我所使用的的串口2输出;
三:软件代码:
3.1 串口的初始化
复制
void MX_USART2_UART_Init(void){/* USER CODE BEGIN USART2_Init 0 *//* USER CODE END USART2_Init 0 *//* USER CODE BEGIN USART2_Init 1 *//* USER CODE END USART2_Init 1 */huart2.Instance = USART2;huart2.Init.BaudRate = 115200;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.Init.ClockPrescaler = UART_PRESCALER_DIV1;huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;if (HAL_UART_Init(&huart2) != HAL_OK){Error_Handler();}if (HAL_UARTEx_SetTxFifoThreshold(&huart2, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK){Error_Handler();}if (HAL_UARTEx_SetRxFifoThreshold(&huart2, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK){Error_Handler();}if (HAL_UARTEx_DisableFifoMode(&huart2) != HAL_OK){Error_Handler();}/* USER CODE BEGIN USART2_Init 2 *//* USER CODE END USART2_Init 2 */}
3.2 添加输出函数
复制
HAL_Delay(200);HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_8);HAL_UART_Transmit(&huart2,OUTPUT_str,sizeof(OUTPUT_str),100);HAL_Delay(200);printf("printf 函数调试完成!!!!!");
四:实物测试效果图如下:





---------------------
作者:聪聪哥哥
链接:https://bbs.21ic.com/icview-3502503-1-1.html?_dsign=92493a84
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。


被折叠的 条评论
为什么被折叠?



