STM32三种库:
库的类型:
ST已经推出了三种库函数,以方便客户快速开发STM32系列MCU。从15、16年开始,ST逐渐停止了对标准外设库的更新和维护,转向了HAL和LL库。
(1) 标准外设驱动库SPL Standard Peripheral Library
(2) Cube HAL Hardware Abstraction Layer硬件抽象层库
(3) Cube LL以及直接操作寄存器 Low-layer底层库
几种库的区别:
①Cube LL库的效率优于HAL库的,几乎和直接写寄存器的效率相差无几。
②HAL库函数因为要顾及整个STM32系列间的代码高度兼容与可移植性,代码相对庞大。对于刚接触STM32的人来说,非常易于上手做些基本的评估和验证,入门快捷。
③LL库的出现,是对HAL库的有力补充。相比HAL库用户,LL库用户需要对MCU及相应外设有更为细致的了解
目前,STM32cubeMX不但支持基于HAL库的初始化文件的生成,也已支持基于LL库的初始化文件及工程的生成,对于已经比较熟悉STM32应用或关注代码效率的开发人员来说,可以优先考虑使用LL库。
STM32CubeMX:
STM32CubeMX是一个图形化的软件配置工具,使用图形向导可以生成STM32初始化代码工程。STM32CubeMX这个工具是ST目前重点打造的工具,目的就是为了方便开发者,节约时间,提高开发效率
官方地址:https://www.st.com/stm32cubemx
STM32CubeMX特性:
1.直观的选择 STM32 微控制器(MCU)和微处理器(MPU)。
2.丰富易用的图形化界面: -自动解决配置冲突 -具有参数约束动态验证的外设和中间件功能模式 -时钟树与配置的动态验证 -功耗预测
3.生成初始化代码工程,包含:EWARM、 MDK-ARM、 TureSTUDIO、 SW4STM32等。
4.针对部分MPU生成Linux设备树。
5.可独立运行在Windows、Linux和macOS上使用,或作为 Eclipse 插件使用。
安装 JRE:
安装(安装一直下一步即可)
由于 STM32CubeMX 软件是基于 JAVA 环境运行的,所以需要安装 JRE (Java Runtime Environment)才能使用, 建议到官网下载最新版本JRE。
地址:https://www.java.com/en/download/manual.jsp
下载STM32CubeMx和HAL库
官方地址:http://www.st.com/stm32cubemx
HAL库下载:
CubeMX下载并安装(安装一直下一步即可):
HAL库的安装:(LL库也在)
HAL库,也可理解为软件包,有在线安装、离线安装两种方式。
在线安装
打开安装好的 STM32CubeMX 软件, 进入库管理界面(Help -> Manage embedded...),会有一个列表, 勾选上你要安装的HAL库, 点击“Install Now” 直到安装成功。 如下图:
这种方式比较简单,需要联网在线下载,可能需要等待一段时间。如果刷新之后,可以看到最新版本,以及一些老版本HAL库。
离线安装:
离线安装的前提是需要下载好离线包,方法有两种:1.从库管理界面直接导入离线包。2.直接解压离线包到指定路径下。
1.导入离线包
2.直接解压 Help -> Updater Settings得到HAL库路径(直接解压HAL库离线包,注意路径、文件夹名需一致)
------------恢复内容开始------------
STM32三种库:
库的类型:
ST已经推出了三种库函数,以方便客户快速开发STM32系列MCU。从15、16年开始,ST逐渐停止了对标准外设库的更新和维护,转向了HAL和LL库。
(1) 标准外设驱动库SPL Standard Peripheral Library
(2) Cube HAL Hardware Abstraction Layer硬件抽象层库
(3) Cube LL以及直接操作寄存器 Low-layer底层库
几种库的区别:
①Cube LL库的效率优于HAL库的,几乎和直接写寄存器的效率相差无几。
②HAL库函数因为要顾及整个STM32系列间的代码高度兼容与可移植性,代码相对庞大。对于刚接触STM32的人来说,非常易于上手做些基本的评估和验证,入门快捷。
③LL库的出现,是对HAL库的有力补充。相比HAL库用户,LL库用户需要对MCU及相应外设有更为细致的了解
目前,STM32cubeMX不但支持基于HAL库的初始化文件的生成,也已支持基于LL库的初始化文件及工程的生成,对于已经比较熟悉STM32应用或关注代码效率的开发人员来说,可以优先考虑使用LL库。
STM32CubeMX:
STM32CubeMX是一个图形化的软件配置工具,使用图形向导可以生成STM32初始化代码工程。STM32CubeMX这个工具是ST目前重点打造的工具,目的就是为了方便开发者,节约时间,提高开发效率
官方地址:https://www.st.com/stm32cubemx
STM32CubeMX特性:
1.直观的选择 STM32 微控制器(MCU)和微处理器(MPU)。
2.丰富易用的图形化界面: -自动解决配置冲突 -具有参数约束动态验证的外设和中间件功能模式 -时钟树与配置的动态验证 -功耗预测
3.生成初始化代码工程,包含:EWARM、 MDK-ARM、 TureSTUDIO、 SW4STM32等。
4.针对部分MPU生成Linux设备树。
5.可独立运行在Windows、Linux和macOS上使用,或作为 Eclipse 插件使用。
安装 JRE:
安装(安装一直下一步即可)
由于 STM32CubeMX 软件是基于 JAVA 环境运行的,所以需要安装 JRE (Java Runtime Environment)才能使用, 建议到官网下载最新版本JRE。
地址:https://www.java.com/en/download/manual.jsp
下载STM32CubeMx和HAL库
官方地址:http://www.st.com/stm32cubemx
HAL库下载:
CubeMX下载并安装(安装一直下一步即可):
HAL库的安装:(LL库也在)
HAL库,也可理解为软件包,有在线安装、离线安装两种方式。
在线安装
打开安装好的 STM32CubeMX 软件, 进入库管理界面(Help -> Manage embedded...),会有一个列表, 勾选上你要安装的HAL库, 点击“Install Now” 直到安装成功。 如下图:
这种方式比较简单,需要联网在线下载,可能需要等待一段时间。如果刷新之后,可以看到最新版本,以及一些老版本HAL库。
离线安装:
离线安装的前提是需要下载好离线包,方法有两种:1.从库管理界面直接导入离线包。2.直接解压离线包到指定路径下。
1.导入离线包
2.直接解压 Help -> Updater Settings得到HAL库路径(直接解压HAL库离线包,注意路径、文件夹名需一致)
创建工程:
选择自己型号MCU,到生成代码并成功运行的创建过程
进入MCU选择器:(进入选择器时会联网更新数据库,可能需要等待一下)
选择对应型号MCU
时钟源选择
如果选择使用外部高速时钟(HSE),则需要在System Core中配置RCC(如下图)。如果使用默认内部时钟(HSI),这一步可以略过。
选择GPIO(LED)引脚
配置时钟Clock
STM32CubeMX配置时钟的界面非常方便,有很多提示(比如最大时钟),很多地方直接点击选择就行了。
默认高速时钟是使用内部(HSI),而且CPU时钟配置的比较低。以我选择的STM32F103,外部8M晶振为例(如下图)。
工程管理
工程管理器的内容比较多,大部分都默认即可,这里讲述几个要点(如下图),更多选项后期详细讲述。
生成代码
以上操作就基本配置完成了一个简单的Demo工程,只需要点击“生成代码”即可。
添加代码
当然,以上生成的代码还不够完善,需要添加自己的应用代码
生成的MDK-ARM工程,编译下载之后,默认是不会运行代码,需要重新复位一次才能运行,或你自己配置一下(如下图)。
那么是不是每改变引脚或功能时,都要在CubeMX上面进行一次配置呢?