STM32
登录
直播中
哈哈哈
9年用户
752经验值
擅长:可编程逻辑
私信
关注
[问答]
如何用Arduino去完成stm32的串口通信呢
开启该帖子的消息推送
Arduino
STM32
串口通信
如何去完成Arduino的安装与配置呢?
如何用Arduino去完成
STM32
的串口
通信
呢?
回帖
(1)
张英
2021-12-7 14:09:54
一、Arduino的安装与配置
安装
1)提取安装包
2)双击arduino-1.8.12-windows.exe正常安装,一直按默认方式安装下去就行,也可以自己选择路径。
注意:
选择路径时不要有中文。
配置
1)将打包文件中的Arduino_STM32整个文件夹拷贝到Arduino安装目录下的hareware下。
2)然后打开Arduino,点击菜单栏工具开发板…第一栏的开发板管理器
3)输入ARM关键字搜索,选中Cortex-M3系列的编译支持文件并安装
4)安装完成后,在菜单栏工具开发板选择芯片类型,由于我使用的是stm32f103指南者,所以选择为Generic STM32F103V series。
5)Variant,Upload method,CPU Speed,Optimize这几个的选择如下:
二、用Arduino 完成stm32的串口通信
1)连接stm32f103指南者开发板
2)烧录程序
以下代码完成:
持续向串口输出“Hello world!”;
当接收到“stop”时,停止输出;
小灯闪烁。
int flag=1; char Stop[]="stopn";void setup() {//初始化pinMode(PB0, OUTPUT);//PB0为绿色,PB1为蓝色,PB5为红色,可根据需要改动Serial.begin(115200);}void loop() {int i=0,flag_s=0;char inByte[50];digitalWrite(PB0, HIGH); //小灯亮delay(500); // 延迟digitalWrite(PB0, LOW); //小灯灭delay(500); // 延迟while (Serial.available()> 0) //当发送缓冲区有数据时{ inByte
= Serial.read(); //从串口的缓冲区取出并读取一个Byte的数据 delay(10); i++ ; }if(Stop
=inByte
){ if(Stop[i-1]==inByte[i-1]&&Stop[i-2]==inByte[i-2]&&Stop[i-3]==inByte[i-3]) { flag=0; Serial.println("收到!"); }//当收到stop命令时停止并回复收到}if(flag==1){ Serial.println("Hello World!");//向串口发送数据delay(100); // 延迟}} 3)选择连接的串口
三、基于标准库函数与基于HAL库函数的stm32编程方式的差异。
标准外设库(Standard Peripherals Library)是对STM32芯片的一个完整的封装,包括所有标准器件外设的器件驱动器,可以让我们写代码时更简洁。这应该是目前使用最多的ST库,几乎全部使用C语言实现。但是,标准外设库也是针对某一系列芯片而言的,没有可移植性。
HAL库是用来取代之前的标准外设库的。相比标准外设库,STM32Cube HAL库表现出更高的抽象整合水平,HAL API集中关注各外设的公共函数功能,这样便于定义一套通用的用户友好的API函数接口,从而可以轻松实现从一个STM32产品移植到另一个不同的STM32系列产品。而且HAL库不光实现了寄存器的集成,还实现了一些特定功能的集成,也就是说标准外设库有时需要用几行代码完成的,HAL库一行代码就可以完成。
一、Arduino的安装与配置
安装
1)提取安装包
2)双击arduino-1.8.12-windows.exe正常安装,一直按默认方式安装下去就行,也可以自己选择路径。
注意:
选择路径时不要有中文。
配置
1)将打包文件中的Arduino_STM32整个文件夹拷贝到Arduino安装目录下的hareware下。
2)然后打开Arduino,点击菜单栏工具开发板…第一栏的开发板管理器
3)输入ARM关键字搜索,选中Cortex-M3系列的编译支持文件并安装
4)安装完成后,在菜单栏工具开发板选择芯片类型,由于我使用的是stm32f103指南者,所以选择为Generic STM32F103V series。
5)Variant,Upload method,CPU Speed,Optimize这几个的选择如下:
二、用Arduino 完成stm32的串口通信
1)连接stm32f103指南者开发板
2)烧录程序
以下代码完成:
持续向串口输出“Hello world!”;
当接收到“stop”时,停止输出;
小灯闪烁。
int flag=1; char Stop[]="stopn";void setup() {//初始化pinMode(PB0, OUTPUT);//PB0为绿色,PB1为蓝色,PB5为红色,可根据需要改动Serial.begin(115200);}void loop() {int i=0,flag_s=0;char inByte[50];digitalWrite(PB0, HIGH); //小灯亮delay(500); // 延迟digitalWrite(PB0, LOW); //小灯灭delay(500); // 延迟while (Serial.available()> 0) //当发送缓冲区有数据时{ inByte
= Serial.read(); //从串口的缓冲区取出并读取一个Byte的数据 delay(10); i++ ; }if(Stop
=inByte
){ if(Stop[i-1]==inByte[i-1]&&Stop[i-2]==inByte[i-2]&&Stop[i-3]==inByte[i-3]) { flag=0; Serial.println("收到!"); }//当收到stop命令时停止并回复收到}if(flag==1){ Serial.println("Hello World!");//向串口发送数据delay(100); // 延迟}} 3)选择连接的串口
三、基于标准库函数与基于HAL库函数的stm32编程方式的差异。
标准外设库(Standard Peripherals Library)是对STM32芯片的一个完整的封装,包括所有标准器件外设的器件驱动器,可以让我们写代码时更简洁。这应该是目前使用最多的ST库,几乎全部使用C语言实现。但是,标准外设库也是针对某一系列芯片而言的,没有可移植性。
HAL库是用来取代之前的标准外设库的。相比标准外设库,STM32Cube HAL库表现出更高的抽象整合水平,HAL API集中关注各外设的公共函数功能,这样便于定义一套通用的用户友好的API函数接口,从而可以轻松实现从一个STM32产品移植到另一个不同的STM32系列产品。而且HAL库不光实现了寄存器的集成,还实现了一些特定功能的集成,也就是说标准外设库有时需要用几行代码完成的,HAL库一行代码就可以完成。
举报
更多回帖
rotate(-90deg);
回复
相关问答
Arduino
STM32
串口通信
如何利用
Arduino
IDE
去
完成
stm32
的
串口
通信
呢
2021-12-07
1184
如
何用
Ardunio IDE
去
完成
stm32
f103的
串口
通信
呢
2021-12-14
1100
如何
去
实现基于
Arduino
IDE软件的
STM32
串口
通信
程序
呢
2021-12-07
870
如
何用
STM32
的
串口
6
去
完成
RS485的
通信
实验
呢
2021-11-16
1393
如何利用Python
去
实现
Arduino
UNO的
串口
通信
呢
2021-12-21
1283
如何
去
完成
STM32
串口
通信
的过程
呢
2021-12-06
1026
如何利用Ardunio IDE
去
完成
stm32
f103的
串口
通信
呢
2021-12-08
976
Ardunio是怎样
去
完成
STM32
板子的
串口
通信
的
2021-11-19
862
如
何用
Ardunio IDE
完成
stm32
f103指南者的
串口
通信
?
2021-12-08
598
如何在Ardunio下
完成
STM32
的
串口
通信
?
2021-12-09
1131
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分