USART串口通信---串口接收字符

      如何配置USART串口的接收

1.配置时钟

2.配置TX和RX的GPIO结构体

3.配置串口USART1的结构体

4.在主函数中调用与编写功能程序

5.在串口调试助手中接收字符,实现功能

1.配置时钟:  GPIO,   USART(串口),   AFIO(引脚复用)

在这里我用的是stm32上位于APB2总线下的USART1。

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);	//APB2总线下的GPIOA,使能									
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);	//引脚复用时钟				
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);  //USART1串口时钟

2.配置TX和RX的GPIO结构体

TX:发送(使用PA9引脚)。    RX:接收 ,(使用PA10引脚)。

GPIO_InitTypeDef  gpioinitstruct;	//定义GPIO口的结构体,可自行定义名
//TX
gpioinitstruct.GPIO_Pin = GPIO_Pin_9;                        //PA9为发送
gpioinitstruct.GPIO_Mode =  GPIO_Mode_AF_PP;	             //配置模式为复用推挽输出										
gpioinitstruct.GPIO_Speed = GPIO_Speed_50MHz;                //速度50MHZ,速度可随意配置

GPIO_Init(GPIOA, &gpioinitstruct);                           //结构体初始化

//RX
gpioinitstruct.GPIO_Pin = GPIO_Pin_10;														
gpioinitstruct.GPIO_Mode =  GPIO_Mode_IN_FLOATING;	//浮空输入,完全由外部输入决定电平高低							

GPIO_Init(GPIOA, &gpioinitstruct);	

3.配置串口USART1的结构体

USART_InitTypeDef usartinitstruct;             //串口初始化                         

usartinitstruct.USART_BaudRate = 9600;		//波特率,常用115200和9600,区别是传输数据速度不同																		
usartinitstruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //不使用硬件流
usartinitstruct.USART_Mode = 	USART_Mode_Rx | USART_Mode_Tx; //允许用逻辑或运算选择接收和发送模式								  
usartinitstruct.USART_Parity = 	USART_Parity_No;    //奇偶校验位,选择不校验																
usartinitstruct.USART_StopBits  = USART_StopBits_1;	//停止位,正常用1													
usartinitstruct.USART_WordLength = USART_WordLength_8b;	//字长,即为有效数据位,有八位和九位												
	
USART_Init(USART1, &usartinitstruct);        //初始化串口结构体
	

USART_Cmd(USART1, ENABLE);                     //使能串口

4.在主函数中调用与编写功能程序

int main()
{

    USART_Init();
       
    while(1)
{

USART_SendData(USART1, 'Z');    //发送数据 Z到串口的上位机,在usart.h库函数中调用

while (USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);    //判断串口目前状态的库函数,没发送完则一直循环,发送完则跳转下一语句
//TXE(”发送“数据寄存器为空标志) ,等待串口发送完成再执行下一句 
USART_SendData(USART1, 'C'); 

while (USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);    //继续等待是否发送完成

USART_SendData(USART1, '\n');        //换行,发送一个字符,等待串口发送.....
delay(1000);   //延时1S

}
    

}

5.在串口调试助手中接收字符,实现功能

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值