STM32串口数据接收和发送

概要

介绍STM32串口数据接收和发送函数。

整体架构流程

STM32F1 的发送与接收是通过数据寄存器 USART_DR 来实现的,这是一个双寄存器,包含了 TDR 和 RDR。当向该寄存器写数据的时候,串口就会自动发送,当收到数据的时候,也是存在该寄存器内。

HAL 库操作 USART_DR 寄存器发送数据的函数是:	
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);

通过该函数向串口寄存器 USART_DR 写入一个数据。

HAL 库操作 USART_DR 寄存器读取串口接收到的数据的函数是:
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);

通过该函数可以读取串口接受到的数据。

技术细节

1、HAL_UART_Transmit 函数

HAL_UART_Transmit 函数是STM32 HAL(硬件抽象层)库中的一个函数,用于通过UART(通用异步收发传输器)发送数据。这个函数允许用户通过指定的UART端口发送一串数据。下面是对该函数参数和返回类型的详细解释:

参数
huart: 指向UART_HandleTypeDef结构体的指针,该结构体包含了UART配置的所有信息,如UART的基地址、波特率、中断使能状态等。这个结构体通常在初始化UART时通过HAL_UART_Init函数进行配置。
pData: 指向要发送数据的指针。这是一个uint8_t类型的指针,意味着它指向的数据是一个字节数组(或单个字节,如果Size为1)。pData指向的数据将会被发送到UART指定的端口。
Size: 指定要发送的数据大小,以字节为单位。这个值告诉函数pData指向的数组中有多少个字节需要被发送。
Timeout: 指定操作的超时时间,以毫秒为单位。如果在这段时间内数据没有完全发送,函数将返回错误状态。设置为HAL_MAX_DELAY表示无限等待,直到所有数据都发送完毕或发生错误。
返回类型
HAL_StatusTypeDef: 这是一个枚举类型,用于表示函数的执行结果。可能的返回值包括:
HAL_OK: 表示函数成功执行,所有数据都已在指定的超时时间内发送完毕。
HAL_ERROR: 表示函数执行过程中发生了错误,可能是硬件故障或配置错误等原因。
HAL_BUSY: 表示UART正在忙,无法立即开始发送数据。这通常发生在非阻塞模式下,当UART还在处理前一个操作时。
HAL_TIMEOUT: 表示操作在指定的超时时间内没有完成。
使用示例:

UART_HandleTypeDef huart1;  
// 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值