Ardunio和HAL库函数编程
发布日期:2021-11-03 09:33:21 浏览次数:1 分类:技术文章

本文共 1923 字,大约阅读时间需要 6 分钟。

Ardunio和HAL库函数编程

一、Arduino IDE软件下载安装

1、 提取码q251(来源网络)

在这里插入图片描述
2、把解压后的Arduino_STM32文件夹拷贝到Arduino\hardware下

3、安装编译支持文件(工具-开发板-开发板管理器-ARM)

在这里插入图片描述
4.安装STM32固件烧录软件,双击打包文件中的flash_loader_demo_v2.8.0.exe安装,这是ST官方烧录软件。在这里插入图片描述
在这里插入图片描述
5.连接串口
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

点next,添加generic_boot20_pc13.bin,安装完成。
在这里插入图片描述

二、Ardunio 完成STM32的串口通信

1、任务要求

1)持续向串口输出“Hello world!”;

2)当接收到“stop!”时,停止输出。

2、打开Arduino(进行如下设置)

点开工具
在这里插入图片描述

3、程序代码:

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_s1==1) //如果与开始命令相等 {
flag=1; //发送标志位置为1 Serial.println("开始发送"); flag_s1=0; //初始化判断,防止没有发送数据时一直执行 } if (flag==1) //判断发送标志位是否为1 {
Serial.println("Hello World!"); delay(1000); } }

4.依次点击编译 上传

在这里插入图片描述

5、打开工具 串口监视器

在这里插入图片描述

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

(1)HAL库的出现比标准库要晚,但其实和标准库一样,都是为了节省程序开发的时期,而且HAL库尤其的有效,如果说标准库把实现功能需要配置的寄存器集成了,那么HAL库的一些函数甚至可以做到某些特定功能的集成。也就是说,同样的功能,标准库可能要用几句话,HAL库只需用一句话就够了。

(2)HAL库也很好的解决了程序移植的问题,不同型号的stm32芯片它的标准库是不一样的,例如在F4上开发的程序移植到F3上是不能通用的,而使用HAL库,只要使用的是相通的外设,程序基本可以完全复制粘贴,注意是相通外设,意思也就是不能无中生有,例如F7比F3要多几个定时器,不能明明没有这个定时器却非要配置,但其实这种情况不多,绝大多数都可以直接复制粘贴。

转载地址:https://blog.csdn.net/weixin_51118019/article/details/111174924 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:基于I2C的温湿度采集
下一篇:STM32串口通讯

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年03月01日 14时06分06秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

的流程图做完后如何保存_2019超火的半永久眉是哪款?做完后我们如何护理?... 2019-04-21
去除logo 高德地图api_深圳品牌logo升级如何保持原型的同时更具创新? 2019-04-21
二重积分转换成极坐标_二重积分转换极坐标r的范围如何确定? 2019-04-21
python中倒背如流_八字基础知识--倒背如流篇 2019-04-21
以太坊地址和公钥_以太坊地址是什么 2019-04-21
千层浪软件下载_千层浪app聚合 2019-04-21
linux查看wifi信号命令_linux – 获取WIFI信号强度 – 寻求最佳方式(IOCTL,iwlist(iw)等)... 2019-04-21
npm 不重启 全局安装后_解决修复npm安装全局模块权限的问题 2019-04-21
vs格式化json 不生效_vs code 格式化 json 配置 2019-04-21
go 字符串反序列化成对象数组_Fastjson 1.2.24反序列化漏洞深度分析 2019-04-21
onmessage websocket 收不到信息_WebSocket断开重连解决方案,心跳重连实践 2019-04-21
centos命令行安装mysql_CentOS7.6安装MYSQL8.0的步骤详解 2019-04-21
hibernate mysql 缓存_hibernate和mysql的缓存问题,没辙了! 2019-04-21
abp框架 mysql_ABP框架使用Mysql数据库 2019-04-21
mysql树形递归删除_使用递归删除树形结构的所有子节点(java和mysql实现) 2019-04-21
linux mysql 不能连接远程_linux mysql 远程连接 2019-04-21
mysql $lt_mongodb中比较级查询条件:($lt $lte $gt $gte)(大于、小于)、查找条件... 2019-04-21
install python_Install python on AIX 7 2019-04-21
jquery查找div下第一个input_jquery查找div元素第一个元素id 2019-04-21
如何修改手机屏幕显示的长宽比例_屏幕分辨率 尺寸 比例 长宽 如何计算 2019-04-21