一、编程内容
1、串口发送两个字节
2、串口发送数组
3、串口发送字符串
二、新增库函数
串口发送完成检测函数
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, u16 USART_FLAG) USART_FLAG_TC 用于判断串口数据是否发送完成USART_FLAG 值
USART_FLAG | 描述 |
USART_FLAG_CTS | CTS 标志位 |
USART_FLAG_LBD | LIN 中断检测标志位 |
USART_FLAG_TXE | 发送数据寄存器空标志位 |
USART_FLAG_TC | 发送完成标志位 |
USART_FLAG_RXNE | 接收数据寄存器非空标志位 |
USART_FLAG_IDLE | 空闲总线标志位 |
USART_FLAG_ORE | 溢出错误标志位 |
USART_FLAG_NE | 噪声错误标志位 |
USART_FLAG_FE | 帧错误标志位 |
USART_FLAG_PE | 奇偶错误标志位 |
//串口发送两个字节函数 串口号 数据 void USARTSend_float(USART_TypeDef* USARTx, uint16_t Data) { uint8_t Temp_H,Temp_L; Temp_H=(Data&0xff00)>>8; Temp_L=Data&0xff; //将16位数据转换成两个八位数据 USART_SendData(USARTx,Temp_H); //发送高八位数据到USARTE while(USART_GetFlagStatus(USARTx,USART_FLAG_TXE)==RESET);//等待数据发送完成 USART_SendData(USARTx,Temp_L); //发送低八位数据到USARTE while(USART_GetFlagStatus(USARTx,USART_FLAG_TXE)==RESET);//等待数据发送完成 } //发送数组 串口号 数组 元素数量 void USARTSend_array(USART_TypeDef* USARTx, uint8_t *array, uint8_t num) { uint8_t i; for(i=0;i<num;i++) //循环发送数组元素 { USARTSend_Byes(USARTx,array[i]); } while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)==RESET);//等待数据发送完成 } //发送字符串 串口号 “字符” void USARTSend_str(USART_TypeDef* USARTx, char *str) { uint8_t k=0; do { USARTSend_Byes(USARTx,*(str+k)); k++; } while(*(str+k)!='\0'); //'0'用以判断字符元素发送是否完成 while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)==RESET); }