4 Star 5 Fork 1

Atonidas/STM32HAL教程

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

#STM32 HAL库入门教程介绍

使用CubeMX生成初始化代码,在VScode中使用EIDE插件编译,编译链为GCC,版本控制使用Git和可视化GUI(SourceTree)

##开发方式 目前STM32有四种的开发方式,即寄存器、标准库、HAL库、LL库:

库类型 可移植性 优化 上手 可读性 支持范围
寄存器 +++ +
标准库 ++ ++ + ++ ++
HAL库 +++ + ++ +++ +++
LL库 + +++ + ++ ++

以往教程中,诸如正点原子F1系列的教程,基本上是以标准库为主要开发方式,辅以寄存器理解进行初始化配置和开发。这样讲课可以讲得很细,能深入到MCU的内核中,了解各个外设的工作方式,但代价是课程时间长,及时视频资源丰富也难以坚持下来。加上目前F1系列的32单片机价格居高不下,在一些初始配置时标准库也很头疼。本篇文章主要以HAL库的入门开发教程为主,辅以一些偏应用的程序讲解,以为了更快应用的到实际的项目中

正点原子学习路线: 运作原理→初始化配置方式→简单应用→应用拓展

本篇教程学习路线: 外设功能→应用需求→快速初始化配置→应用拓展

因此,本篇课程强调应用和程序逻辑,受限于作者开发水平,想学习单片机底层工作方式或有更复杂项目需求还请浏览其他资料

##HAL库和CubeMX

HAL库大致原理上和标准库类似,都是将底层寄存器操作利用函数进行封装,用户初始化或者使用时利用声明结构体的方式进行初始化或者使用。不过HAL的封装程度更高,将一些外设配置进行了整合,随之而来的是代码运行效率的降低。好在现在单片机性能都很强,可选型号丰富,暂时不用过于担心代码程序臃肿效率低,或者交叉使用HAL库和LL库开发也可以

即便如此,各种初始化配置还是离不开翻阅数据手册或者阅读文章,当涉及到IO口的复用和映射时更是如此。为了解决这个问题,本教程示例的所有代码工程均由CubeMX生成初始化项目,淡化初始化的原理转而强调代码逻辑

##VS code 和 GCC

通常编译开发STM32项目我们使用的MDK软件,作为一个老牌的开发环境,MDK资料丰富,调试清晰bug较少,完成破解后就可以流畅开发。不过它存在开发界面有点老旧,对一些新功能的支持性不是很好,默认使用的AC5编译器编译大项目速度慢,AC6编译警告较多等一些不便。

对比之下,VS code的开发界面清晰软件开源免费,支持多种插件,使用GCC时编译速度很快,整体码代码体验较好。虽然也有着诸如插件环境配置繁琐,出问题后网上资料案例较少,调试起来不如MDK清晰明确等弊端。但本教程将尽力讲清楚开发过程的各个注意事项,尽可能多地解决各类问题。

故开发环境使用VS code配合EIDE等插件开发,在后续应用中稍微提及MDK以方便旧工程项目的移植

##版本控制管理Git

Git作为一个优秀的版本控制管理软件在实际公司生产开发环节有着广泛的使用,配合云端代码托管平台(GitHub、Gitee)可以实现代码的云端备份或多人协同开发,对我们的实际开发学习过程有着很大的帮助。

不过因为其操作都在命令行中进行,新手难以入门,遇上当前版本和云端不匹配或分支、合并操作时更是让人头疼,最后这个软件在大学一般教学中并不是很能推广开来。因此,本教程会在搭建环境时,教会各位使用SourceTree软件对Git进行可视化操作管理,课程中的代码demo也会同步到作者的个人Gitee,希望各位能养成良好的工程项目习惯

#教程索引

MIT License Copyright (c) 2021 松露 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

暂无描述 展开 收起
HTML 等 3 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/Atonidas/stm32-hal-tutorial.git
git@gitee.com:Atonidas/stm32-hal-tutorial.git
Atonidas
stm32-hal-tutorial
STM32HAL教程
master

搜索帮助