基于HAL库的STM32串口定长接收数据

STM32CubeMX下的UART功能:堵塞式、中断接收与串口重定向scanf应用

目录

一、函数接收

1、堵塞式接收

2、中断方式接收

3、串口重定向scanf

二、配置STM32CubeMX

三代码编写及测试

1、堵塞式接收

2、中断方式接收

3、串口重定向scanf函数


一、函数接收

1、堵塞式接收

        堵塞模式也叫轮询模式,hal库里面堵塞式接收数据的函数为HAL_UART_Receive(),具体使用方法如下:

HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);

它的作用是从UART接收数据,并将接收到的数据存储到指定的缓冲区中。

参数说明:

  第一个参数是要使用的串口句柄地址
  第二个参数是要接收的数据缓冲区首地址
  第三个参数是接收的数据长度,这里可以直接用sizeof()函数获取接收缓冲区的长度
  第四个参数是超时时间,单位是ms,如果超过设置的时间,则函数返回HAL_TIMEOUT,如果设置为HAL_MAX_DELAY,处理器就会一直等到数据接收完成再执行下一条语句。

2、中断方式接收

hal库里面的串口中断发送函数为HAL_UART_Receive_IT(),具体用法和说明如下:

HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);

这个函数的目的是启动UART中断接收并以非阻塞的方式接收一定数量的数据。

参数说明:中断方式的收发函数只有三个参数
        第一个参数是要使用的串口句柄地址

        第二个参数是接收缓冲区的首地址,用于存放要接收的数据
        第三个参数是接收缓冲区长度

3、串口重定向scanf

        在PC上进行C语言程序开发时,我们可以利用C语言的利用格式化输人函数 scanf()读取由键盘输入的信息。在嵌入式系统的开发中,我们也希望能够在程序运行的时候读取由键盘输入的信息,实现良好的人机交互。

        HAL库提供的串口收发函数,功能比较简单,不能进行格式化的输入。如果要实现类似 C语言中的格式化输入函数,需要把scanf()函数的输入重新定向到串口。

        由于scanf()函数通过调用fgetc()函数来实现数据的输入,因此用户需要改写这个函数来实现串口输

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值