STM32
直播中

新疆切糕

12年用户 1218经验值
私信 关注
[问答]

在Ardunio下如何去配置STM32并进行STM32的串口通信呢

在Ardunio下如何去配置STM32并进行STM32的串口通信呢?
MCU开发平台Stduino与现在所使用的Arduino有何不同呢?

回帖(1)

王丽丽

2021-12-7 13:58:37
一、Ardunio的简单介绍
Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(ArduinoIDE)。由一个欧洲开发团队于2005年冬季开发。其成员包括Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis和Nicholas Zambetti等。


它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个的部分:硬件部分是可以用来做威廉希尔官方网站 连接的Arduino威廉希尔官方网站 板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino威廉希尔官方网站 板后,程序便会告诉Arduino威廉希尔官方网站 板要做些什么了[百度百科]。


对于我们学习嵌入式来说,经常使用的软件就是MDK和IAR。但Ardunio这一款软件也有自己的特点,简单、方便,并且通过一名国外大佬写的配置文件,让Ardunio同样可支持STM32。


今天将尝试一下用Ardunio来完成STM32的串口通信。


二、Ardunio的安装与配置
1️⃣ 可以在Ardunio官网上下载 ,之后的安装可以参考网址,安装完成后如下所示:





2️⃣ 下载STM32_ardunio(在大佬的GIT上下载)


3️⃣ 下载完成后,将Arduino_STM32拷贝在你安装Ardunio的hardware目录下





4️⃣ 打开Ardunio后在工具-板子-STM32F1因为我的是正点原子F103Z所以选择这个系列的板子


5️⃣ 在菜单->工具->开发板->开发管理器搜索ARM 安装





已经装好了:





✍️ 安装你可能会遇到下半天下不下来的情况!


这时你可以试试


1、手动安装(如下,把路径拷贝压缩包过去)


2、换个网试试


6️⃣ 这里下载速度较慢,可以提供另一种方法


直接下载board,然后拷贝至如下目录(C:UsersThinkpadAppDataLocalArduino15stagingpackages)下





之后跳过下载部分即可。


7️⃣ 下载串口烧录软件





8️⃣ 插入串口,打开烧录软件,选择串口





9️⃣ 选择适合板子的频率和与板子对应的引脚(因为我的板子对应是pe5连接LED故调试用pe5)













这里按下复位键就可以看到小灯的现象了。


三、编写测试程序
需要注意的是,编译前一定要配置好,这里我选择端口为COM13,ZE芯片,串口烧入(serials)


void setup() {
//initialize digital pin LED_BUILTIN as an output.
pinMode(PE5, OUTPUT);
pinMode(PB5, OUTPUT);
Serial.begin(115200);
}


// the loop function runs over and overagain forever
void loop() {
digitalWrite(PE5, HIGH); //turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(PE5, LOW); //turn the LED off by making the voltage LOW
delay(1000); // wait for a second
digitalWrite(PB5, HIGH); //turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(PB5, LOW); //turn the LED off by making the voltage LOW
delay(1000); // wait for a second
Serial.println("Hello Mr lee!");
delay(100); // wait for a second
}


注意,上传时一定要按下复位键


波特率这时设置为115200


准备让LED进行翻转,对应端口为PE5、PB5


并且向串口发Hello lee


进行编译



注意,左上角对号为编译,后面的箭头是表示上传,对应MDK里的下载


然后进行上传(要按复位键,如果不按就会出现以下报错)


stm32flash 0.4 Failed to init device.


http://stm32flash.googlecode.com/ Using Parser : Raw BINARY Interface serial_w32: 230400 8E1


可以看到如下所示(打开串口监视器):





实物如下
四、完成实验任务
实现的功能:


⭐️ 持续向串口发 Hello Mr lee


⭐️ 输入stop停止发送


同原来的思路仍然是设计标记变量


String  inputS = "";//定义inputs
String Stopflag = "stopn";
int flag = 1;//设立标志位
void setup() {
  pinMode(PE5, OUTPUT);
  Serial.begin(115200);//设置波特率为115200
}


void loop() {
  digitalWrite(PE5, HIGH);                          //LED灭
  delay(1000);                                      // 延时
  digitalWrite(PE5, LOW);                          //LED灭
  delay(1000);                                      // 延时,标识系统正在运行
  while (Serial.available())//Serial.available()这个函数用于输入信号进入缓冲
  { inputS= Serial.readString(); //直接读取字符串
    delay(2);//这里延时是为了字符串完整读入
  }
  if (Stopflag.equals(inputS)) //停止标志位于输入信号一致,便停止发送数据
  {
    flag = 0;//标志位置0
    Serial.println("现在停止发送");
    inputS="";
  }
  inputS=""; //inputS置空
  if (flag)
  {
    Serial.println("Hello Mr lee!");
    delay(100);
  }
}
实现效果





五、总结
这次用Ardunio做STM32还是走了很多弯路的,大家在做的时候一个是如果在线安装比较慢的话可以尝试手动和换网;再者就是配置STM32的那些参数一定要弄好。但是Ardunio还是十分方便的,赶紧入手吧。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分