Ardunio和HAL库函数编程

一、Ardunio 完成STM32串口通信程序

1、安装Ardunio IDE

链接: Ardunio IDE安装包.
提取码:q251
下载完成后对文件进行解压,进行安装,默认安装即可
注意下载路径不要出现中文在这里插入图片描述

2、配置Ardunio IDE

将打包文件中的Arduino_STM32整个文件夹拷贝到Arduino安装目录下的hareware下。
在这里插入图片描述
在这里插入图片描述
然后打开Arduino,在菜单栏中选择工具,点击开发板,再选中第一栏的开发板管理器。
在搜索框中输入ARM关键信息,选中Cortex-M3系列的编译支持文件并安装
在这里插入图片描述
安装完成后,在菜单栏\工具\开发板选择芯片类型,由于我使用的是stm32f103指南者,所以选择为Generic STM32F103V series。加上Variant,Upload method,CPU Speed,Optimize这几个的选择如下:
在这里插入图片描述

二、使用Ardunio进行串口通信

1、实验要求

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

2、连接stm32f103指南者开发板

在STM32指南者开发板中,跳帽起到连接的作用根据实验需求,用跳帽将BOOT0与3v3相连,BOOT1与GND相连,RXD与A9相连,
TXD与A10相连。注意:usb线连接的开发板的"usb转串口"这个接口。
在这里插入图片描述

3、代码设计

int flag=1;               //发送标志位
char Stop[]="stop!";     //停止命令
char Begin[]="begin!";   //开始命令

void setup() 
{
    pinMode(PB0, OUTPUT);//PB0为绿色,PB1为蓝色,PB5为红色,可根据需要改动
    Serial.begin(115200); //串口初始化  
}

void loop() 
{
    int i=0,s=0,b=0;
    char accepted[50];
    digitalWrite(PB0, HIGH); //小灯亮
    delay(500); // 延迟
    digitalWrite(PB0, LOW); //小灯灭
    delay(500); // 延迟
    while (Serial.available()> 0)     //当发送缓冲区有数据时
    {
        accepted[i] = Serial.read();    //从串口的缓冲区取出并读取一个Byte的数据
        delay(10);                   
        
        if(Stop[i]==accepted[i])       //判断发送数据是否与停止命令相等
            s+=1;
        
        if(Begin[i]==accepted[i])      //判断发送数据是否与开始命令相等
            b+=1;
        
        i++;
    }
     
    if(s==5)                       //如果与停止命令相等
      {
           flag=0;                      //发送标志位置为0
           Serial.println("已停止发送\n");
           s=0;                   //初始化判断,防止没有发送数据时一直执行
      }

     if(b==6)                    //如果与开始命令相等
      { 
           flag=1;                     //发送标志位置为1
           Serial.println("开始发送\n");
           b=0;                  //初始化判断,防止没有发送数据时一直执行
      }
    
      if (flag==1)                      //判断发送标志位是否为1
    {
        Serial.println("Hello World!");  
        delay(1000);
    }
    
}

在工具选项中,选择端口“COM3”。
在这里插入图片描述
将程序进行编译与烧录,依次点击
在这里插入图片描述
然后在工具栏中,选择串口监视器,或快捷键ctrl+shift+M。
在这里插入图片描述
注意波特率的设置,115200
在这里插入图片描述

4、实验效果

在这里插入图片描述
在这里插入图片描述

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

标准外设库(Standard Peripherals Library)是对STM32芯片的一个完整的封装,包括所有标准器件外设的器件驱动器,可以让我们写代码时更简洁。这应该是目前使用最多的ST库,几乎全部使用C语言实现。但是,标准外设库也是针对某一系列芯片而言的,没有可移植性。
HAL库是用来取代之前的标准外设库的。相比标准外设库,STM32Cube HAL库表现出更高的抽象整合水平,HAL API集中关注各外设的公共函数功能,这样便于定义一套通用的用户友好的API函数接口,从而可以轻松实现从一个STM32产品移植到另一个不同的STM32系列产品。而且HAL库不光实现了寄存器的集成,还实现了一些特定功能的集成,也就是说标准外设库有时需要用几行代码完成的,HAL库一行代码就可以完成。

四、已经有了Keil、Ardunio,觉得是否还有必要“再造车轮”?

在Stduino IDE软件方面,当前基于Arduino_Core_STM32封装库已经完成了对ST众多系列芯片芯片的支持,兼具Arduino语法函数所有特点,另外软件还集成了GDB调试功能,及实现了代码自动补全提示,中英文模式,UTF-8\GBK编码格式,一键格式化,一键Stlink\串口下载方式等相关功能,极大地降低了ST系列芯片的入门学习及后续开发成本。另外将要开发的更多外设扩展库会继续采用开源共享的理念进行分发,一处分享全球共用,极大保障后续软件维护的动力支撑。此外Stduino IDE也是开元的这对我们增强对它的了解有更方便的捷径。

Stduino IDE的相关知识.

总结

经过本次作业的学习,我体会到了学习串口通信有多种操作与应用和各软件之间的大体差异,但此基础要建立在有一定代码基础的功底下,并且如果想要进行操作,要懂其原理与进行相关知识的学习。希望可以经过大量的操作练习可以熟练的掌握。对嵌入式有自己的理解。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值