STM32固件库简介与使用指南
1. STM32官方标准固件库简介
STM32官方标准固件库是由STMicroelectronics(ST)提供的一套软件开发工具,旨在简化STM32微控制器的软件开发过程。该固件库提供了丰富的功能和模块,涵盖了STM32微控制器的各种外设,包括但不限于GPIO、USART、SPI、I2C、定时器、中断控制器等。
主要特点:
-
丰富的外设支持: 官方固件库涵盖了STM32微控制器的各种外设,为开发者提供了便捷的接口和函数来控制和配置这些外设。
-
封装了底层寄存器操作: 固件库将底层寄存器的操作封装在函数内部,开发者无需直接访问底层寄存器,而是通过调用库中提供的函数来实现相应功能。
-
易于学习和使用: 固件库提供了清晰的API文档和示例代码,使得开发者能够轻松理解和使用库中的函数,加快软件开发的速度。
-
与CMSIS标准兼容: STM32官方标准固件库符合CMSIS(Cortex Microcontroller Software Interface Standard)标准,确保了不同厂家生产的Cortex-M系列微控制器在软件上的兼容性。
2. 库开发与寄存器开发的关系
许多用户从学习51单片机开发转向STM32开发时,常常感到困惑。他们习惯了直接操作寄存器的方式,而突然面对ST官方库时可能会一头雾水。
库开发与寄存器开发之间的区别主要体现在编程方法和代码复杂性上:
-
寄存器开发:
- 寄存器开发是直接操作芯片内部寄存器来配置和控制外设的工作模式和功能。
- 在寄存器开发中,程序员需要了解每个寄存器的作用、位域的含义以及相应的配置方法。
- 编写的代码是直接对硬件进行操作,因此具有更高的灵活性,但也更加复杂和繁琐。
- 寄存器开发需要程序员对硬件架构和寄存器的细节有较深的理解。
-
库开发:
- 库开发是将对硬件的操作封装成函数或接口,提供给用户调用,使得用户可以通过调用函数来完成对硬件的控制。
- 在库开发中,程序员不需要直接操作硬件寄存器,而是通过调用库函数来实现对外设的配置和控制。
- 库开发隐藏了底层寄存器的细节,使得编程更加简洁和方便,降低了程序员的学习和开发成本。
- 库开发通常提供了更高层次的抽象,使得用户可以更容易地理解和使用外设的功能。
总的来说,寄存器开发更加底层和灵活,适合对硬件有深入了解的开发者;而库开发则更加高级和方便,适合快速开发和应用程序的开发者。选择哪种开发方法取决于项目的需求、开发者的技术水平以及开发周期等因素。
3. STM32固件库与CMSIS标准
CMSIS(Cortex Microcontroller Software Interface Standard,Cortex 微控制器软件接口标准)是由ARM推出的一套用于Cortex-M系列微控制器的软件接口标准。它旨在提供一致的软件接口,使开发者能够更容易地编写可移植、可重用的嵌入式软件。CMSIS定义了一系列规范和API,包括:
-
核心(Core)功能: 定义了与Cortex-M处理器核心相关的功能,如处理器寄存器的访问、中断处理、系统控制和调试等。
-
设备(Device)功能: 定义了与特定Cortex-M系列微控制器相关的功能,如时钟控制、GPIO控制、定时器、中断控制等。每个微控制器厂商根据CMSIS规范提供自己的设备文件,以便开发者在不同的芯片上实现相同的功能。
-
软件包(Software Packs): 包含了CMSIS规范所需的各种软件组件,如设备文件、启动文件、外设驱动等。软件包提供了一种统一的方式来管理和交换与Cortex-M系列微控制器相关的软件组件。
CMSIS的主要目标是提高嵌入式软件的可移植性和可重用性,简化嵌入式软件的开发过程,同时提高开发效率和软件质量。由于CMSIS是一种开放标准,因此可以广泛应用于不同厂商的Cortex-M系列微控制器上,使开发者能够更容易地进行跨平台开发。
STM32固件库符合CMSIS标准,这一节介绍了ARM公司提供的CMSIS标准,以及STM32固件库与CMSIS的关系。CMSIS定义了核内外设访问层、中间件访问层和外设访问层等功能,使得不同厂家生产的Cortex-M4芯片在软件上基本兼容。
4. STM32标准固件库下载
https://www.st.com/en/embedded-software/stsw-stm32054.html
5. STM32F1标准固件库介绍
以下是STM32F1标准固件库中的一些关键文件和文件夹:
-
CMSIS文件夹:
- core_cm3.h:CMSIS核心文件,提供了与Cortex-M3内核的接口。
- system_stm32f1xx.h:片上外设接入层系统头文件,用于设置系统及总线时钟相关的函数。
- stm32f1xx.h:STM32F1片上外设访问层头文件,包含了系统寄存器定义声明以及包装内存操作等。
-
STM32F1xx_StdPeriph_Driver文件夹:
- inc目录:包含了一系列头文件,如stm32f1xx_gpio.h、stm32f1xx_usart.h等,对应于不同外设的驱动。
- src目录:包含了与头文件对应的源文件,如stm32f1xx_gpio.c、stm32f1xx_usart.c等。
-
Project文件夹:
- STM32F1xx_StdPeriph_Examples文件夹:包含ST官方提供的固件实例源码,涵盖了各种常见应用场景和外设配置示例。
- STM32F1xx_StdPeriph_Template文件夹:存放工程模板,可作为新项目的起点。
-
Utilities文件夹:
- 包含一些官方评估板的源码,对于学习可以忽略不看。
-
根目录中的文件:
- stm32f1xx_stdperiph_lib_um.chm:固件库的帮助文档,提供了详细的函数说明和使用方法。
通过介绍这些文件和文件夹,读者可以了解STM32F1标准固件库的组成和结构,以及如何使用这些文件来开发STM32F1系列芯片的应用程序。
相关文章:

STM32固件库简介与使用指南
1. STM32官方标准固件库简介 STM32官方标准固件库是由STMicroelectronics(ST)提供的一套软件开发工具,旨在简化STM32微控制器的软件开发过程。该固件库提供了丰富的功能和模块,涵盖了STM32微控制器的各种外设,包括但不…...

【开源】SpringBoot框架开发智能教学资源库系统
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课程资源模块2.4 课程作业模块2.5 课程评价模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 课程档案表3.2.2 课程资源表3.2.3 课程作业表3.2.4 课程评价表 四、系统展示五、核心代…...

融资项目——获取树形结构的数据
如下图所示,下列数据是一个树形结构数据,行业中包含若干子节点。表的设计如下图,设置了一个id为1的虚拟根节点。(本树形结构带虚拟根节点共三层) 实现逻辑: 延时展示方法,先展现第二层的信息&a…...

Crypto-RSA2
题目:(BUUCTF在线评测 (buuoj.cn)) 已知e,n,dp/(dq),c求明文: 首先有如下公式: dp ≡ d mod (p-1) ,ed ≡ 1 mod φ(n) ,npq ,φ(n)(p-1)(q-1) python代码实现如下: import libnu…...

IEEE Internet of Things Journal投稿经验
期刊名:IEEE Internet of Things Journal 期刊分区:中科院一区 Top 影响因子:10.6 投稿状态 (1)2023.11.3,投稿成功,状态为:under review(大u大r)࿱…...

实例分割论文阅读之:FCN:《Fully Convolutional Networks for Semantica Segmentation》
论文地址:https://openaccess.thecvf.com/content_cvpr_2015/papers/Long_Fully_Convolutional_Networks_2015_CVPR_paper.pdf 代码链接:https://github.com/pytorch/vision 摘要 卷积网络是强大的视觉模型,可以产生特征层次结构。我们证明,…...

apk反编译修改教程系列---简单去除apk登陆 修改vip与一些反编译基础常识【十二】
往期教程: 安卓玩机-----反编译apk 修改apk 去广告 去弹窗等操作中的一些常识apk反编译修改教程系列-----修改apk应用名称 任意修改名称 签名【一】 apk反编译修改教程系列-----任意修改apk版本号 版本名 防止自动更新【二】 apk反编译修改教程系列-----修改apk中…...
网络安全习题集
第一章 绪论 4 ISO / OSI 安全体系结构中的对象认证安全服务使用( C ) 机制来完成。 A .访问控制 B .加密 C .数字签名 D .数据完整性 5 身份鉴别是安全服务中的重要一环,以下关于身份鉴别的叙述不正确的是…...

C++中的volatile:穿越编译器的屏障
C中的volatile:穿越编译器的屏障 在C编程中,我们经常会遇到需要与硬件交互或多线程环境下访问共享数据的情况。为了确保程序的正确性和可预测性,C提供了关键字volatile来修饰变量。本文将深入解析C中的volatile关键字,介绍其作用、…...
(07)Hive——窗口函数详解
一、 窗口函数知识点 1.1 窗户函数的定义 窗口函数可以拆分为【窗口函数】。窗口函数官网指路: LanguageManual WindowingAndAnalytics - Apache Hive - Apache Software Foundationhttps://cwiki.apache.org/confluence/display/Hive/LanguageManual%20Windowing…...

【开源图床】使用Typora+PicGo+Github+CDN搭建个人博客图床
准备工作: 首先电脑得提前完成安装如下: 1. nodejs环境(node ,npm):【安装指南】nodejs下载、安装与配置详细教程 2. Picgo:【安装指南】图床神器之Picgo下载、安装与配置详细教程 3. Typora:【安装指南】markdown神器之Typora下载、安装与无限使用详细教…...
阅读笔记(SOFT COMPUTING 2018)Seam elimination based on Curvelet for image stitching
参考文献: Wang Z, Yang Z. Seam elimination based on Curvelet for image stitching[J]. Soft Computing, 2018: 1-16. 注:SOFT COMPUTING 大类学科小类学科Top期刊综述期刊工程技术 3区 COMPUTER SCIENCE, ARTIFICIAL INTELLIGENCE 计算机…...
LinkedList数据结构链表
LinkedList在Java中是一个实现了List和Deque接口的双向链表。它允许我们在列表的两端添加或删除元素,同时也支持在列表中间插入或移除元素。在分析LinkedList之前,需要理解链表这种数据结构: 链表:链表是一种动态数据结构&#x…...

[计算机网络]---序列化和反序列化
前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、再谈协议…...
[前端开发] 常见的 HTML CSS JavaScript 事件
代码示例指路 常见的 HTML、CSS、JavaScript 事件代码示例 常见的 HTML CSS JavaScript 事件 事件HTML 事件鼠标事件键盘事件表单事件 JavaScript 事件对象事件代理(事件委托) 事件 在 Web 开发中,事件是用户与网页交互的重要方式之一。通过…...
H5/CSS 笔试面试考题(71-80)
简述哪种输入类型用于定义周和年控件(无时区)( ) A:date B:week C:year 面试通过率:67.0% 推荐指数: ★★★★★ 试题难度: 初级 试题类型: 选择题 答案:b 简述下列哪个元素表示外部资源?该元素可以被视为图像、嵌套的浏览上下文或插件要处理的资源。它包括各种属性…...

【Node.js】path 模块进行路径处理
Node.js 执行 JS 代码时,代码中的路径都是以终端所在文件夹出发查找相对路径,而不是以我们认为的从代码本身出发,会遇到问题,所以在 Node.js 要执行的代码中,访问其他文件,建议使用绝对路径 实例࿱…...

react+ts【项目实战一】配置项目/路由/redux
文章目录 1、项目搭建1、创建项目1.2 配置项目1.2.1 更换icon1.2.2 更换项目名称1.2.1 配置项目别名 1.3 代码规范1.3.1 集成editorconfig配置1.3.2 使用prettier工具 1.4 项目结构1.5 对css进行重置1.6 注入router1.7 定义TS组件的规范1.8 创建代码片段1.9 二级路由和懒加载1.…...

英文论文(sci)解读复现【NO.20】TPH-YOLOv5++:增强捕获无人机的目标检测跨层不对称变压器的场景
此前出了目标检测算法改进专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读发表高水平学术期刊中的 SCI论文&a…...
第十五章 以编程方式使用 SQL 网关 - %SQLGatewayConnection 方法和属性
文章目录 第十五章 以编程方式使用 SQL 网关 - %SQLGatewayConnection 方法和属性FetchRows()GatewayStatus propertyGatewayStatusGet()GetConnection()GetGTWVersion()GetLastSQLCode() 第十五章 以编程方式使用 SQL 网关 - %SQLGatewayConnection 方法和属性 FetchRows() …...
【QTableView】
QTableView是Qt框架中用于显示表格形式数据的部件,通常用于显示数据库查询结果、数据集以及其他类似的结构化数据。 以下是一个使用QTableView的简单示例,假设我们有一个数据库表存储了学生的信息,我们可以使用QSqlTableModel将数据库表关联到QTableView上,并显示出来: …...
VS-Code-C#配置
C#开发环境配置 查看更多学习笔记:GitHub:LoveEmiliaForever 1. 安装 .NET SDK 官方下载网址按照安装程序指引安装即可 2. VS Code 安装插件 插件名:C#发布者是Microsoft 该插件是基础语法插件 插件名:C# Dev Kit发布者是Mic…...

第七篇【传奇开心果系列】Python微项目技术点案例示例:数据可视化界面图形化经典案例
传奇开心果微博系列 系列微博目录Python微项目技术点案例示例系列 微博目录一、微项目开发背景和项目目标:二、雏形示例代码三、扩展思路介绍四、数据输入示例代码五、数据分析示例代码六、排名统计示例代码七、数据导入导出示例代码八、主题定制示例代码九、数据过…...
LeetCode 第33天 | 1005. K 次取反后最大化的数组和 135. 分发糖果 134. 加油站
1005. K 次取反后最大化的数组和 按照绝对值大小降序排序,然后将负值变正,如果所有负值都正了,但是还有k余量且为奇数,那就将绝对值最小值(最后一个元素)取反,否则直接结束。 class Solution {…...
PointMixer论文阅读笔记
MLP-mixer是最近很流行的一种网络结构,比起Transformer和CNN的节构笨重,MLP-mixer不仅节构简单,而且在图像识别方面表现优异。但是MLP-mixer在点云识别方面表现欠佳,PointMixer就是在保留了MLP-mixer优点的同时,还可以…...

[word] word分割线在哪里设置 #其他#经验分享
word分割线在哪里设置 在工作中有些技巧,可以快速提高工作效率,解决大部分工作,今天给大家分享word分割线在哪里设置的小技能,希望可以帮助到你。 1、快速输入分割线 输入三个【_】按下回车就是一条长直线,同样分别…...

C++ 音视频原理
本篇文章我们来描述一下音视频原理 音视频录制原理: 下面是对这张思维导图的介绍 摄像头部分: 麦克风采集声音 摄像头采集画面 摄像头采集回来的数据可以用RGB也可以用YUV来表示 图像帧帧率 一秒能处理多少张图像 图像处理 :调亮度 图像帧队列 :意思是将数据取…...
C# 只允许开启一个exe程序
C# 只允许开启一个exe程序 第一种方法 电脑只能启动一次再次点击显示当前exe程序 using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Runtime.InteropServices; using System.Threading.Tasks; using System.Win…...

【Java程序员面试专栏 分布式中间件】Redis 核心面试指引
关于Redis部分的核心知识进行一网打尽,包括Redis的基本概念,基本架构,工作流程,存储机制等,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 基础概念 明确redis的特性、应用场景和数据结构 什么是Redis,Redis有哪些应用场景 Redi…...

2024年【高处安装、维护、拆除】模拟考试题库及高处安装、维护、拆除实操考试视频
题库来源:安全生产模拟考试一点通公众号小程序 高处安装、维护、拆除模拟考试题库是安全生产模拟考试一点通生成的,高处安装、维护、拆除证模拟考试题库是根据高处安装、维护、拆除最新版教材汇编出高处安装、维护、拆除仿真模拟考试。2024年【高处安装…...