Arduino和HAL库函数编程


前言

  1. 安装 Arduino IDE 和相关软件支持库,在Arduino 完成STM32板子的串口通信程序:1)持续向串口输出“Hello world!”;2)当接收到“stop!”时,停止输出。

  2. 以实例程序(比如串口通信),分析基于标准库函数与基于HAL库函数的stm32编程方式的差异。

  3. 大概是受到Ardunio IDE的启发,网上有一个国人版的MCU集成开发平台, stduino IDE,请试玩之,然后谈一下体会,比如:已经有了Keil、Arduino,觉得是否还有必要“再造车轮”?

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

Arduino IDE是Arduino产品的软件编辑环境。简单的说就是用来写代码,下载代码的地方。任何的Arduino产品都需要下载代码后才能运作。我们所搭建的硬件电路是辅助代码来完成的,两者是缺一不可的。如同人通过大脑来控制肢体活动是一个道理。如果代码就是大脑的话,外围硬件就是肢体,肢体的活动取决于大脑,所以硬件实现取决于代码。

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

1.在官网下载安装压缩包,解压后点击“arduino-1.8.12-windows”
在这里插入图片描述安装过程如下:
在这里插入图片描述在这里插入图片描述
2.Arduino IDE 相关配置
打开Arduino “工具”——“开发板:“Arduino Uno” ”——“开发板管理器”
在这里插入图片描述在开发板管理器上搜索ARM 选择第一个安装
在这里插入图片描述然后再次查看 “工具”——“开发板:“Arduino Uno” ”
在这里插入图片描述在之前的安装包找到这个文件“Arduino_STM32-master”
在这里插入图片描述将它复制到Arduino IDE的安装目录下 如图:
在这里插入图片描述以下是复制之后,多了很多的STM32的开发板型号
在这里插入图片描述3.检查环境是否搭建成功
点击“文件”——“示例”——“A_STM32_Example”——“Digital”——“Blink”
在这里插入图片描述点击编译,显示编译成功,至此环境搭建完成。
在这里插入图片描述

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

我用的是指南者STM32F103VE

1.打开Arduino,新建文件
在这里插入图片描述
2.输入程序

String rString="";  //接收到达字符串 
String Stop_flag="stop";
String Begin_flag="begin";
void setup() {
//初始化
pinMode(PB1, OUTPUT); //PB0为绿色,PB1为蓝色,PB5为红色,可根据需要改动
Serial.begin(115200);
}
void loop() 
{
  int i=0,flag=1;
  char inByte[1000];
  digitalWrite(PB1, HIGH); //小灯亮
  delay(500); // 延迟
  digitalWrite(PB1, LOW); //小灯灭
  delay(500); // 延迟
  Serial.println("Hello world!");//向串口发送数据
  while (Serial.available()> 0)     //当发送缓冲区有数据时
  {
       rString = Serial1.readString(); //将接收数据存到接收字符串里 
                              
  }
  if(rString==Stop_flag)
   {
    
    Serial.println("收到!");//当收到stop命令时停止并回复收到!
    while(1)
    {
      while (Serial.available()> 0)     //当发送缓冲区有数据时
     {
       rString = Serial1.readString(); //将接收数据存到接收字符串里 
                              
     }
     if (rString==Begin_flag)
     {
      Serial.println("继续发送");
      break;
     }   //表明恢复发送,跳出死循环
    }
   } 
}

3.保存
在这里插入图片描述
4.点击“工具” 选择与你自己开发板同型号的板子
在这里插入图片描述5.Variant选择“STM32F103VE”
在这里插入图片描述
6.Upload method选择“Serial”
在这里插入图片描述7.用USB线将开发板和电脑连接起来 如图
在这里插入图片描述8.编译,先按板子上的复位键,再上传
在这里插入图片描述
在这里插入图片描述

运行结果如下:
在这里插入图片描述

在这里插入图片描述

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

标准库

标准外设库(Standard Peripherals
Library)是对STM32芯片的一个完整的封装,包括所有标准器件外设的器件驱动器。在使用中我们只需要配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能。但是,标准外设库也是针对某一系列芯片而言的,没有可移植性。

ST公司为每款芯片都编写了一份库文件,也就是工程文件里stm32F1xx…之类的。在这些 .c .h文件中,包括一些常用量的宏定义,把一些外设也通过结构体变量封装起来,如GPIO口时钟等。所以我们只需要配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能。

HAL库

全称Hardware Abstraction
Layer(抽象印象层)。HAL库的一些函数可以做到某些特定功能的集成。也就是说,同样的功能,标准库可能要用几句话,HAL库只需用一句话就够了。并且HAL库也很好的解决了程序移植的问题,不同型号的stm32芯片它的标准库是不一样的,例如在F4上开发的程序移植到F3上是不能通用的,而使用HAL库,只要使用的是相通的外设,程序基本可以完全复制粘贴。

HAL库是ST公司提供的新标准库,包含在ST为新的标准库注册了一个新商标:STMCube当中。可以说HAL库就是用来取代之前的标准外设库的。相比标准外设库,STM32Cube HAL库表现出更高的抽象整合水平,HAL API集中关注各外设的公共函数功能,这样便于定义一套通用的用户友好的API函数接口,从而可以轻松实现从一个STM32产品移植到另一个不同的STM32系列产品

四、试玩MCU集成开发平台

Stduino IDE是一款面向32位处理器快速入门学习的集成开发平台,已率先支持Arduino_Core_STM32框架,集聚快捷、高效、免费、开源、易得于一身,软件还集成了GDB调试功能!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值