本内容包括STM32系列的库简介(标准化外设库、HAL库、LL库),软件下载、安装与设置,STM32CubeMX的使用(含输入捕获)等。紫色文字是超链接,点击自动跳转至相关博文。持续更新,原创不易!
目录:
一、STM32系列的库简介
1、寄存器(STM32Snippets)
2、标准外设库
3、HAL库
4、LL库
二、软件下载、安装与一般设置
1、软件下载、安装
2、显示设置
三、STM32CubeMX的使用
1、工程的建立与管理
2、输入捕获
-----------------------------------------------------------------------------------------------------------------
一、STM32系列单片机的库简介
1、寄存器(STM32Snippets)
它是代码示例的集合,直接基于STM32外设寄存器,可在文档和软件包中使用。由于处在最底层,因此需要开发者直接操作外设寄存器。
-----------------------------------------------------------
2、标准外设库
标准外设库(Standard Peripherals Library)是对STM32芯片的一个完整的封装,包括所有标准器件外设的器件驱动器。这应该是目前使用最多的ST库。几乎全部使用C语言实现。但是,标准外设库也是针对某一系列芯片而言的,没有可移植性。
相对于HAL库,标准外设库仍然接近于寄存器操作,主要就是将一些基本的寄存器操作封装成了C函数。开发者需要关注所使用的外设是在哪个总线之上,具体寄存器的配置等底层信息。
注意:不支持从STM32L0、STM32L4和STM32F7芯片开始之后的STM32系列芯片。
ST为各系列提供的标准外设库稍微有些区别。例如,STM32F1x的库和STM32F3x的库在文件结构上就有些不同,此外,在内部的实现上也稍微有些区别,这个在具体使用(移植)时,需要注意一下!但是,不同系列之间的差别并不是很大,而且在设计上是相同的。
-----------------------------------------------------------
3、HAL库
ST为新的标准库注册了一个新商标:STMCube™。并且,ST专门为其开发了配套的桌面软件STMCubeMX,开发者可以直接使用该软件进行可视化配置,大大节省开发时间。其中就包含了HAL库和LL库。
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未来主推的库。目前,HAL库已经支持STM32全线产品。使用HAL库编程,最好尽量符合HAL库编程的整体架构。
-----------------------------------------------------------
4、LL库
1)LL库(Low Layer)与HAL捆绑发布,文档也和HAL文档在一起。LL库更接近硬件层,对需要复杂上层协议栈的外设不适用,直接操作寄存器,支持所有外设。针对一些低性能(M0)或者低功耗(L系列)的芯片编程时。相较于HAL库的低效率,寄存器操作的复杂,标准库的逐渐淘汰,LL库就成为了替代HAL库一个比较好的选择。
STM32使用HAL库、标准库、LL库和寄存器操作的性能对比:
上图转自:STM32使用HAL库、标准库、LL库和寄存器操作的性能对比_榕灵的博客-CSDN博客_ll库和标准库。
--------------------------------
2)LL驱动程序介绍
一组函数,用于根据数据结构中指定的参数初始化外围主要功能;
一组函数,用于用每个字段的重置值填充初始化数据结构执行外围设备反初始化的功能(外围设备寄存器恢复为默认值);
一组内联函数,用于直接和原子寄存器访问;
由于LL驱动程序可以在独立模式下(无HAL驱动程序)或在混合模式下(有HAL驱动程序)使用,因此与HAL完全独立。
--------------------------------
3)与HAL库相同,LL库同样支持STM32CubeMX生成代码,非常方便。并且,在STM32CubeMX工程中,不同外设是可以混合使用HAL和LL库的,两者完全兼容,所以适配上是不存在问题的。LL库的生成设置如下。
-----------------------------------------------------------------------------------------------------------------
二、软件下载、安装与一般设置
1)中国意法半导体STM | STM32/STM8微控制器 | MCU单片机搜索下载
--------------------------------
2)软件包安装
安装后的效果:
-----------------------------------------------------------
2、显示设置
-----------------------------------------------------------------------------------------------------------------
三、STM32CubeMX的使用
1、工程的建立与管理
工程建立:
工程管理:
-----------------------------------------------------------
2、输入捕获
实际工程应用:STM32单片机-输入捕获、FFT测频。
调试端口设置:
中断设置:
定时器3配置:
RCC时钟设置:
生成代码:
-----------------------------------------------------------------------------------------------------------------