赞
踩
HAL库(Hardware Abstraction Layer)是STMicroelectronics提供的STM32微控制器的硬件抽象层库。它通过一套统一的API接口,简化了对STM32外设的配置和操作,使开发者能够更快速地进行嵌入式系统开发,而不必深入了解底层硬件细节。
HAL库的优点
高层次抽象:HAL库提供了高层次的抽象接口,简化了对硬件外设的操作。开发者可以通过调用库函数完成复杂的硬件配置,而不必直接操作寄存器。
易于使用:由于提供了丰富的库函数和示例代码,开发者可以快速上手进行开发,减少了开发时间。
一致性和移植性:HAL库在不同的STM32系列中保持了一致的API接口,增强了代码的移植性和重用性。如果需要更换STM32系列微控制器,代码的修改量较小。
简化调试:由于HAL库屏蔽了底层的寄存器操作,调试过程中更容易定位和解决问题,减少了开发和维护的复杂性。
代码维护性好:HAL库的高层次封装和良好的代码结构使得代码更容易维护和更新。
对比标准固件库的不同
抽象层次:
代码复杂性:
学习曲线:
开发效率:
移植性:
STM32Cube MCU和MPU包: 相关产品及其源码下载链接:
https://www.st.com.cn/zh/embedded-software/stm32cube-mcu-mpu-packages/products.html
点击产品选择器,这里选择了F1系列
点击打开新页面,然后下拉到最下面,选择第二个下载选项, 下载安装包。
这里使用的是手动创建,在实际应用中更推荐使用cubeMX,手动配置可以用于理解底层文件的逻辑。
总结为五个步骤
首先创建一个文件夹myproject,然后在里面创建几个分组文件夹:
接下来从刚才官网下载的安装包来找所需要的文件。
首先按照下面的地址打开安装包文件,找到下面两个文件。
STM32Cube_FW_F1_V1.8.0\Projects\STM3210E_EVAL\Templates\Inc
然后将这两个文件复制到工程文件的USER文件夹中。
然后按照下面的地址打开安装包文件,找到下面这个文件。
STM32Cube_FW_F1_V1.8.0\Projects\STM3210E_EVAL\Templates\Src
然后将这个文件也复制到工程文件的USER文件夹中。
按照下面的地址打开安装包文件,找到Src和Inc,这是Hal库的头文件和源码。
STM32Cube_FW_F1_V1.8.0\Drivers\STM32F1xx_HAL_Driver
然后将这两个文件夹复制到工程文件的LIB文件夹中。
这里要注意,inc文件夹中同样包含 config文件,和刚刚在复制到USER中的一样,如果你像把config文件配置到这里就需要修改一下名字。如果前面已经添加了,这里就可以不添加了。
并且为了防止后面配置文件时出错,这里可以把config文件后面的”_template “给删掉。
按照下面的地址打开安装包文件,找到Include,这是Hal库的CM内核文件。
STM32Cube_FW_F1_V1.8.0\Drivers\CMSIS
然后将这个文件夹复制到工程文件的CMSIS文件夹中。
按照下面的地址打开安装包文件,找到Include,这是Hal库中单片机及系统文件。
STM32Cube_FW_F1_V1.8.0\Drivers\CMSIS\Device\ST\STM32F1xx\Include
然后将Include这个文件夹中的文件复制到工程文件的CMSIS中刚刚保存的Include文件夹中。
接着在工程文件的CMSIS文件夹中再创建一个Source文件
然后按照下面的地址打开安装包文件,找到system_stm32f1xx 这个文件
STM32Cube_FW_F1_V1.8.0\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates
然后将这个文件复制到工程文件的CMSIS中刚刚创建的Source文件夹中。
然后按照下面的地址打开安装包文件,找到arm这个文件,这是汇编启动文件。
STM32Cube_FW_F1_V1.8.0\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm
然后将arm中的文件也都复制到工程文件的CMSIS中刚刚创建的Source文件夹中。
这里例如C8T6,使用的就是最下面这个f103xb启动文件。
到这里文件就复制完了,其实和标准库的方法类似。
打开Kiel5,创建一个新工程
将启动文件创建到USER目录下
然后选择C8T6
打开管理,然后如图所示创建几个分组。
首先添加LIB中的文件,打开LIB中的Src文件夹。
下面两个是必备的文件,其他的根据需要添加,当然全部添加也可以。
然后是CMSIS,打开CMSIS文件夹,在Source中添加系统文件。
然后在下面的文件类型中选择.S文件,然后选择汇编启动文件:f103xb.S
然后新建一个文件,取名main.c保存到USER中
接着双击keil中的USER,将刚刚创建的mian文件添加进去。
接着打开小锤子,点击C/C++, 将定义写为STM32F103xB,也就是告诉编译器我们用的是什么启动文件
接着点击下面的添加启动文件路径,将我们创建的分组的头文件夹路径添加进去。
接下来在main.C文件中打入下面的代码
- #include "stm32f1xx_hal.h"
-
- int main(void){
-
-
- }
启动编译,如果没有错误就代表配置完成了。
1. 如果发现编译找不到config文件,看一下刚才创建工程中有一个修改config文件名的步骤是不是没有完成
2. 如果发现错误很多,可能是ARM编译器的版本问题。
随便打开一个hal库的.C文件,如果库引用前面有红叉,大概率是你的keil mdk 编译器不兼容,点击魔术棒,在Target中找到 code generation,选择build 960可以解决这个问题。
3. hex文件
工程输出的所有文件都在Objects文件夹中,默认在USER中,也可以在kei中使用魔术棒的Output选项进行修改。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。