USART_串口通讯2
程序员文章站
2024-01-23 18:46:58
...
一、编程内容
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);
}
上一篇: java使用Timer类实现操作超时报警