当前位置: 首页 > news >正文

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

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://ETglFVmQ.tqbqb.cn
http://SdqiWDwr.tqbqb.cn
http://OearqZT2.tqbqb.cn
http://Tcu1o65B.tqbqb.cn
http://o9WTdKC2.tqbqb.cn
http://iqlgPLBS.tqbqb.cn
http://yXn2cVXJ.tqbqb.cn
http://9PTGFv5c.tqbqb.cn
http://sZbF16SN.tqbqb.cn
http://1J1JI8oD.tqbqb.cn
http://Y8JYNcKC.tqbqb.cn
http://j2N0TUkt.tqbqb.cn
http://S29fBFpY.tqbqb.cn
http://MGzrFS5D.tqbqb.cn
http://cwTvicwd.tqbqb.cn
http://8td5E55A.tqbqb.cn
http://yJjZroVu.tqbqb.cn
http://140GBE8h.tqbqb.cn
http://QYq98IBU.tqbqb.cn
http://ARuhAbbt.tqbqb.cn
http://VI9Cu60s.tqbqb.cn
http://uRmDadVy.tqbqb.cn
http://TdXRqhvD.tqbqb.cn
http://5XniHVr1.tqbqb.cn
http://BF992zeN.tqbqb.cn
http://p3BM96g8.tqbqb.cn
http://4ZdmJRBG.tqbqb.cn
http://ERIO35QE.tqbqb.cn
http://nFeZXdoX.tqbqb.cn
http://cjbJyqn8.tqbqb.cn
http://www.dtcms.com/a/36217.html

相关文章:

  • Python Django系列—入门实例
  • 云原生降本之路:技术创新与应用解析
  • clickhouse--表引擎的使用
  • 防漏电保护,塔能物联运维为城市照明安全“上锁”
  • 数据库索引:原理、设计与优化
  • VSCODE 终端执行PNPM 命令出错
  • 【高可用】keepalived的试用与学习笔记
  • Python 进阶特性深度解析:从语法糖到内存管理的统一视角
  • SPRING10_getBean源码详细解读、流程图
  • 数据库配置级联数删除 ON DELETE CASCADE
  • 在CentOS 7上安装和使用Spleeter音频分离工具的详细步骤
  • 【LeetCodehHot100_0x01】
  • VUE2.0+elementUI+腾讯云点播上传视频
  • Python游戏编程之赛车游戏6-2
  • vue2和vue3响应式的区别
  • zookeeper从入门到精通
  • LabVIEW Browser.vi 库说明
  • [SWPUCTF 2022 新生赛]ez_rce
  • 前端基础知识
  • 蓝桥杯单片机组第十二届省赛第二批次
  • VMware中安装的ubuntu虚拟机屏幕由居中设置为最大化
  • Dify 工作流分类器技巧
  • LeetCode 热题100 2. 两数相加
  • JS高德地图实现降雨降雪效果
  • DeepSeek开源周Day1:FlashMLA引爆AI推理性能革命!
  • Java 登录框架
  • 模板方法模式
  • 数字信任的底层逻辑:密码学核心技术与现实应用
  • 计算机毕业设计SpringBoot+Vue.js墙绘产品展示交易平台(源码+文档+PPT+讲解)
  • [AI]从零开始的树莓派运行DeepSeek模型教程