Ardunio STM32F103 串口通信
怎样去使用Ardunio IDE呢?
如何利用Ardunio IDE去完成
STM32f103的串口
通信呢?有哪些操作步骤?
回帖(1)
2021-12-8 10:20:18
1.用Ardunio IDE完成stm32f103指南者的串口通信。
①安装Ardunio IDE
下载解压安装Ardunio,一直默认安装就可以,选择路径不要有中文。
②配置Ardunio IDE
将打包文件中的Arduino_STM32整个文件夹拷贝到Arduino安装目录下的hareware下。
按照步骤安装完成后,在菜单栏工具开发板选择芯片类型,寝室里使用的是stm32f103指南者,所以选择为Generic STM32F103V series,然后Variant,Upload method,CPU Speed,Optimize这几个的选择如下
③连接stm32f103指南者开发板
直接用u***线把开发板与电脑相连。
④烧录程序(stm32f103指南者)
通过代码完成:
持续向串口输出“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[i] = Serial.read(); //从串口的缓冲区取出并读取一个Byte的数据 delay(10); i++ ; }if(Stop[i]=inByte[i]){ 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); // 延迟}}
选择连接的串口。

2.基于标准库函数与基于HAL库函数的stm32编程方式的差。
对于标准库,STM32有非常多的寄存器,而导致了开发困难,所以为此ST公司就为每款芯片都编写了一份库文件,在这些 .c .h文件中,包括一些常用量的宏定义,把一些外设也通过结构体变量封装起来,如GPIO口时钟等。所以我们只需要配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能。也是目前最多人使用的方式,也是学习STM32接触最多的一种开发方式。
HAL库是ST公司目前主力推的开发方式,全称就是Hardware Abstraction Layer(抽象印象层)。它的出现比标准库要晚,但其实和标准库一样,都是为了节省程序开发的时期,而且HAL库尤其的有效,如果说标准库把实现功能需要配置的寄存器集成了,那么HAL库的一些函数甚至可以做到某些特定功能的集成。也就是说,同样的功能,标准库可能要用几句话,HAL库只需用一句话就够了。并且HAL库也很好的解决了程序移植的问题,不同型号的stm32芯片它的标准库是不一样的,而使用HAL库,只要使用的是相通的外设,程序基本可以完全复制粘贴。
3.stduino IDE使用体会
用起来比较简单,学起来相对来说容易操作和理解。而且开发很高效便捷。
1.用Ardunio IDE完成stm32f103指南者的串口通信。
①安装Ardunio IDE
下载解压安装Ardunio,一直默认安装就可以,选择路径不要有中文。
②配置Ardunio IDE
将打包文件中的Arduino_STM32整个文件夹拷贝到Arduino安装目录下的hareware下。
按照步骤安装完成后,在菜单栏工具开发板选择芯片类型,寝室里使用的是stm32f103指南者,所以选择为Generic STM32F103V series,然后Variant,Upload method,CPU Speed,Optimize这几个的选择如下
③连接stm32f103指南者开发板
直接用u***线把开发板与电脑相连。
④烧录程序(stm32f103指南者)
通过代码完成:
持续向串口输出“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[i] = Serial.read(); //从串口的缓冲区取出并读取一个Byte的数据 delay(10); i++ ; }if(Stop[i]=inByte[i]){ 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); // 延迟}}
选择连接的串口。

2.基于标准库函数与基于HAL库函数的stm32编程方式的差。
对于标准库,STM32有非常多的寄存器,而导致了开发困难,所以为此ST公司就为每款芯片都编写了一份库文件,在这些 .c .h文件中,包括一些常用量的宏定义,把一些外设也通过结构体变量封装起来,如GPIO口时钟等。所以我们只需要配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能。也是目前最多人使用的方式,也是学习STM32接触最多的一种开发方式。
HAL库是ST公司目前主力推的开发方式,全称就是Hardware Abstraction Layer(抽象印象层)。它的出现比标准库要晚,但其实和标准库一样,都是为了节省程序开发的时期,而且HAL库尤其的有效,如果说标准库把实现功能需要配置的寄存器集成了,那么HAL库的一些函数甚至可以做到某些特定功能的集成。也就是说,同样的功能,标准库可能要用几句话,HAL库只需用一句话就够了。并且HAL库也很好的解决了程序移植的问题,不同型号的stm32芯片它的标准库是不一样的,而使用HAL库,只要使用的是相通的外设,程序基本可以完全复制粘贴。
3.stduino IDE使用体会
用起来比较简单,学起来相对来说容易操作和理解。而且开发很高效便捷。
举报
更多回帖