STM32开发基础知识——串口数据的收发基础

串口的基础知识

并行通信与串行通信。

单工,半双工,全双工。

异步串行通信:通信双方在没有同步时钟的前提下,将一个字符(含特定的附加为)按位进行传输的通信方式

波特率:每秒钟传输的二进制位,如:9600bps

注:没有同步时钟时,要保持双方的波特率一致来进行传输。

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

阻塞式发送函数

HAL_StatusTypeDef  HAL_UART_Transmit(UART_HandleTypeDef *huart,uint8_t *pData,uint16_t Size:uint32_t Timeout);
huart:串口实例的指针。
*pData:待发送数据缓冲区的指针。
Size:待发送数据的字节数。
Timeout:超时时间值。

eg:将数据发送到USART1.
HAL_UART_Transmit(&huart1,dat_txd,5,0XFFFF);

非阻塞式发送函数

HAL_StatusTypeDef  HAL_UART_Transmit_IT(UART_HandleTypeDef *huart,uint8_t *pData, uint16_t Size);
//huart:串口实例的指针。
//*pData:待发送数据缓冲区的指针。
//Size:待发送数据的字节数。
//HAL_StatusTypeDef:函数执行状态
//发送完毕中断回调函数
void HAL_UART_TxCpltCallback(UART_HandleTypeDef  *huart);
void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef  *huart);
eg:将发送缓数组dat_Txd中数据发送到USART1
HAL_UART_Transmit_IT(&huart1,  dat_Txd, 5);

void HAL_UART_TxCpltCallback(UART_HandleTypeDef  *huart) 
{         
    if(huart->Instance == USART1);         
    {             
        。。。。。//执行函数
    }
}

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

阻塞式接收函数

HAL_StatusTypeDef  HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData,  uint16_t Size, uint32_t Timeout);
//huart:串口实例的指针。
//*pData:数据接收据缓冲区的指针。
//Size:待接收数据的字节数。
//Timeout:超时时间值。
//HAL_StatusTypeDef:函数执行状态。

eg:接收USART1中的一个字节,将其保存在dat_Rxd变量中
HAL_UART_Transmit_IT(&huart1,  &dat_Rxd,10,0xFFFF);

非阻塞式接收函数

HAL_StatusTypeDef  HAL_UART_Receive_IT(UART_HandleTypeDef *huart,uint8_t *pData,uint16_t Size);
huart:串口实例的指针。
*pData:数据接收据缓冲区的指针。
Size:待接收数据的字节数。
HAL_StatusTypeDef:函数执行状态。

串口接收完毕中断回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef  *huart);
void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef  *huart);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值