STM32
直播中

王秀兰

7年用户 1390经验值
私信 关注
[问答]

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

Arduino IDE开发的优点是什么?
安装Arduino IDE及程序目的是什么?基于标准库函数与基于HAL库函数的STM32编程方式有何差异?

回帖(1)

李伟嘉

2021-12-6 15:24:38
一、安装Arduino IDE及程序目的


1.1Arduino IDE简介及下载

Arduino IDE开发的优点是更简单,易用,上手,适合新手使用。缺点是省去了更多代码配置环节,不便于底层理解。但这不影响Arduino IDE开发的强大性,一般情况下开发板实现相同的功能,Arduino IDE开发比keil开发使用更少的代码就能实现,这一点有点类似编程界的Python与其他编程语言的对比吧。想在底层方面了解更多,如亲自操作开发板寄存器的话,建议还是使用keil+库函数开发吧。
配置Arduino IDE开发STM32F10X的环境
1.2程序目的

在Ardunio 完成STM32板子的串口通信程序:
1)持续向串口输出“Hello world!”
2)当接收到“stop!”时,停止输出。
1.3Arduino IDE配置

配置流程:
一、先安装好Arduino IDE
双击arduino-1.8.12-windows.exe正常安装,一直按默认方式安装下去就行。
二、将打包文件中的Arduino_STM32整个文件夹拷贝到Arduino IDE安装目录下的hareware下







三、打开Arduino安装编译支持文件
工具开发板开发板管理器,输入ARM关键字搜索,选中Cortex-M3系列的编译支持文件并安装





选择板子










二、程序实现

2.1代码展示


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 = Serial.read();   
        delay(10);                  
        
        if(Stop==accepted)      
            s+=1;               
        i++;
    }
     
    if(s==4)                       
      {
           flag=0;                    
           Serial.println("已停止发送n");
           s=0;                  
      }


      if (flag==1)                     
    {
        Serial.println("Hello World!");  
        delay(1000);
    }
   
}
2.2程序调试及结果

选择端口

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

3.1标准外设库

• 标准外设库(Standard Peripherals Library)是对STM32芯片的一个完整的封装,包括所有标准器件外设的器件驱动器。这应该是目前使用最多的ST库,几乎全部使用C语言实现。但是,标准外设库也是针对某一系列芯片而言的,没有可移植性。
3.2HAL库

• HAL库是ST公司提供的新标准库,包含在ST为新的标准库注册了一个新商标:STMCube™当中。可以说HAL库就是用来取代之前的标准外设库的。相比标准外设库,STM32Cube HAL库表现出更高的抽象整合水平,HAL API集中关注各外设的公共函数功能,这样便于定义一套通用的用户友好的API函数接口,从而可以轻松实现从一个STM32产品移植到另一个不同的STM32系列产品。HAL库是ST未来主推的库,从前年开始ST新出的芯片已经没有STD库了,比如F7系列。现在,ST主推HAL库,目前,HAL库已经支持STM32全线产品。
3.3比较差异

• 新芯片现在只推出HAL库,HAL库与标准库比较,所用的API函数不一样,两者也相互独立,优势在于可以用cubeMX生成代码。(ST专门为其开发了配套的桌面软件STMCubeMX,开发者可以直接使用该软件进行可视化配置,大大节省开发时间。)
四、Stduino IDE体会

4.1Stduino IDE

Stduino IDE官方网站
• Stduino IDE是一款面向32位处理器快速入门学习的集成开发平台,目前已经支持Arduino_Core_STM32框架,集聚快捷、高效、免费、开源、易得于一身,软件还集成了GDB调试功能。
• Stduino IDE相对于Arduino IDE来说,功能确实更加强大。不过软件界面更加复杂,学习难度更高。
• 已经有了Keil、Ardunio,是否还有必要“再造车轮”?
  很有必要,尽管软件的上手难易程度也是一个很重要的因素,但软件本来就是在不断进步,功能的强大可以很方便于使用,以及即使在某些情况下Stduino IDE若不能使用,也有相应的替代品Stduino IDE来以不至于没有软件可用。
举报

更多回帖

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