STM32之CubeMX学习笔记(1)什么是CubeMX 什么是HAL库

STM32之CubeMX学习笔记(1)CubeMX&HAL库介绍

CubeMX介绍

STM32用的CubeMX是ST公司出品的一款C代码生成器软件,它的图形化工具界面可以让使用者可视化地选择所需的芯片,并设置选用任一引脚、任一外设。另外的,CubeMX还提供了自动识别引脚冲突、设置时钟树、功耗预测等功能。使用CubeMX能减轻底层开发工作量,节约时间。
CubeMX开发界面

HAL库介绍

CubeMX生成的代码使用的并不是32单片机的标准库,而是使用的HAL库HAL,是英文Hardware Abstraction Layer的缩写,翻译是硬件抽象层。它是内核与芯片内硬件设备的关联层,我们可以容易地在硬件抽象层中编程来操作内核,硬件抽象层的易于移植性也让在不同内核下的编程不再复杂。其实在很多嵌入式平台开发中都诞生了自己的HAL,比如,安卓和微软的内核都有它们自己的HAL,意法半导体也不能落后,它拥有如此多种类的芯片,也有很多的市场份额,为了提高自己在市场中的话语权,牢牢抓住使用ST芯片的老用户,它也开发出了属于自己的HAL库。首先是多点开发的花样,让开发更容易上手,更加专业,吸引更多新用户;其次也是为了提高库的可移植性,代替标准库。下面我就自己初次接触CubeMX和HAL库,谈谈自己的使用感受。
KEIL环境的开发

初步使用感受

当我第一次学习STM32单片机的时候,使用的是学长同款的某子的开发板,通过观看其配套的光盘教学视频,聆听我的未来不是梦,来对32单片机进行一步一步的学习。但是教学视频中介绍的32丰富的寄存器以及库函数的使用让调外设也成为了一件复杂工作。我当时在学的时候,看着各种外设的结构体变量名,就在想:这种类似菜单的参数选择做成一个软件不就行了。就在我对32单片机和它的背景更加了解的时候,得知了CubeMX软件的存在。

原来ST的先人早就在几年前就帮我们准备好了知识的财富。据了解前期的CubeMX的Bug简直不忍直视,明明是一个简化开发的工具,然而在学会使用它的过程中,付出的代价远远超过了它能带来的便捷,当然早期的HAL要背最大的锅。在2017年,能在网上查到很多关于CubeMXHAL库的吐槽。但是如今的CubeMX逐渐完善,截止今天我写稿的时候CubeMX已经更新到了5.6.1版本。我相信以后的CubeMX一定会越来越完善的。

回归小标题,谈谈我的初步使用感受。(本人最近就使用HAL库做了一个二轮平衡车项目,所以只是初步感受了)

  • 创建工程的简化:一般情况下,在我没学CubeMX的时候要制作一个项目,首先要复制某子的空的工程文件,然后去各个库函数例程中,搬运自己所需要的Hardware,然后改引脚,再根据自己的需求,改变参数。(u1s1,某子有些程序是真的难搬运,全搅和在一起)还有一些情况的基本上都是老程序手了,自己都写过相应的Hardware,有属于自己的代码风格,那么这样他只要搬运自己以前项目中的程序部分就行了,再按需求修改。当你使用CubeMX,你只需要在图形化的操作界面中,选择好芯片,改好ST下载,设置好外部晶振,改好时钟,定义好引脚,定义好外设,设置代码输出路径(特别注意,必须是全英文路径),改好IDE(本人使用MDK),生成代码即可。个人觉得比某子的工程创建要方便很多,很适合掌握了32基础知识,但手上没有很多项目代码的新手。软件学习还是相对比较简单的,在之后的博客中我会逐步更新。

  • 助你学习STM32:在CubeMX中配置芯片的时候,你可以清楚的看到该芯片的引脚和外设功能,也就是说,在使用CubeMX配置的过程中,我们就可以学习一遍STM32外设的功能,和该芯片的时钟频率、引脚功能分配等等,可以说这就是一个很好的学习工具。

  • HAL库的优劣:比起标准库,CubeMX使用的HAL库集成度会更加高,很多原本在标准库中要自己手动配置,组合的代码,在HAL库中可能就直接是封装好的函数,非常方便。但同时这样也带来了一些弊端,首先因为要考虑移植性和代码稳定性,HAL库中封装的函数不避免的有很多判断,这样的确影响了代码的效率,但是这仅局限于高速场合,一般情况下,使用HAL库和使用标准库的代码速度差别可以忽略不计。有那么多时间,还不如优化一下自己的算法代码,再想快一点,还可以使用LL库。这里具体就不谈了。

  • 添加操作系统FreeRTOS:在CubeMX上是可以直接移植FreeRTOS的,这样就避免了在移植FreeRTOS时出现接口错误。关于操作系统这方面,我还不是很了解,还需要努力。

总而言之,对于新手来说,CubeMX配合HAL库是一个很好的入门学习工具,这种开发方式对于传统开发肯定是更加Fashion;对于老手来说,这也提供了一种更快速更简便的开发方式,在开发一些简单项目上肯定能提高工作效率的。

  • 35
    点赞
  • 124
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
对于学习STM32CUBEMX,我可以提供一些学习笔记和建议。首先,了解STM32CUBEMX是什么以及它的作用。STM32CUBEMX是一个图形化的配置工具,用于快速生成STM32微控制器的初始化代码和配置文件。 以下是一些学习STM32CUBEMX的步骤和注意事项: 1. 安装和启动:首先,你需要下载并安装STM32CUBEMX软件。安装完成后,启动软件。 2. 选择芯片型号:在启动界面上,选择你要使用的STM32微控制器型号。如果你不确定选择哪个型号,可以查阅相关的STM32官方文档或参考资料。 3. 配置引脚:在主界面上,你可以看到一个引脚图,它显示了你所选芯片的引脚布局。通过拖拽和连接引脚,你可以配置外设的连接方式。 4. 配置时钟:在时钟配置选项卡中,你可以设置系统时钟和外设时钟。根据你的应用需求,选择合适的时钟源和分频系数。 5. 配置外设:在外设配置选项卡中,你可以启用或禁用各种外设,如UART、SPI、I2C等。你还可以配置它们的参数,例如波特率、数据位数等。 6. 生成代码:完成以上配置后,点击“生成代码”按钮,STM32CUBEMX将为你生成初始化代码和配置文件。你可以选择使用HAL库或标准外设库,以及选择你喜欢的开发环境。 7. 导入代码:将生成的代码导入到你的开发环境中,并进行编译和烧录。 除了以上步骤,还有一些额外的学习资源可以帮助你更好地理解和使用STM32CUBEMX。例如,你可以查阅官方文档、参考手册、应用笔记和示例代码等。 希望这些学习笔记对你有所帮助!如果你有更多问题,可以随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值