Ardunio和HAL库函数编程


一、Ardunio在STM32的串口通信

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

安装包链接:

https://pan.baidu.com/share/init?surl=kqpP1YGKtY2WRz9GNT0Z7w
提取码:q251

在这里插入图片描述

需注意将解压包文件中的Arduino_STM32文件夹复制到安装路径的hardware文件夹内
在这里插入图片描述
安装配置好后打开arduino,选择工具-开发板-开发板管理器
在这里插入图片描述
搜索ARM,选择第一个ARM Cortex-M3
在这里插入图片描述
在这里插入图片描述
将工具内的选项设置如下
在这里插入图片描述
代码如下:

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); // 延迟
}
}



将开发板与主机连接(USB转串口),跳帽将BOOT0与3v3相连,BOOT1与GND相连,RXD与A9相连,
TXD与A10相连。
选择端口COM3
在这里插入图片描述
依次点击验证,上传
在这里插入图片描述
选择工具-串口监视器

在这里插入图片描述
输入stop后,串口向主机发送的信息停止
在这里插入图片描述
在这里插入图片描述

二、HAL库函数

以实例程序(比如串口通信),分析基于标准库函数与基于HAL库函数的stm32编程方式的差异。

1.标准库中,STM32有非常多的寄存器,而导致了开发困难,所以为此ST公司就为每款芯片都编写了一份库文件,也就是工程文件里stm32F1xx…之类的。在这些 .c .h文件中,包括一些常用量的宏定义,把一些外设也通过结构体变量封装起来,如GPIO口时钟等。所以我们只需要配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能。
2.HAL库是用来取代之前的标准外设库的。相比标准外设库,STM32Cube HAL库表现出更高的抽象整合水平,HAL API集中关注各外设的公共函数功能,这样便于定义一套通用的用户友好的API函数接口,从而可以轻松实现从一个STM32产品移植到另一个不同的STM32系列产品。而且HAL库不光实现了寄存器的集成,还实现了一些特定功能的集成,也就是说标准外设库有时需要用几行代码完成的,HAL库一行代码就可以完成。

三、stduino IDE

在Stduino IDE软件方面,当前基于Arduino_Core_STM32封装库已经完成了对ST众多系列芯片芯片的支持,兼具Arduino语法函数所有特点,另外软件还集成了GDB调试功能,及实现了代码自动补全提示,中英文模式,UTF-8\GBK编码格式,一键格式化,一键Stlink\串口下载方式等相关功能,极大地降低了ST系列芯片的入门学习及后续开发成本。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值