Bootstrap

STM32-HAL库设置串口和基本原理(忘记可以回来看看

串口收发参考资料:https://www.xmf393.com/2020/02/16/2020021606/
串口收发详解:https://blog.csdn.net/Firefly_cjd/article/details/109529573
HAL库配置串口:https://blog.csdn.net/m0_70748084/article/details/124930320

关于HAL库的基本配置 如图STM32CLUBEMX设置

跟着自己需要的情况来设置,主要是串口是否选择异步还是同步和是否串口需要应用到中断

分割线///分割线/分割线

发送函数发送

原理
发送有分阻塞发送和非阻塞发送,在数据发送完成之后我需要做的是使用回调函数
参考资料:
阻塞和非阻塞区别:http://news.eeworld.com.cn/mcu/ic520335.html

USART全称:通用异步同步收发器
异步 = 非阻塞 :发送端口(TX)发送一段数据,接收端(RX)无需响应可以让发送端继续的发送数据
UART全称:通用同步收发器
同步 = 阻塞:发送端口(TX)发一段数据,接收端得(RX)回应才能继续发送下一个数据

阻塞式发送函数
	uint8_t TX[]="asdasdasd";
	HAL_UART_Transmit(&huart1,TX,sizeof(TX),10000);//(串口结构体,发送的数据,发送长度,超时)

分割线///分割线/分割线

非阻塞接收函数

图片的发送都改为接收

在这里插入图片描述

非阻塞接收函数
uint8_t rx_data = 0;
HAL_UART_Receive_IT(&huart1 , &rx_data ,1);//(定时器时令,接收到的字节存放,1个字节)
接收函数要在回调函数处理
HAL_UART_Receive_IT(&huart1 , &rx_data ,1);//(定时器时令,接收到的字节存放,1个字节)
接收回调函数处理
//串口发送0X1a点亮LED
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	char data=0;
	if(huart->Instance == USART1)
	{
		if(data == 0x1a)
		{
			HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);
		}
	}
}

在这里插入图片描述
记一下

HAL_UART_RxHalfCpltCallback 

这个函数是接收一半然后进行中断的一个函数,后续用到会更新

;