Arduino下的STM32的串口通信
日期: 2020-12-13 分类: 跨站数据测试 674次阅读
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极易掌握,同时有着足够的灵活性。不需要太多的单片机基础、编程基础,简单学习后,可以快速的进行开发,自带程序烧录,自带串口调试,软件界面简洁。就是在下载开发板配置的时候。比较慢,多耐心等一等。
参考文献
标签:stm32
上一篇: 素数求解的C语言方法
下一篇: 1.go环境安装,IDE配置以及依赖管理
精华推荐