查看: 2856|回复: 0

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

[复制链接]

53

主题

55

帖子

431

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
431
发表于 2019-12-1 00:03:45 | 显示全部楼层 |阅读模式
本帖最后由 Astilbe001 于 2020-1-7 14:34 编辑

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!"。
这里设置为间隔一秒发送一次。


代码如下:
  1. void setup() {
  2.    
  3.   // put your setup code here, to run once:
  4. Serial.begin(9600);//初始化
  5. }

  6. void loop() {
  7.   // put your main code here, to run repeatedly:
  8. Serial.println("Hello,World");
  9.     delay(1000);
  10. }
复制代码
点开Stduino右侧眼睛(串口助手),点击检测串口、打开串口。恭喜你接收到你的Stduino发给你的“Hello,world!”了。
QQ截图20191130231809.png
那么,我想给Stduino发消息呢?比如发一个1?接下来,我们发给Stduino一个1.如果收到就回复"Hello,world!",没有收到或者收到的不是1就不回复。
代码如下:
  1. void setup() {
  2.    
  3.   // put your setup code here, to run once:
  4. Serial.begin(9600);
  5. }

  6. void loop() {
  7.   // put your main code here, to run repeatedly:
  8. if(Serial.available()){//判断是否初始化
  9.     if(Serial.read()==49){//判断是否接收到了1,49是1的ASCII码值,测试时注意收到的是十进制还是ascii码。
  10.         Serial.println("Hello,world!");
  11.         }
  12.     }
  13. }
复制代码

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

最后介绍一个函数Serial.println(),这是一个给输出换行的函数,用来减少可能出现的混淆,用到了再说。
QQ截图20191130232136.png



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

Stduino 零基础入门课程系列(五) 实验三:按键输入
Stduino 零基础入门课程系
Hello!各位同学大家好~上节课我们利用管脚输出高低电平信号,控制LED的亮灭,那么我
Stduino小白练习第六弹--按键控制串口通信
Stduino小白练习第六弹--
2020/01/08 星期三 作者:Astilbe 问题:我们如何通过按下按键来传输固定的信息给PC呢
37种传感器(二十九)MPU6050陀螺仪模块+Stduino Nano&UNO
37种传感器(二十九)MPU6
StduinoUno /纳米37种传感器(二十九)六轴 MPU陀螺仪模块关键词: 51 ; stm32 ; ar
stm32 最小系统 小蓝板 LED闪烁灯(三),无需刷Bootloader
stm32 最小系统 小蓝板 LE
关键词:stm32 小蓝板 STM32F103C8T6 Stduino IDE Stduino Nano LED闪烁灯 通过Stduin
Stduino IDE软件下载专区
Stduino IDE软件下载专区
Stduino IDE软件下载专区 Windows版:7月29号发布1.01, 现可
今天在文涛老大的帮助下我的stm32zet6终于把simlpefoc库跑起...
今天在文涛老大的帮助下我
[md]首先本身是刚刚从MDK转到arduino过来的新人,只因为要完开源的simplefoc,期间由
连接ADS1292模拟前端芯片,使用SPI库,导致串口不输出数据
连接ADS1292模拟前端芯片
[md]连接ADS1292模拟前端芯片,使用SPI库,导致串口不输出数据 ![QSJSBEZF83I8C907%$
©2001-2018  Stduino官网  Powered by©Discuz!   ( 皖ICP备17011998号 )
快速回复 返回顶部 返回列表