串口常用函数介绍

串口发送**/****接收函数:**HAL_UART_Transmit(); 串口发送数据,使用超时管理机制

HAL_UART_Receive(); 串口接收数据,使用超时管理机制

HAL_UART_Transmit_IT(); 串口中断模式发送

HAL_UART_Receive_IT(); 串口中断模式接收

HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart,

uint8_t *pData, uint16_t Size, uint32_t Timeout)

作用:以阻塞的方式发送指定字节的数据

形参 1 :UART_HandleTypeDef 结构体类型指针变量

形参 2:指向要发送的数据地址

形参 3:要发送的数据大小,以字节为单位

形参 4:设置的超时时间,以ms单位

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

作用:以中断的方式接收指定字节的数据

形参 1 是 UART_HandleTypeDef 结构体类型指针变量

形参 2 是指向接收数据缓冲区

形参 3 是要接收的数据大小,以字节为单位

此函数执行完后将清除中断,需要再次调用以重新开启中断。

串口中断回调函数:

*HAL_UART_IRQHandler(UART_HandleTypeDef \huart); //串口中断处理函数

*HAL_UART_TxCpltCallback(UART_HandleTypeDef \huart); //发送中断回调函数

*HAL_UART_RxCpltCallback(UART_HandleTypeDef \huart); //接收中断回调函数

状态标记变量:

USART_RX_STA从0开始,串口中断接收到一个数据(一个字节)就自增1。当数据读取全部OK时候(回车和换行

符号来的时候),那么 USART_RX_STA的最高位置1,表示串口数据接收全部完毕了,然后main

函数里面可以处理数据了。

\4. 使用MicroLIB库

从魔术棒打开,这个勾勾一定要打上,否则 printf 无法重映射!

使用printf输出字符串,需要重写fputc函数

int fputc(int ch, FILE *f)
{
unsigned char temp[1]={ch};
HAL_UART_Transmit(&huart1,temp,1,0xffff);
return ch;
}