使用Ardunio 完成STM32板子的串口通信程序


关于arduino ide的简单介绍

arduino ide是一款专业的arduino开发工具,主要用于arduino程序的编写和开发,拥有开放源代码的电路图设计、支持ISP在线烧,同时支持Flash、Max/Msp、VVVV、PD、C、Processing等多种程序兼容的特点。

arduino ide特色

1、开放源代码的电路图设计,程序开发接口免费下载,也可依需求自己修改。 2、使用低价格的微处理控制器(AVR系列控制器),可以采用USB接口供电,不需外接电源,也可以使用外部9VDC输入。 3、Arduino支持ISP在线烧,可以将新的“bootloader”固件烧入AVR芯片。有了bootloader之后,可以通过串口或者USB to Rs232线更新固件。 4、可依据官方提供的Eagle格式PCB和SCH电路图简化Arduino模组,完成独立运作的微处理控制;可简单地与传感器,各式各样的电子元件连接(例如:红外线,超音波,热敏电阻,光敏电阻,伺服马达,…等) 5、支持多种互动程序,如:Flash、Max/Msp、VVVV、PD、C、Processing等。 6、应用方面,利用Arduino,突破以往只能使用鼠标、键盘、CCD等输入的装置的互动内容,可以更简单地达成单人或多人游戏互动。

一、安装 Ardunio IDE 和相关软件支持库


安装过程及软件可参考:使用Arduino IDE开发STM32F10X

不过我在USB转TTL和STM32开发板选择的不是generic_boot20_pb9.bin
而是
generic_boot20_pc13.bin
与原文有所出入


二、在Ardunio 完成STM32板子的串口通信程序


1)持续向串口输出“Hello world!”;2)当接收到“stop!”时,停止输出。

1.配置相关工具

在安装过程中我们已经将配置文件准备好
我所使用的开发板是野火指南者
1.开发板选择Generic STM32F103V series
2.Variant:选择 VE
3.Upload:Serial
4.端口根据自己所使用的连接就好(我这里是COM3)
在这里插入图片描述

2.编译输出

代码如下:

int flag=1;   
char Stop[]="stop";
void setup() {
    
    

pinMode(PB5, OUTPUT);
Serial.begin(115200);
}
void loop() {
    
    

char inByte[50];
    int i=0,s=0;
    char accepted[50];
    while (Serial.available()> 0)     
    {
    
    
        accepted[i] = Serial.read();    
        delay(10);                   
        
        if(Stop[i]==accepted[i])      
            s+=1;               
        i++;
    }
     
    if(s==4)                       
      {
    
    
           flag=0;                    
           Serial.println("已停止发送\n");
           s=0;                   
      }

      if (flag==1)                      
    {
    
    
        Serial.println("Hello World!");  
        delay(1000);
    }
    
}

点击左上角的勾进行验证,完毕后点击开发板上的reset
在这里插入图片描述
在点击向右的箭头进行上传
在这里插入图片描述
再点击工具栏里的串口监视器
在这里插入图片描述
执行如下:
在这里插入图片描述


三、基于标准库函数与基于HAL库函数的stm32编程方式的差异

一、标准库


示例:STM32有非常多的寄存器,而导致了开发困难,所以为此ST公司就为每款芯片都编写了一份库文件,也就是工程文件里stm32F1xx…之类的。在这些 .c .h文件中,包括一些常用量的宏定义,把一些外设也通过结构体变量封装起来,如GPIO口时钟等。所以我们只需要配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能。也是目前最多人使用的方式,也是学习STM32接触最多的一种开发方式


二、HAL库

HAL库是ST公司目前主力推的开发方式,全称就是Hardware Abstraction Layer(抽象印象层)。库如其名,很抽象,一眼看上去不太容易知道他的作用是什么。它的出现比标准库要晚,但其实和标准库一样,都是为了节省程序开发的时期,而且HAL库尤其的有效,如果说标准库把实现功能需要配置的寄存器集成了,那么HAL库的一些函数甚至可以做到某些特定功能的集成。也就是说,同样的功能,标准库可能要用几句话,HAL库只需用一句话就够了。并且HAL库也很好的解决了程序移植的问题,不同型号的stm32芯片它的标准库是不一样的,例如在F4上开发的程序移植到F3上是不能通用的,而使用HAL库,只要使用的是相通的外设,程序基本可以完全复制粘贴,注意是相通外设,意思也就是不能无中生有,例如F7比F3要多几个定时器,不能明明没有这个定时器却非要配置,但其实这种情况不多,绝大多数都可以直接复制粘贴。是而且使用ST公司研发的STMcube软件,可以通过图形化的配置功能,直接生成整个使用HAL库的工程文件,可以说是方便至极,但是方便的同时也造成了它执行效率的低下


原文来自:通俗易懂解析stm32 (一) HAL库 标准库 直接配置寄存器 三种开发方式的区别

猜你喜欢

转载自blog.csdn.net/aiwr_/article/details/111143224