欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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




相关标签: 嵌入式开发