一、基于Ardunio的STM32串口通信

1、要求

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

2、安装Arduino

借鉴下篇博客:

https://blog.csdn.net/quansirx/article/details/104906563

注意安装完成后要将stm32固件库放入安装目录的hardware文件夹下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xNJFwHH1-1608466911317)(E:\大三学习\嵌入式系统开发\第七次作业\image\1.1.png)]

3、配置开发环境
  • 工具–>开发板–>开发版管理器

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aRfXDAh6-1608466911320)(E:\大三学习\嵌入式系统开发\第七次作业\image\1.2.png)]

  • 安装Arduino SAM开发板

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nSxhDoeA-1608466911322)(E:\大三学习\嵌入式系统开发\第七次作业\image\1.3.png)]

  • 选择硬件类型与下载方式

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-92LrjIfu-1608466911326)(E:\大三学习\嵌入式系统开发\第七次作业\image\1.4.png)]

4、stm32串口通信
  • 端口连接

    我使用的是野火mini开发板,直接用usb转串口相连即可。

  • 选择端口

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-15JitBnz-1608466911330)(E:\大三学习\嵌入式系统开发\第七次作业\image\1.5)]

  • 打开例程

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fXShEAkP-1608466911330)(E:\大三学习\嵌入式系统开发\第七次作业\image\1.6.png)]

  • 写改代码

    代码如下:

    String rString = "";        // 接收到达字符串
    int flag=1;                  //发送或接收标志
    String Stop_flag = "stop"; //停止发送
    String Begin_flag = "begin"; //重新发送
    
    void setup() 
    {
    	Serial.begin(115200); // 串口初始化
    }
    
    void loop() 
    {
        while(Serial1.available() > 0)    //接收缓存区有数据
        {
            rString = Serial1.readString();  //将接收数据存到接收字符串里    
        }
        if (rString == Stop_flag)
        {
           flag = 0; //表明停止发送
        }
        if (rString == Begin_flag)
           flag = 1; //表明恢复发送
        if (flag == 1)
        {
            Serial.println("Hello World");
            delay(1000);
        }
        
    }
    
  • 编译后下载

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hU33BxP6-1608466911331)(E:\大三学习\嵌入式系统开发\第七次作业\image\1.7.png)]

  • 打开串口进行验证

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dp7UM4JS-1608466911332)(E:\大三学习\嵌入式系统开发\第七次作业\image\1.8.gif)]

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

1.标准库

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

2.HEL库

HAL库是用来取代之前的标准外设库的。相比标准外设库,STM32Cube HAL库表现出更高的抽象整合水平,HAL API集中关注各外设的公共函数功能,这样便于定义一套通用的用户友好的API函数接口,从而可以轻松实现从一个STM32产品移植到另一个不同的STM32系列产品。而且HAL库不光实现了寄存器的集成,还实现了一些特定功能的集成,也就是说标准外设库有时需要用几行代码完成的,HAL库一行代码就可以完成。

三、关于 stduino IDE

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

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OYOVcT2L-1608466911332)(E:\大三学习\嵌入式系统开发\第七次作业\image\1.8.png)]

  • 软件界面如下图

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ksUjKh1o-1608466911333)(E:\大三学习\嵌入式系统开发\第七次作业\image\1.9.png)]

我认为虽然已经有了Keil、Ardunio优秀的集成开发平台,但我认为仍有必要继续研发,因为随着各方面的进步,以前的软件不能满足我们的需求,仍有发展的必要。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐