文章目录
一、基于Ardunio的STM32串口通信
1、要求
安装 Ardunio IDE 和相关软件支持库,在Ardunio 完成STM32板子的串口通信程序:
1)持续向串口输出“Hello world!”;
2)当接收到“stop!”时,停止输出。
2、安装Arduino
借鉴下篇博客:
https://blog.csdn.net/quansirx/article/details/104906563
注意安装完成后要将stm32固件库放入安装目录的hardware文件夹下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xNJFwHH1-1608466911317)(E:\大三学习\嵌入式系统开发\第七次作业\image\1.1.png)]](https://i-blog.csdnimg.cn/blog_migrate/6ae15795eda6d6b42e38af76224924e9.png)
3、配置开发环境
-
工具–>开发板–>开发版管理器
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aRfXDAh6-1608466911320)(E:\大三学习\嵌入式系统开发\第七次作业\image\1.2.png)]](https://i-blog.csdnimg.cn/blog_migrate/d7a816647ced5dd2fe473417d17ddab9.png)
-
安装Arduino SAM开发板
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nSxhDoeA-1608466911322)(E:\大三学习\嵌入式系统开发\第七次作业\image\1.3.png)]](https://i-blog.csdnimg.cn/blog_migrate/f87d2d15ab6259721c161eb4a747ca74.png)
-
选择硬件类型与下载方式
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-92LrjIfu-1608466911326)(E:\大三学习\嵌入式系统开发\第七次作业\image\1.4.png)]](https://i-blog.csdnimg.cn/blog_migrate/a67c5b1b2048726d35870b4c769fc7ec.png)
4、stm32串口通信
-
端口连接
我使用的是野火mini开发板,直接用usb转串口相连即可。
-
选择端口
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-15JitBnz-1608466911330)(E:\大三学习\嵌入式系统开发\第七次作业\image\1.5)]](https://i-blog.csdnimg.cn/blog_migrate/486f44e2b4ade9885e8f9b7c900cd1d7.png)
-
打开例程
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fXShEAkP-1608466911330)(E:\大三学习\嵌入式系统开发\第七次作业\image\1.6.png)]](https://i-blog.csdnimg.cn/blog_migrate/f1f78fe87c7533b9d57f2db48a3354f8.png)
-
写改代码
代码如下:
String rString = ""; // 接收到达字符串 int flag=1; //发送或接收标志 String Stop_flag = "stop"; //停止发送 String Begin_flag = "begin"; //重新发送 void setup() { Serial.begin(115200); // 串口初始化 } void loop() { while(Serial1.available() > 0) //接收缓存区有数据 { rString = Serial1.readString(); //将接收数据存到接收字符串里 } if (rString == Stop_flag) { flag = 0; //表明停止发送 } if (rString == Begin_flag) flag = 1; //表明恢复发送 if (flag == 1) { Serial.println("Hello World"); delay(1000); } } -
编译后下载
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hU33BxP6-1608466911331)(E:\大三学习\嵌入式系统开发\第七次作业\image\1.7.png)]](https://i-blog.csdnimg.cn/blog_migrate/d382e9fda7203f4a8d2d717acf4ff5f0.png)
-
打开串口进行验证
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dp7UM4JS-1608466911332)(E:\大三学习\嵌入式系统开发\第七次作业\image\1.8.gif)]](https://i-blog.csdnimg.cn/blog_migrate/50a6734f0a44b834d9cc7b4556246cd7.gif)
二、基于标准库函数与基于HAL库函数的stm32编程方式的差异
1.标准库
标准外设库(Standard Peripherals Library)是对STM32芯片的一个完整的封装,包括所有标准器件外设的器件驱动器,可以让我们写代码时更简洁。这应该是目前使用最多的ST库,几乎全部使用C语言实现。但是,标准外设库也是针对某一系列芯片而言的,没有可移植性。
2.HEL库
HAL库是用来取代之前的标准外设库的。相比标准外设库,STM32Cube HAL库表现出更高的抽象整合水平,HAL API集中关注各外设的公共函数功能,这样便于定义一套通用的用户友好的API函数接口,从而可以轻松实现从一个STM32产品移植到另一个不同的STM32系列产品。而且HAL库不光实现了寄存器的集成,还实现了一些特定功能的集成,也就是说标准外设库有时需要用几行代码完成的,HAL库一行代码就可以完成。
三、关于 stduino IDE
-
Stduino IDE是一款面向32位处理器快速入门学习的集成开发平台,目前已经支持Arduino_Core_STM32框架,集聚快捷、高效、免费、开源、易得于一身,软件还集成了GDB调试功能。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OYOVcT2L-1608466911332)(E:\大三学习\嵌入式系统开发\第七次作业\image\1.8.png)]](https://i-blog.csdnimg.cn/blog_migrate/1f0007b6fcfb3e24142f55981206912c.png)
-
软件界面如下图
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ksUjKh1o-1608466911333)(E:\大三学习\嵌入式系统开发\第七次作业\image\1.9.png)]](https://i-blog.csdnimg.cn/blog_migrate/ec143197e3d335f7b854d7d3cd25fd53.png)
我认为虽然已经有了Keil、Ardunio优秀的集成开发平台,但我认为仍有必要继续研发,因为随着各方面的进步,以前的软件不能满足我们的需求,仍有发展的必要。

本文围绕STM32展开,介绍基于Ardunio的STM32串口通信,包括安装、环境配置、通信实现等步骤;对比基于标准库函数与HAL库函数的stm32编程方式差异;还介绍了Stduino IDE,它支持Arduino_Core_STM32框架,集成GDB调试功能。
810

被折叠的 条评论
为什么被折叠?



