STM32的串口你会玩吗?

本文最后更新于2023年7月13日,已超过291天没有更新,请注意内容时效性!
首码项目微信群,加微信:WX-93588,加微信时备注散户/团队长 ⬅️此处为全站广告位,与正文项目无关
注册并登录App即可领取高达 60,000 元的数字货币盲盒:点击此处注册OKX

串行交互程序设计(接收和发送)

一,综合设计要求

1.开发板引出USART1端口用于串行通信,其中用于异步通信的RX,TX引脚分别映射到PA10PA9引脚。

2. 上位机安装SecureCRT软件,可用于串行通信。

3. 试编写程序实现如下功能:

1)能通过上位机SecureCRT软件输入命令控制开发板Led灯的亮灭,如输入”红色”点亮红灯。

2)能检测按键状态、通过串口发送给上位机,并在SecureCRT软件上显示。

3)其他交互操作。

要求:在SecureCRT软件上显示完善的交互提示信息。

二,USART主要特性

3个USART:USART1挂载于APB2高速总线,USART2 ,USART3挂载于APB1总线

2个UART:UART4,UART5挂载于APB1总线

可编程数据字长度(8位或9位)

分数波特率发生器系统,最高达4.5Mbits/s

可配置的停止位-支持1或2个停止位

LIN通信(局域互联网)

IRDA SIR 编码器解码器(红外通讯)

智能卡模拟功能

可配置的使用DMA的多缓冲器通信

三,USART引脚

STM32的串口你会玩吗?

四,USART结构

STM32的串口你会玩吗?

五,GPIO配置

GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOA, &GPIO_InitStructure);

六,工作模式设置

STM32的串口你会玩吗?

七,串口初始化

void USART1_Configration()
{
	USART_InitTypeDef USART_InitStructure;
	GPIO_InitTypeDef GPIO_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1 ,ENABLE);	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
	GPIO_Init(GPIOA, &GPIO_InitStructure);	
	USART_InitStructure.USART_BaudRate = 115200; 
	USART_InitStructure.USART_WordLength = USART_WordLength_8b; 
	USART_InitStructure.USART_StopBits = USART_StopBits_1;
	USART_InitStructure.USART_Parity = USART_Parity_No; 
	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; 
	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; 
	USART_Init(USART1, &USART_InitStructure); 
	USART_Cmd(USART1, ENABLE);
}

八,串口接收和发送

  1. 串口数据发送
int fputc (int ch,FILE *f)
{
		USART_SendData(USART1,(uint8_t)ch);
		while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
		return (ch);
}

2.串口数据接收

int fgetc(FILE *f)

{

while(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==RESET);

return (int)USART_ReceiveData(USART1);

}

九,串口工具

1.下载

STM32的串口你会玩吗?

2.完成配置

查看端口号

STM32的串口你会玩吗?

串口设置

STM32的串口你会玩吗?

注意:波特率一定要和配置一样的才可以

十,效果展示

  1. 接收字符串
int main(void)
{
 char keytemp;
	unsigned char buff[200];
 		GPIO_Configration();
	USART1_Configration();
	Delay(0x01000000);
	 printf("ÎÒÊǽñÈÕÍ·Ìõ´ó¿§\r\n");
	 printf("Please open the light \r\n");
	 printf("OK?\r\n");
}
STM32的串口你会玩吗?

2.发送

{
scanf("%s",buff);
		if(strcmp(buff,"ºìÉ«")==0) 
		{
 LEDBLUE_OFF;
			LEDGREEN_OFF;
			 LEDRED_ON; 
 printf("sucess!\r\n");			//´®¿ÚÁÁµÆ//
		}
		else if(strcmp(buff,"ÂÌÉ«")==0)
		{
 LEDRED_OFF;
		 LEDBLUE_OFF;
			LEDGREEN_ON	;
			 printf("sucess!\r\n");	
		}
		else if(strcmp(buff,"À¶É«")==0) 		{
 LEDRED_OFF;
		 LEDGREEN_OFF;
			 LEDBLUE_ON;
			 printf("sucess!\r\n");	
		}
		else if(strcmp(buff,"ledgreen_off")==0)
		{
			LEDGREEN_OFF;
		}
		 }
	 }

红灯

STM32的串口你会玩吗?
STM32的串口你会玩吗?
STM32的串口你会玩吗?

蓝灯

STM32的串口你会玩吗?
STM32的串口你会玩吗?

绿灯

STM32的串口你会玩吗?
STM32的串口你会玩吗?
STM32的串口你会玩吗?

全部开启成功!!!

网赚58:网赚58首码网:专注互联网冷门首码项目,紧跟最新最热创业信息,分享活动线报,揭秘套路,是找首码项目,找上级,找推荐码,推广找下级的好地方。👍
本文来自网络,不代表58首码网立场,详见免责声明,如有侵权,请联系站长删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

在线咨询:点击这里给我发消息

联系QQ:1405214051

商务广告,发布项目等一切