HAL库 STM32CubeMX--USART串口通信(一)

本文介绍了STM32CubeMX中串口的基础知识,包括并行与串行通信、单工、半双工和全双工的区别,以及异步串行通信和波特率的概念。接着详细阐述了如何配置HAL库进行串口发送和接收,并展示了基于HAL库实现Printf函数功能重定向到串口以及UART中断接收的代码实现。通过一个回调函数示例说明了如何响应接收到的数据并进行相应的串口响应。
摘要由CSDN通过智能技术生成

简介

STM32CubeMX串口的操作,以及HAL库串口的配置,基于HAL库实现Printf函数功能重定向,UART中断接收


一、串口的基础知识

1.并行通信与串行通信

2. 单工  :只有一个方向,要么发送数据,要么接受数据

    半双工:可以发送也可以接受,但是在某一时刻只能处在一种状态,例,RS485

    全双工:  在任意的时刻,都可以同时进行发送数据和接受数据

3.异步串行通信:通信双方在没有同步时钟的前提下,将一个字符按位进行传输的通信方式

4.在没有同步时钟的前提下,怎么准确的接受? 波特率:每秒传输的二进制数,如9600bps


二、STM32CubeMx中关于USART的配置

1.界面配置

 2. HAL库中串口发送的重要函数

3. HAL库中串口接收的重要函数

 


三、代码实现部分

/* USER CODE BEGIN 0 */

uint8_t Tx_strl[] = "hello world!\r\n";
uint8_t Tx_str2[] = "LED1 Open!\r\n";
uint8_t Tx_str3[] = "LED1 Closed!\r\n";
uint8_t Rx_dat = 0;


//串口接收的回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	if( huart == &huart1 )
	{
			if(Rx_dat == 0xa1)
		{
					
					HAL_UART_Transmit(&huart1,Tx_str2 ,sizeof (Tx_str2),10000);

			
					HAL_UART_Receive_IT(&huart1,&Rx_dat,1);
		}
		else if(Rx_dat ==0xa2)
		{
			
					HAL_UART_Transmit(&huart1,Tx_str3 ,sizeof (Tx_str3),10000);

			
					HAL_UART_Receive_IT(&huart1,&Rx_dat,1);
		}	
		
	}
}

/* USER CODE END 0 */
/* USER CODE BEGIN 2 */
HAL_UART_Transmit(&huart1,Tx_str1,sizeof(Tx_str1),10000);  //发送

HAL_UART_Receive_IT(&huart1,Rx_dat,1); //接收

/* USER CODE END 2 */

注:本文有参考b站小蜜蜂老师,他专门针对一些比赛讲解的stm32简单易懂,推荐大家观看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长生君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值