嵌入式作业(七):Ardunio 完成STM32板子的串口通信程序

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

1、Arduino的安装

下载地址: stm32arduino.
提取码:q251
解压后选择下图所示文件进行安装,注意安装路径不要出现英文。
在这里插入图片描述

2、配置Arduino IED

2.1、将解压文件中的Arduino_STM32整个文件夹拷贝到Arduino安装目录下的hareware文件中。
在这里插入图片描述
2.2、选择 工具 > 开发板 > 开发板管理器,打开如下界面选择 Arduino SAM Boards(32-bit ARM Cortex-M3) 进行安装。
在这里插入图片描述
网络不好的请使用离线方式安装:

1)下载链接: Arduino_SAM_Boards离线安装包.
2)解压至C:\Users\Administrator\AppData\Local\Arduino15\staging\packages路径文件夹下;
3)然后再次进入开发板管理器选择安装(即可跳过下载过程直接安装)。

2.3、安装完成后,在菜单栏>工具>开发板选择芯片类型,我使用的是stm32f103指南者,所以选择Generic STM32F103V series。
在这里插入图片描述
2.4、其他几个配置类型选择如下图(仅供参考):
在这里插入图片描述

3、连接stm32f103指南者开发板

3.1、直接用usb线把开发板的"usb转串口"这个接口与电脑相连即可。

注意:用跳帽将BOOT0与3v3相连,BOOT1与GND相连,RXD与A9相连,
TXD与A10相连。

在这里插入图片描述

4、烧录程序(stm32f103指南者)

以下代码完成的功能:
1)持续向串口输出“Hello world!”;
2)当接收到“stop”时,停止输出。
3) 小灯闪烁。

代码如下:

int flag=1;   
char Stop[]="stop\n";
void setup() {
//初始化
pinMode(PB0, OUTPUT);//PB0为绿色,PB1为蓝色,PB5为红色,可根据需要改动
Serial.begin(115200);
}
void loop() {
int i=0,flag_s=0;
char inByte[50];
digitalWrite(PB0, HIGH); //小灯亮
delay(500); // 延迟
digitalWrite(PB0, LOW); //小灯灭
delay(500); // 延迟
while (Serial.available()> 0)     //当发送缓冲区有数据时
{
        inByte[i] = Serial.read();    //从串口的缓冲区取出并读取一个Byte的数据
        delay(10); 
        i++ ;                              
}
if(Stop[i]=inByte[i])
{
  if(Stop[i-1]==inByte[i-1]&&Stop[i-2]==inByte[i-2]&&Stop[i-3]==inByte[i-3])
  {
  flag=0;
  Serial.println("收到!");
  }//当收到stop命令时停止并回复收到
}
if(flag==1)
{  
Serial.println("Hello World!");//向串口发送数据
delay(100); // 延迟
}
}

4.1、打开Arduino,点击左上角文件新建一个窗口,然后输入上述代码,选择对应串口。在这里插入图片描述
4.2、因为前面配置已经完成了,所以这里直接点击验证,验证完成后,按一下开发板上的RESET按钮,再点击上传。
在这里插入图片描述
在这里插入图片描述
4.3、此时小灯开始闪烁,串口收到的信息点击串口监视器及可以看到,注意波特率要选择11520,否则会出现乱码,当发送stop时,停止输出。
在这里插入图片描述

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

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

三、总结

比起之前使用的的Keil 5实现串口通信,基于Arduino IDE软件的STM32串口通信更为方便,程序也更加简洁。很有趣,下次继续努力。

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别为难胖虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值