Young87

SmartCat's Blog

So happy to code my life!

游戏开发交流QQ群号60398951

当前位置:首页 >跨站数据测试

Arduino下的STM32的串口通信

一、任务要求

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

二、Arduino的安装和配置

1、安装Ardunio

链接: 安装包.提取码:q251

注:安装的时候,一直默认安装就可以了,安装的路径不能有中文。

2、配置Arduino

1、将安装包里的Arduino_STM32整个文件夹拷贝到Arduino安装目录下的hareware下。
2、打开Arduino,点击菜单栏\工具\开发板…\第一栏的开发板管理器
3、选中Cortex-M3系列的编译支持文件并安装

注:安装时间比较长,请耐心等待。

4、安装完成后,在菜单栏\工具\开发板选择芯片类型,由于我使用的是stm32f103指南者,所以选择为Generic STM32F103V series。
在这里插入图片描述
5、按照下列图片所示,修改。
在这里插入图片描述

三、程序

1、连接stm32的开发板

直接用usb线把开发板与电脑相连即可。然后用跳帽将BOOT0与3v3相连,BOOT1与GND相连,RXD与A9相连,TXD与A10相连。

注:usb线连接的开发板的"usb转串口"这个接口。

在这里插入图片描述

2、编辑代码

int flag=1;   
char Stop[]="stop\n";     //停止命令
char Start[]="begin\n";   //开始命令

void setup() 
{
    Serial.begin(115200); //串口初始化  
}

void loop() 
{
    int i=0,flag_s=0,flag_s1=0;
    char inByte[50];
    while (Serial.available()> 0)     //当发送缓冲区有数据时
    {
        inByte[i] = Serial.read();    //从串口的缓冲区取出并读取一个Byte的数据
        delay(10);                   
        
        if(Stop[i]!=inByte[i])       //判断发送数据是否与停止命令相等
             flag_s=0;
        else flag_s=1;
        
        if(Start[i]!=inByte[i])      //判断发送数据是否与开始命令相等
             flag_s1=0; 
        else flag_s1=1;
        
        i++;
    }
     
    if(flag_s==1)                       //如果与停止命令相等
      {
           flag=0;                      //发送标志位置为0
           Serial.println("收到!已停止发送");
           flag_s=0;                   //初始化判断,防止没有发送数据时一直执行
      }

    
      if (flag==1)                      //判断发送标志位是否为1
    {
        Serial.println("Hello World!");  
        delay(1000);
    }
    
}

3、烧录程序

1、选择连接的串口
在这里插入图片描述

2、依次点击验证,烧录

注:每一次在烧录文件之前,要按开发板上的RESET,否则可能会出现问题。
在这里插入图片描述

3、打开串口监视器(此时小灯开始闪烁)

注:波特率记得改成115200。
在这里插入图片描述

在这里插入图片描述

4、运行结果

在这里插入图片描述

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

1、标准库是对STM32芯片的一个完整的封装,包括所有标准器件外设的器件驱动器,可以让我们写代码时更简洁。
2、HAL库是只要使用的是相通的外设,程序基本可以完全复制粘贴。注意是相通外设,意思也就是不能无中生有,例如F7比F3要多几个定时器,不能明明没有这个定时器却非要配置,但其实这种情况不多,绝大多数都可以直接复制粘贴。

注:也就是说标准外设库有时需要用几行代码完成的,HAL库一行代码就可以完成。

五、stduino IDE的使用体会

1、Stduino IDE是一款面向32位处理器快速入门学习的集成开发平台,目前已经支持Arduino_Core_STM32框架,集聚快捷、高效、免费、开源、易得于一身,软件还集成了GDB调试功能。
支持自定义编辑背景;代码高亮;代码自动提示补全;—键USB\Stlink下载;支持串口调试
2、stduino的操作界面简洁干净,操作便捷,程序编写简单,不需要太多的单片机基础和编程基础,自带程序烧录,自带串口调试。

六、总结

Ardunio极易掌握,同时有着足够的灵活性。不需要太多的单片机基础、编程基础,简单学习后,可以快速的进行开发,自带程序烧录,自带串口调试,软件界面简洁。就是在下载开发板配置的时候。比较慢,多耐心等一等。

参考文献

链接:

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: 素数求解的C语言方法

下一篇: 1.go环境安装,IDE配置以及依赖管理

精华推荐