2.2 STM32F103C8T6最小系统板的四种有关固件的开发方式

news/2025/2/25 8:20:04

2.2.1  四种有关固件的开发方式

       四种有关于固件的开发方式从时间线由远及近分别是:

       寄存器开发

       标准外设驱动库开发

       硬件抽象层库开发

       底层库开发

       四种开发方式各有优缺点,可以参考ST官方的测试与说明。

       1.寄存器开发

       寄存器编程对于从51等等芯片过渡过来的小伙伴并不陌生,不管你是什么库,最终操作的还是寄存器,所以对于标准库、HAL库、LL库都是在寄存器上的编程,所以可以直接在各种库中直接操作寄存器。 但寄存器开发方法到了STM32就变得不太容易行得通了,因为STM32的寄存器数量是51单片机的十数倍,如此多的寄存器根本无法全部记忆,开发时需要经常的翻查芯片的数据手册,此时直接操作寄存器就变得非常的费力了。但还是会有很小一部分人,喜欢去直接操作寄存器,因为这样更接近原理,知其然也知其所以然。

       2.标准外设驱动库开发

       也叫标准库,标准库所做的事情就是对寄存器进行了封装,形成了一套API函数供用户使用 因为STM32有非常多的寄存器,而导致了开发困难,所以为此ST公司就为每款芯片都编写了一份库文件,也就是工程文件里stm32F1xx.c和stm32F1xx.h之类的。在这些 .c .h文件中,包括一些常用量的宏定义,把一些外设也通过结构体变量封装起来,如GPIO口时钟等。所以我们只需要配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能。用户不用去管寄存器到底是如何操作的,直接调用接口函数进行开发即可。 标准库在早期版本也叫固件函数库或简称固件库,不同人有不同的说法,知道这是同一个东西就行了。       

       3.硬件抽象层库开发

       也叫LL库,它的出现比标准库要晚,但其实和标准库一样,都是为了节省程序开发的时期,而且HAL库尤其的有效,如果说标准库把实现功能需要配置的寄存器集成了,那么HAL库的一些函数甚至可以做到某些特定功能的集成。也就是说,同样的功能,标准库可能要用几句话,HAL库只需用一句话就够了。 并且HAL库也很好的解决了程序移植的问题,不同型号的stm32芯片它的标准库是不一样的,例如在F4上开发的程序移植到F3上是不能通用的,而使用HAL库,只要使用的是相通的外设,程序基本可以完全复制粘贴,注意是相通外设,意思也就是不能无中生有,例如F7比F3要多几个定时器,不能明明没有这个定时器却非要配置,但其实这种情况不多,绝大多数都可以直接复制粘贴。 而且使用ST公司研发的 STM32CubeMx 软件,可以通过图形化的配置功能,直接生成整个使用HAL库的工程文件,可以说是方便至极,但是方便的同时也造成了它执行效率的低下。 

       4.底层库开发

       也叫LL库,是与HAL库打包发布的一部分库文件,它也是对寄存器进行了封装,与标准库其实差别并不是很大。

2.2.2  固件开发方式选择

       推荐先学习标准外设驱动库开发,然后再转入硬件抽象层库开发。

       

       


http://www.niftyadmin.cn/n/5865244.html

相关文章

赛前启航 | 三场重磅直播集结,予力微软 AI 开发者挑战赛!

随着微软 AI 开发者挑战赛的火热进行,赛前指导直播已成为众多参赛者获取技术干货、灵感碰撞和实战技巧的绝佳平台。继前两期的精彩呈现,第三、四、五期直播即将接连登场,为开发者们带来更加深入的 AI 技术剖析和项目实战指引。无论你是想进一…

设计模式-解释器模式、装饰器模式

解释器模式 定义 给分析对象定义一个语言,并定义语言的文法表示,再设计一个解释器来解释语言中的句子。也就是说,用编译语言的方式来分析应用中的实例。这种模式实现了文法表达式处理的接口,该接口解释一个特定的上下文。 类图 …

网络安全入门|从防护到溯源:HTTP慢速攻击的深度对抗

一、深度对抗中的四大核心问题 在HTTP慢速攻击的防护与溯源过程中,以下问题尤为突出: 检测精度不足 问题:传统基于阈值(如连接数、请求速率)的检测易被攻击者绕过(如分布式IP、动态调整攻击速率)。 案例:攻击者使用1000个代理IP,每个IP仅建立1个连接并发送1字节/分钟…

爱普生SG-8101CE可编程晶振赋能智能手机的精准心脏

在智能手机高速迭代的今天,高性能、低功耗与小型化已成为核心诉求。智能手机作为人们生活中不可或缺的工具,需要在各种复杂场景下稳定运行。爱普生SG-8101CE可编程晶振凭借其卓越性能,成为智能手机中不可或缺的精密时钟源,为通信、…

4. 示例:创建带约束的随机地址生成器(范围0x1000-0xFFFF)

文章目录 前言代码示例:运行方法:查看结果:关键功能说明:扩展功能建议: 前言 以下是一个完整的SystemVerilog测试平台示例,包含约束随机地址生成、日志输出和波形生成功能: 代码示例&#xff1…

sailwind 安装提示找不到mfc140.dll安装Visual C++ Redistributable for Visual Studio 2015

sailwind 安装提示找不到mfc140.dll安装Visual C Redistributable for Visual Studio 2015 下载: https://www.microsoft.com/zh-cn/download/details.aspx?id48145&751be11f-ede8-5a0c-058c-2ee190a24fa6True) 如果链接失效就直接搜,有个微软官…

your HTTP request connection start duration too long

If your HTTP request connection start duration is taking more than 7 seconds, here are some possible causes and troubleshooting steps: Possible Causes: Network Latency – Slow internet or network congestion.DNS Resolution Delay – Slow DNS lookup affecti…

前端面试-webpack篇

Webpack的构建流程 Webpack 的构建流程可以总结为以下几个关键步骤: 初始化参数: 从配置文件和命令行参数中读取并合并配置,得到最终的构建参数。 开始编译: 初始化 Compiler 对象,加载所有配置的插件,执行…