USART_串口通讯2

一、编程内容

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);	
}




猜你喜欢

转载自blog.csdn.net/qq_41985317/article/details/80381257