上方是发送数据的例子,那么串口接收又该如何配置,又要在串口发送的例子上做哪些更改呢?
这里我们可以通过查询或者中断的方式来进行接收数据的两种方式。
- 查询方式就是通过不断的查询RXNE标志位,通过判断RXNE位的状态来确定数据是否接收。
- 中断方式就是通过配置接收输出控制通道,配置NVIC,在中断服务子函数里进行数据的接收。
1. 需要更改的地方
既然我们要实现串口的接收,那么就要配置串口RX引脚,在串口模式中添加USART_Mode_RX模式。
- 初始化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。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
STM32
+关注
关注
2270文章
10900浏览量
355889 -
中断
+关注
关注
5文章
898浏览量
41490 -
串口通信
+关注
关注
34文章
1624浏览量
55522
发布评论请先 登录
相关推荐
三种labview串口接收数据方式
了串行通信中断接收及数据处理的技巧。作者已经把该技术成功运用到了部队和工业控制的实际项目中。MSCOMM文件夹中为使用微软MSCOMM串口控件方式,利用事件回调注册是现在事件
发表于 11-08 11:08
labview与51串口通信的两种方式
Labview串口通信要学会两种方法,一种是利用visa(虚拟仪器软件构架),另一种是调用activeX控件。第一种方法(VISA)程序如图
发表于 09-06 16:03
51单片机与上位机通讯的两种串口通讯方式
51系列单片机与上位机通讯有两种串口通讯方式: 方式一.使用自带串口通讯模块,使用RxD/TxD口,用内置定时器产生波特率,通过中断
发表于 07-19 08:22
SQL语言的两种使用方式
SQL语言的两种使用方式在终端交互方式下使用,称为交互式SQL嵌入在高级语言的程序中使用,称为嵌入式SQL―高级语言如C、Java等,称为宿主语言嵌入式SQL的实现方式源程序(用主语言
发表于 12-20 06:51
vnc和xrdp两种远程连接的方式
[zju嵌入式]树莓派之远程桌面 之前两篇介绍了通过串口和ssh登陆到树莓派的方法,这两种方式的有点在于连接方面,响应速度快,但是也有不够直观的缺点,没办法看到图形界面.在这篇博文中,
发表于 12-24 07:54
【科普】常见的两种串口通信
在串行通信中,数据通常是在两个站之间传送,按照数据在通信线路上的传送方向可分为3种基本的传送方式:单工、半双工和全双工。单工通信使用一根导线
发表于 11-16 13:50
•7375次阅读
labview串口接收数据_labview串口被动接收数据
字节的数据。最后,用一个状态机来实现相邻两个字符串的判断。如果串口在相邻两个字符串之间接收时间大于50ms,则判断为
发表于 01-15 15:49
•6.7w次阅读
评论