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就不回复。 代码如下:
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:///forum.php?mod=viewthread&tid=9&page=1#pid9
|