使用Ardunio IDE来完成stm32串口通信
1 Ardunio IDE的简介与安装
1.1 什么是Ardunio IDE
Ardunio IDE是一款专业的Ardunio开发工具,主要用于Ardunio程序的编写和开发,拥有开放源代码的电路图设计、支持ISP在线烧,同时支持Flash、Max/Msp、VVVV、PD、C、Processing等多种程序兼容的特点。
1.2 Ardunio IDE下载安装与环境配置
1.2.1 Ardunio下载
点击下载:官网下载链接
下载之后点击安装,安装过程很简单在此不再赘述。(具体安装教程可参考博客)
1.2.2 Ardunio配置
因为我们本次为了实现STM32串口通信,所以我们需要下载支持包。
首先下载Arduino_STM32
下载完成后解压将文件夹放在Ardunio安装文件夹 \Arduino\hardware 下
再打开Ardunio按照下列步骤打开
之后输入:arm 搜索安装即可
接下来需要安装串口下载工具
这里提供打包好的工具文件
百度网盘:提取文件
提取码:n678
链接板子的串口,双击打开里面的文件
一直点击Next即可
这里需要选中你连接串口的端口
再次一直点击Next
直到
选择如图文件夹下的文件即可,根据你的板子pe连接LED的不同灵活选择
打开后再次Next
直到
出现上图就完成了关闭即可
2 在Ardunio中实现STM32的串口通信
2.1 编写代码并且验证上传
打开Ardunio
并且在工具中选择如图所示配置,其中端口按照你连接的选择
输入以下代码:
String inputS = "";
String Stopflag = "stop\n";
int flag = 1;//设立标志位
void setup()
{
pinMode(PE5, OUTPUT);
Serial.begin(115200);//设置波特率为115200
}
void loop() {
digitalWrite(PE5, HIGH); //灯亮
delay(1000);
digitalWrite(PE5, LOW); //灯灭
delay(1000);
while (Serial.available())//Serial.available()这个函数用于输入信号进入缓冲
{
inputS= Serial.readString(); //直接读取字符串
delay(2);//这里延时是为了字符串完整读入
}
if (Stopflag.equals(inputS)) //停止标志位于输入信号一致,便停止发送数据
{
Serial.println("ok,stop");
inputS="";
while(1){}
}
else
{
inputS=""; //inputS置空
Serial.println("Hello Word!");
delay(100);
}
}
依次点击验证和上传
2.2 结果展示
这时候可以打开我们工具中的串口监视器调整好波特率来观测我们的结果
3 基于标准库函数与基于HAL库函数的stm32编程方式的差异
3.1 标准库
STM32有非常多的寄存器,而导致了开发困难,所以为此ST公司就为每款芯片都编写了一份库文件,也就是工程文件里stm32F1xx…之类的。在这些 .c .h文件中,包括一些常用量的宏定义,把一些外设也通过结构体变量封装起来,如GPIO口时钟等。所以我们只需要配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能。也是目前最多人使用的方式,也是学习STM32接触最多的一种开发方式,我也就不多阐述了。
3.2 HAL库
HAL库是ST公司目前主力推的开发方式,全称就是Hardware Abstraction Layer(抽象印象层)。它的出现比标准库要晚,但其实和标准库一样,都是为了节省程序开发的时期,而且HAL库尤其的有效,如果说标准库把实现功能需要配置的寄存器集成了,那么HAL库的一些函数甚至可以做到某些特定功能的集成。也就是说,同样的功能,标准库可能要用几句话,HAL库只需用一句话就够了。并且HAL库也很好的解决了程序移植的问题,不同型号的stm32芯片它的标准库是不一样的,例如在F4上开发的程序移植到F3上是不能通用的,而使用HAL库,只要使用的是相通的外设,程序基本可以完全复制粘贴,注意是相通外设,意思也就是不能无中生有,例如F7比F3要多几个定时器,不能明明没有这个定时器却非要配置,但其实这种情况不多,绝大多数都可以直接复制粘贴。是而且使用ST公司研发的STMcube软件,可以通过图形化的配置功能,直接生成整个使用HAL库的工程文件,可以说是方便至极,但是方便的同时也造成了它执行效率的低下,在各种论坛帖子真的是被吐槽的数不胜数。
(参考博客)
4 Ardunio IDE与Stduino IDE的比较
4.1 简介
Stduino IDE是一款面向32位处理器快速入门学习的集成开发平台,已率先支持Arduino_Core_STM32框架,集聚快捷、高效、免费、开源、易得于一身,软件还集成了GDB调试功能
Ardunio IDE在文章开头已经介绍
4.2 对比
两者的对比如下:(参考博客)
Ardunio IDE
简单易用 ,可以完全用c语言进行软件代码调试 ,也有很多库可以进行下载调用。
没有断点调试 ,不能很好的理解单片机如何进行地址赋值和工作 ,可以作为入门级学习。
体验就是简单易上手,但与Keil等比较就有一点简陋,比较适合入门学习。深入学习还得是keil,IAR等。
Stduino IDE
既可以完全用c语言编写调试程序, 也可以进行断点调试 ,和keil一样可以添加文件和工程 ,融合了各家所长, 也有相关关键字提示。
但目前都是基于已开发的语言进行的学习开发,如何才可以将单片机编程变得更加易用和实用,解决痛点才是关键 。
4.3 结论
总结: 两者各有各的好,对于初学者来说比keil,IAR更好上手,但是却没有他们更加深入了解。
5 本文总结
本次主要使用Ardunio IDE来完成stm32串口通信,与之前文章不同的是本次使用串口烧录并且在Ardunio IDE中非常简单。