6.串口相关知识

目录

1.发送一个字节的函数

2.发送两个字节的函数

3.发送8位数据的数组

4.发送字符串

5.串口1发送字符串

6.打印函数(printf) 

7.发送一个数控制灯


1.发送一个字节的函数

void  Usart_SendByte(USART_TypeDef* pUSARTx,uint8_t data)
{
	USART_SendData(pUSARTx, data);
	while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TXE)==RESET);
}

2.发送两个字节的函数

void Usart_SendHalfWord(USART_TypeDef* pUSARTx, uint16_t data)
{
	uint8_t   temp_h,temp_l;//高8位,低8位
	temp_h=(data&0xff00)>>8;//高8位
	temp_l=data&0xff;//低8位
	USART_SendData(pUSARTx,temp_h);
	while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TXE)==RESET);
	USART_SendData(pUSARTx,temp_l);
	while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TXE)==RESET);
}

3.发送8位数据的数组

uint8_t a[10]={1,2,3,4,5,6,7,8,9,10};
Usart_SendArray(USART1,a,10);

void Usart_SendArray(USART_TypeDef* pUSARTx, uint8_t *array,uint16_t num)
{
	uint8_t    i;
	for(i=0;i<num;i++)
	{
		USART_SendData(pUSARTx,array[i]);
	}
	while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET);
}

4.发送字符串

void   Usart_SendStr(USART_TypeDef* pUSARTx,uint8_t  *str)
{
	do
	{
		Usart_SendByte( pUSARTx,*(str+i));
		i++;
	}
	while(*(str+i)!='\0');
	while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET);
}

5.串口1发送字符串

void Uart1_SendStr(char*SendBuf)
{
	while(*SendBuf)
	{
         while((USART1->SR&0X40)==0);//等待发送完成 
         USART1->DR = (u8) *SendBuf; 
         SendBuf++;
	}
}

6.打印函数(printf) 

//1.重定向C库函数printf到串口,重定向后可使用printf函数
int fputc(int ch, FILE *f)
{      
	//发送一个字节到串口
	USART_SendData(USART1,(uint8_t)ch);//用哪个串口改为哪一个串口
	//等待发送完毕
	while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);//用哪个串口改为哪一个串口
	return (ch);
}

//2.重定向C库函数scanf到串口,重定向后可使用scanf函数
int fgetc(int ch, FILE *f)
{      
	//等待串口输入数据
	while(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==RESET);//用哪个串口改为哪一个串口
	return (int)USART_ReceiveData(USART1);//用哪个串口改为哪一个串口
}

7.发送一个数控制灯

uint8_t  ch;
ch=getchar();
printf("ch=%c\n",ch);
switch(ch)
{
	case'1':LED1=0;break;
	case'2':LED2=0;break;
	default:LED1=1,LED2=1;break;
}

版权声明:本文为CSDN博主「菜鸟小白99」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/asdfghjkl9514/article/details/121974195

生成海报
点赞 0

菜鸟小白99

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

4路红外循迹模块使用教程

4路红外循迹模块使用教程 个人原创博客:点击浏览模块详细信息: 工作电压:DC 3.3V~5V 工作电流:尽量选择1A以上电源供电 工作温度:-10℃~50℃ 安装孔

STM32读取编码器数据(STM32-1)

编码器(encoder)是将信号或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。按照外形可以分为实心轴和空心轴;按照工作原理编码器可分为增量式和绝对式两类。增量式编码器是将位移转换成周期性

拉绳位移传感器在接线时需要注意哪几点?

拉绳位移传感器在接线时需要注意哪几点? 1、拉绳位移传感器在接线时务必确认在电源关闭的情况下进行接线,接线应采用锡焊工艺,各引脚应焊接牢固,避免虚焊情况发生。焊接各引脚时应严格按照传感器厂

实验一 stm32F407VETx点亮流水灯

二、设计指标 使电路板上的8个LED轮流点亮,并按键控制点亮速度。 三、操作 1、CubeMX操作 1.1依据开发板LED引脚设置CubeMX中8个LED的引脚为GPIO_Output模式, 2、按键设置