[STM32教程]01如何开始准备hal库的开发环境

news2025/2/22 16:19:06

文章目录

  • 概述
  • 1、认识硬件环境
    • 1.1 ARM简介
    • 1.2 STM32简介
  • 2. 软件开发环境准备
    • 2.1 Keil MDK安装
    • 2.2 安装STM32Cube MX
    • 2.3 安装STM32 HAL库
    • 2.4 St-Link V2使用
  • 总结


概述

本文介绍如何准备stm32f103的hal库工程开发环境,包括cubemx安装、keil mdk安装、stm32 hal库安装、hal库的点灯程序的实现等。


1、认识硬件环境

1.1 ARM简介

·ARM既指ARM公司,也指ARM处理器内核。
·ARM公司是全球领先的半导体知识产权(IP)提供商,全世界超过95%的智能手机和平板电脑都采用ARM架构。
·ARM公司设计ARM内核,半导体厂商完善内核周边电路并生产芯片。

1.2 STM32简介

·STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器。
·STM32常应用在嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等。
·STM32功能强大、性能优异、片上资源丰富、功耗低,是一款经典的嵌入式微控制器。

2. 软件开发环境准备

基于HAL库的开发需要在Keil MDK与STM32Cube MX上进行。
在这里插入图片描述

2.1 Keil MDK安装

第一步:下载Keil MDK。
打开Keil MDK官方网站(https://www2.keil.com/mdk5)根据网站上的指引下载MDK安装的exe文件,在正式下载之前需要根据网站提示注册用户并填写必要的信息。
第二步:安装Keil MDK 5。
以管理员身份运行上一步下载的MDK安装程序,勾选同意用户协议(如下图)。
在这里插入图片描述
然后,选择Keil5的安装路径并填写用户信息,如接下来的两张图。
在这里插入图片描述
在这里插入图片描述
随后进入Keil5安装进度条显示界面,等待安装完成点击“Finish”按钮,此后会自动弹出在线安装支持包的界面(如图115),因为我们会后续手动配置,所以直接关闭即可。

2.2 安装STM32Cube MX

安装STM32CubeMX必须具备的条件
(1)JRE(Java Runtime Environment):JAVA运行环境。
(2)STM32CubeMX软件:生成初始化代码的地方。
(3)HAL库 PACK包:F0、F1、F3、H7等Cortex内核,都需要对应的PACK包安装。
第一步:安装JAVA JRE
64位JRE官网下载链接: (https://www.java.com/en/download/manual.jsp)
(1)勾选“更改目标文件夹”,点击“安装”。
在这里插入图片描述
(2)点击“更改(C)…”修改目标路径地址(也可以不用修改)。
在这里插入图片描述
(3)等待安装完成(20s左右的时间),关闭界面。
在这里插入图片描述
第二步:安装STM32CubeMX
(1)官网下载安装包:www.st.com/stm32cubemx,选择“Get Software”。
在这里插入图片描述
(2)选择对应的STM32CubeMX版本信息,本用例使用STM32CubeMX-5.3.0版本实测。
备注:不想在官网下可以在百度云盘下载如下提供STM32CubeMX(V6.1.1)云盘下载地址:
百度网盘链接: https://pan.baidu.com/s/1hsIibEmsB91xFclJd-YTYA?pwd=jauj
提取码:jauj
(3)打开STM32CubeMX-5.3.0安装包,点击“Next”。
在这里插入图片描述
(4)同意协议“I accept the terms of this license agreement.”,点击“Next”。
在这里插入图片描述
(5) 勾选第一个即可,第二个选项是是否同意ST公司收集你的个人使用信息等。
在这里插入图片描述(6)选择要安装的目录,点击“Next”。
在这里插入图片描述
(7)弹窗 Warning,点Yes即可。
备注:这句话意思是安装本软件可能会与文件夹之前文件冲突,导致文件夹之前文件丢失是否继续 点Yes继续即可。
在这里插入图片描述
(8) 默认设置,点击“Next”即可。
在这里插入图片描述

(9)等待安装完成,点击“Next”。
在这里插入图片描述

(10)安装完成后,点击Done,即可完成安装。
在这里插入图片描述

2.3 安装STM32 HAL库

STM32 HAL固件库是Hardware Abstraction Layer的缩写,中文名称是:硬件抽象层。HAL库是ST公司为STM32的MCU最新推出的抽象层嵌入式软件,为更方便的实现跨STM32产品的最大可移植性。HAL库的推出,可以说ST也慢慢的抛弃了原来的标准固件库,这也使得很多老用户不满。但是HAL库推出的同时,也加入了很多第三方的中间件,有RTOS,USB,TCP / IP和图形等等。

和标准库对比起来,STM32的HAL库更加的抽象,ST最终的目的是要实现在STM32系列MCU之间无缝移植,甚至在其他MCU也能实现快速移植。

并且从2016年开始,ST公司就逐渐停止了对标准固件库的更新,转而倾向于HAL固件库和 Low-layer底层库的更新,停止标准库更新,也就表示了以后使用STM32CubeMX配置HAL/LL库是主流配置环境.

HAL库,有在线安装、离线安装两种方式。这里实测在线安装方式(离线安装方式请自行lookup)。

(1)打开STM32CubeMX 软件,点击右上角“Help”,选择“Manage embedded saftware packages”
在这里插入图片描述
(2)如下所示的选择型界面,勾选所需的HAL库,本教程开发的STM32F103C8t开发板作为演示,选择的则为STM32F1 —>STM32Cube MCU Package for STM32F1 Series 1.8.5版本。
在这里插入图片描述

(3)安装完毕后,点击右下角的Close即可。

2.4 St-Link V2使用

使用St-Link V2之前需要安装驱动,不然电脑无法操作单片机。驱动安装方法参考文章:http://t.csdn.cn/HnLK8
安装好驱动后需要用杜邦线按照以下规定来连接。
st-link与stm32板相连,需要遵照:

  1. SWDIO与TMS引脚相连
  2. GND与GND脚相连
  3. SWCLK与TCK引脚相连
  4. 3.3V VCC与板子上的3.3V引脚相连在这里插入图片描述

总结

以上就是构建STM32 HAL库开发环境的步骤,下一篇文章将介绍如何使用刚刚构建的环境新建一个模板工程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/764392.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小程序引入阿里云矢量图库图标

简介 阿里云矢量图库(Aliyun Vector Icon Library)是阿里云提供的一个图标库,为开发者和设计师提供了丰富的矢量图标资源,用于在网页、移动应用和其他设计项目中使用。 使用阿里云矢量图库,你可以快速搜索、选择和下…

如何设置反馈点

如何设置反馈点 前面的POWER DC仿真都是忽略反馈线进行的仿真,如果单板压降不过,电源会自动调整输出电压,来满足负载的得到额定的电压. 仿真上也可以自己添加反馈点,以得到抬高后的电源输出电压值 具体操作如下 同样以下图的CPU的Core电源为例 按照流程正常设置好参数

携程ANR 优化实践 - Binder开辟线程数过多导致主线程ANR异常

了解携程ANR前,我们一起了解 binder 线程池的前生今世 在android系统中,通过binder进行IPC时,服务端总是会起一些Binder线程来响应客户端的请求。这里面就涉及到通过BInder线程池 开辟binder线程 那这些Binder线程又是如何创建,如…

已解决YOLOv5训练报错:RuntimeError: Expected all tensors to be on the same device......

这是发生在集成一个yolov5中没有的检测头head的情况下发生的错误,出现的时候是已经训练起来了,在训练结束时发生的报错,下面是我的解决办法。 1、问题出现及分析排查 改yolov5的网络进行训练时出的报错: RuntimeError: Expected all tenso…

步进电机控制

步进电机控制 #include "./stepper/bsp_stepper_init.h" #include "./delay/core_delay.h" #include "stm32f4xx.h"void TIM_SetTIMxCompare(TIM_TypeDef *TIMx,uint32_t channel,uint32_t compare); void TIM_SetPWM_period(TIM_TypeDef* TI…

Python爬虫学习笔记(五)————JsonPath解析

目录 1.JSONPath —— xpath在json的应用 2.JSONPath 表达式 3.jsonpath的安装及使用方式 4.jsonpath的使用 5.JSONPath语法元素和对应XPath元素的对比 6.实例 (1)商店案例 (2) 解析淘票票的“城市选择”数据 1.JSONPath…

Java8实战-总结3

Java8实战-总结3 基础知识流多线程并非易事 默认方法 基础知识 流 几乎每个Java应用都会制造和处理集合。但集合用起来并不总是那么理想。比方说,从一个列表中筛选金额较高的交易,然后按货币分组。需要写一大堆套路化的代码来实现这个数据处理命令&…

cocos creator Richtext点击事件

组件如图 添加ts自定义脚本,定义onClickFunc点击方法: import { Component, _decorator} from "cc";const { ccclass } _decorator; ccclass(RichTextComponent) export class RichTextComponent extends Component{public onClickFunc(even…

reggie优化02-SpringCache

1、SpringCache介绍 2、SpringCache常用注解 package com.itheima.controller;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.itheima.entity.User; import com.itheima.service.UserService; import lombok.extern.slf4j.Slf4j; imp…

Mybatis:传参+提交事务(自动or手动)+sql多表关联查询(两种方法)

目录 一、参数两种类型: 二、传参的几种方法: 三、提交事务 四、sql多表关联查询(两种方法) 一、参数两种类型: 1.#{参数}:预编译方式,更安全,只用于向sql中传值; select * from admin w…

getattr, __getattr__, __getattribute__和__get__区别

一、getattr() 和另外三个方法都是魔法函数不同的是,getattr()是python内置的一个函数,它可以用来获取对象的属性和方法。例子如下: class A():a 5def __init__(self, x):self.x xdef hello(self):return hello funca A(10)print(getattr(a, x)) #…

2023 双非本科三个月互联网找实习心路历程

双非本科三个月互联网找实习心路历程 1、实习面试准备2、面试日历(1)开发投递(2)线下宣讲(3)转投测试,机会多多 3、同窗现状4、货拉拉 offer 的故事5、我的闲言6、我的收获(1)勇气&a…

2.5 线性表的建表

1. 顺序表建表 #include <iostream>/// <summary> /// 数组最大长度 /// </summary> const int MAX_SIZE 10;/// <summary> /// 顺序表建表 /// </summary> /// <param name"arr">数组</param> /// <param name"…

万达商管IPO:看似轻舟已过万重山,实则负重前行?

近日&#xff0c;继万达商管债券发行计划被终止、证监会质疑万达商场销售数据真实性、珠海万达商管的股权被法院冻结后又解冻&#xff0c;万达商管又遇“水逆”——惠誉发布报告下调万达商管的评级&#xff0c;并认为珠海万达商管可能无法在2023年底前完成上市。 纷至沓来的负…

什么是链路跟踪 Skywarking

什么是链路跟踪 Skywarking 链路跟踪&#xff08;Link Tracing&#xff09;是一种用于追踪分布式系统中请求路径和性能的技术。SkyWalking 是一个开源的 APM&#xff08;Application Performance Monitoring&#xff09;系统&#xff0c;它提供了链路跟踪功能。 SkyWalking 的…

ceph----应用

文章目录 一、创建 CephFS 文件系统 MDS 接口1.1 服务端操作1.2 客户端操作 二、创建 Ceph 块存储系统 RBD 接口三、OSD 故障模拟与恢复 一、创建 CephFS 文件系统 MDS 接口 1.1 服务端操作 1&#xff09;在管理节点创建 mds 服务 cd /etc/ceph ceph-deploy mds create node0…

Java编程-基本排序算法

冒泡排序 图解 &#xff08;注&#xff1a;图片来源网络&#xff09; Java代码 package suanfa_Ja;import org.apache.hadoop.security.SaslOutputStream;// 基本排序算法&#xff0c;冒泡排序 时间复杂度 O(n^2) 空间复杂度O(1) public class BubbleSort {public static v…

blender 建模马拉松

效果展示 蘑菇模型创建&#xff1a; 创建蘑菇头 shift A &#xff0c;创建立方体&#xff1b; 右下工具栏添加细分修改器&#xff08;视图层级&#xff1a;2&#xff0c;渲染&#xff1a;2&#xff09;&#xff1b;tab键进入编辑模式&#xff0c;alt z 进入透显模式&…

Python项目依赖项管理的秘诀:requirements.txt文件

一、背景 公司里面很多时候我们开发的Python项目都不只是我们一个人使用&#xff0c;而是整体团队使用。Python项目需要在别人的电脑环境中运行&#xff0c;则需要别人的电脑环境中也要安装上我们项目需要的python库。那么项目中到底用到了哪些Python库&#xff0c;每个库具体…

12.matlab数据分析——多项式的建立 (matlab程序)

1.简述 多项式及其建立 在运算中我们经常接触到的就是所谓的多项式&#xff0c;比如很常见的一个多项式&#xff1a; 这里我们就说这是一个x的多项式&#xff0c;最高次是2次&#xff0c;常数项是3&#xff0c;二次项的系数是1&#xff0c;一次项的系数是2&#xff0c;相信这些…