STM32
直播中

俞舟群

7年用户 1058经验值
擅长:可编程逻辑 电源/新能源
私信 关注
[问答]

如何利用Ardunio IDE去完成stm32f103的串口通信呢

怎样去使用Ardunio IDE呢?
如何利用Ardunio IDE去完成STM32f103的串口通信呢?有哪些操作步骤?

回帖(1)

h1654155275.5916

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使用体会

用起来比较简单,学起来相对来说容易操作和理解。而且开发很高效便捷。
举报

更多回帖

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