本来打算利用STM32标准库自己封装一层HAL(硬件抽象层)库。在搜索相关资料时,发现ST在两三年前就出了官方的HAL库。虽然网上对ST HAL的评价不怎么好,不过个人觉得还是有必要尝试下。
- 与其自己封装HAL库,还不如使用官方封装的HAL库,ST工程师肯定比自己牛;
- ST标准库太底层,本人不太想接触太多底层的东西。
STM32CubeMX介绍
STM32CubeMX是基于HAL的PC端可视化配置软件。集成了文档手册、STM32F系列HAL固件包和图形化芯片资源配置、中间组件、C代码生成器、示例和样本参考等。
使用STM32CubeMX可以快速搭建一个基于STM32的应用框架,大大减轻应用开发的时间和成本。经过这几年迭代开发,其功能也越来越完善,文档越来越丰富。可以说,使用STM32CubeMX进行stm32开发是一个大趋势。
STM32CubeMX下载
本人下载时,最新版本为4.24.0
STM32CubeMX是基于JAVA环境运行的,所以安装时,如果没有检测到适合版本的JRE,会让你先下载JRE。
STM32 HAL库
HAL是Hardware Abstraction Layer的缩写,中文名:硬件抽象层。HAL库是ST为STM32最新推出的抽象层嵌入式软件,可以更好的确保跨STM32产品的最大可移植性。该库提供了一整套一致的中间件组件,如RTOS,USB,TCP / IP和图形等。
HAL库是基于一个非限制性的BSD许可协议(Berkeley Software Distribution)而发布的开源代码。 ST制作的中间件堆栈(USB主机和设备库,STemWin)带有允许轻松重用的许可模式, 只要是在ST公司的MCU 芯片上使用,库中的中间件(USB 主机/设备库,STemWin)协议栈即被允许随便修改,并可以反复使用。至于基于其它著名的开源解决方案商的中间件(FreeRTOS,FatFs,LwIP和PolarSSL)也都具有友好的用户许可条款。
可以说HAL库就是用来取代之前的标准外设库的。相比标准外设库,STM32Cube HAL库表现出更高的抽象整合水平,HAL API集中关注各外设的公共函数功能,这样便于定义一套通用的用户友好的API函数接口,从而可以轻松实现从一个STM32产品移植到另一个不同的STM32系列产品。HAL库是ST未来主推的库,从前年开始ST新出的芯片已经没有STD库了,比如F7系列。目前,HAL库已经支持STM32全线产品。
HAL库在STM32CubeMX中,被称为STM32Cube MCU packages。可以在ST官方网站下载,也可以在STM32CubeMX中在线下载。推荐使用后面一种方式下载。
在STM32CubeMX中,点击Help—>Manager Embedded Software Packages,可以下载各个系列的固件库。
对于STM32F4来说,当前最新版本为1.19版本。