当前位置: 首页 > 工具软件 > STduino > 使用案例 >

Stduino小白练习第二弹--串口使用

宓博实
2023-12-01

2019/11/30 星期六 作者:Astilbe
问题:怎么利用Stduino实现stm32单片机与电脑间串口通讯?

Stduino需要和其他设备相互通讯,最简单的方式就是利用串口实现通讯。本篇介绍Stduino硬件串口通讯,以及相关函数的使用。

首先要介绍一个概念——波特率。波特率表示每秒钟传送的码元符号的个数,简而言之就是对一秒钟传递多少信息的一个度量。如果是串口通信,一般包括起始位,数据位,校验位(可无)和停止位。以起始位为标志,通信双方进行同步,然后发送方以一个固定的时间间隔进行比特位的传输,接收方以一个固定的时间间隔进行比特位的接收,如果双方的波特率不同,就意味着发送方和接收方所采用的时间间隔不相等,就可能导致接收数据的错位。一般认为通信双方的波特率相差2.5%以内可保证正常通信。

因此初始化串口的第一步,就是设置串口波特率。在这里我们可以通过Serial.begin()函数实现。常见的波特率有9600与115200两种,在这里我们设置为9600进行测试。
Stduino IDE自带了许多与串口操作有关的函数,分别是
Serial.begin()//初始化串口;
Serial.available()//判断当前串口是否有可用数据,有则返回1,没有则返回0;
Serial.print()//利用串口向外传送信息,在这里就是传给电脑
Serial.read()//当Serial.available()返回1时,通过此函数会读取到接收到的相关数据,否则返回无

接下来我们进行以下的测试:利用Stduino向外发送"Hello,world!"。
分为以下几步:
初始化串口;
向外传送"Hello,world!"。
这里设置为间隔一秒发送一次。

代码如下:

void setup() {
    
  // put your setup code here, to run once:
Serial.begin(9600);//初始化
}

void loop() {
  // put your main code here, to run repeatedly:
Serial.println("Hello,World");
    delay(1000);
}

点开Stduino右侧眼睛(串口助手),点击检测串口、打开串口。恭喜你接收到你的Stduino发给你的“Hello,world!”了。

那么,我想给Stduino发消息呢?比如发一个1?接下来,我们发给Stduino一个1.如果收到就回复"Hello,world!",没有收到或者收到的不是1就不回复。
代码如下:

```c
void setup() {
    
  // put your setup code here, to run once:
Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
if(Serial.available()){//判断是否初始化
<div style="text-indent: 28px;">if(Serial.read()==49){//判断是否接收到了1,49是1的ASCII码值,测试时注意收到的是十进制还是ascii码。</div>Serial.print("Hello,World");
    delay(1000);
         }
    }
}

同样,点开Stduino右侧眼睛(串口助手),点击检测串口、打开串口。恭喜你的Stduino收到你的1并给你回复了“Hello,world!”。

最后介绍一个函数Serial.println(),这是一个给输出换行的函数,用来减少可能出现的混淆,用到了再说。
[转载自Stduino网]
http://stduino.com/forum.php?mod=viewthread&tid=9&page=1#pid9

 类似资料: