目录
一、函数接收
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()函数来实现数据的输入,因此用户需要改写这个函数来实现串口输