上方是发送数据的例子,那么串口接收又该如何配置,又要在串口发送的例子上做哪些更改呢?
这里我们可以通过查询或者中断的方式来进行接收数据的两种方式。
1. 需要更改的地方
既然我们要实现串口的接收,那么就要配置串口RX引脚,在串口模式中添加USART_Mode_RX模式。
//RX端
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; //上拉输入
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //50MhZ
GPIO_Init(GPIOA,&GPIO_InitStructure);
USART_InitStruct.USART_Mode=USART_Mode_Tx|USART_Mode_Rx; //TX 发送模式 RX 接收模式
2. 查询RXNE标志位
这里我们还是来看一看RXNE标志位的描述
上图描述,为0时数据没有收到,为1时收到了数据,数据可以从RDR里读出
所以在主程序里不断读取RXNE标志位,如果为1,表示数据可以读出
uint8_t RX_Data;
int main()
{
Serial_Init();
Serial_SendByte(0x16);
while(1)
{
if(USART_GetFlagStatus(USART2,USART_FLAG_RXNE)==SET) //0 循环等待 1 可以接收数据
{
RX_Data=USART_ReceiveData(USART2);
Serial_SendByte(RX_Data);
}
}
}
下图为程序现象:pc向单片机发送数据0x15,单片机接收数据0x15,并且把接收到的数据作为数据发送到pc,在pc上显示0x15。
全部0条评论
快来发表一下你的评论吧 !