STM32创建HAL库工程 (手把手教)

目录

1.HAL库简介:

2.HAL库的优点:

3.HAL库工程的创建

1.新建我们要用到的文件夹

2.打开STM32为我们提供的固件包

3.打开Drivers文件夹

4.开始将固件库中的文件复制粘贴到我们新建的文件夹

(1) 配置我们的CMSIS文件

(2)配置我们的StartUp文件

(3)配置我们的Driver文件

(4)打开Keil软件新建工程

(5)在User里面添加main.c文件



前言:目前ST公司针对STM系列的单片机推出了三种库函数分别是标准库,HAL库和LL库。你问我为什么不说寄存器开发,以为太过于底层,非一般高手驾驭不了,我只是个小菜**,所以对于寄存器开发不敢妄自议论。在这三种库函数中ST公司已经不再对标准库进行维护了,按照目前的状况来说HA为学习的主流。针对HAL库ST公司也推出了一款图形配置工具CubeMX,可通过配置自动生成初始化代码。

1.HAL库简介:

HAL库是ST公司目前主力推行的开发方式,全称就是Hardware Abstraction Layer(抽象印象层)。库如其名,很抽象,一眼看上去不太容易知道他的作用是什么。但它相对于标准库来说更加简洁高效,同样的功能,标准库可能要用几句话,HAL库只需用一句话就够了。并且HAL库也很好的解决了程序移植的问题。因此HAL库是ST未来主推的库。

2.HAL库的优点:

1..最大可移植性

2.提供了一整套一致的中间件组件,如RTOS,USB,TCP/IP和图形等

3.通用的用户友好的API函数接口

4.ST新出的芯片已经没有标准库

5.HAL库已经支持STM32全线产品

OK简单了解完HAL库以后我们开始这篇文章的主题如何手建HAL库工程

3.HAL库工程的创建

注:HAL库工程的创建可按照自己的想法来建在这里只提供一个参考。

1.新建我们要用到的文件夹

2.打开STM32为我们提供的固件包

这里针对各个文件的用途我就不赘述了,有兴趣的可以自己了解一下。

其中与我们建工程有关的文件夹是Drivers

3.打开Drivers文件夹

在这里我们要简单了解一下各个文件夹的里面主要存放的东西

BSP:(板级支持包)这通常包含与特定开发板或硬件平台相关的驱动程序和配置。

CMSIS:是ARM Cortex微控制器软件接口标准。它包括了DSP库、Cortex-M内核及其设备文件、微控制器专用头文件、启动文件以及专用系统文件。

STM32F1xx_HAl_Driver:

文件包含了与STM32微控制器的各种外设(如GPIO、UART、SPI、I2C等)相关的驱动程序。这些驱动程序通常以源文件和头文件的形式存在,并提供了用于控制和管理这些外设的API(应用程序接口)。例如,stm32f10x_gpio.cstm32f10x_gpio.h文件分别包含了GPIO寄存器的操作函数和相关的宏定义。

4.开始将固件库中的文件复制粘贴到我们新建的文件夹

(1) 配置我们的CMSIS文件

<1.1>打开固件库中的Drivers的CMSIS文件,然后将Include文件夹的所有文件复制到我们所创的CMSIS文件中。(这里为了我们少添加某个文件我建议全部复制)

(2)配置我们的StartUp文件

打开固件库中的Drivers的CMSIS文件,然后打开Device文件夹

<2.1>

将这三个文件复制到我们建的StartUp文件中

<2.2>

将这个文件也复制到StartUp文件中

<2.3>

同样的将其复制到StartUp文件中

(3)配置我们的Driver文件

将这两个文件复制到我们建的Driver文件中

至此我们需要的文件就已经添加完了

(4)打开Keil软件新建工程

注意:在将我们建的工程放在MDK_ARM文件中

<4.1>

<4.2>

点击魔术棒

到这么工程已经配置差不多了

(5)在User里面添加main.c文件

OK,到这里我们的工程就建完了

  • 18
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
创建STM32F103 HAL库工程的步骤如下: 1. 打开Keil软件,点击File -> New Project,弹出新建工程对话框。 2. 在对话框中选择“STMicroelectronics” -> “STM32F103C6” -> “MDK-ARM”,然后输入工程名和保存路径,点击“Save”按钮。 3. 选择“Device”选项卡,选择正确的芯片型号和Flash大小等参数,然后点击“OK”按钮。 4. 在工程窗口中,右键点击“Src”文件夹,选择“New Items”,然后选择“C File”或者“C++ File”,输入文件名,点击“Add”按钮。这里以main.c为例。 5. 在新建的main.c文件中,编写代码。 6. 在工程窗口中,右键点击“Inc”文件夹,选择“New Items”,然后选择“Header File”,输入文件名,点击“Add”按钮。这里以stm32f1xx_hal_conf.h为例。 7. 在新建的stm32f1xx_hal_conf.h文件中,添加以下代码: ``` /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __STM32F1xx_HAL_CONF_H #define __STM32F1xx_HAL_CONF_H /* Includes ------------------------------------------------------------------*/ #include "stm32f1xx_hal.h" /* Exported types ------------------------------------------------------------*/ /* Exported constants --------------------------------------------------------*/ /* Exported macro ------------------------------------------------------------*/ #define assert_param(expr) ((void)0U) /* Exported functions prototypes ---------------------------------------------*/ /* Exported variables --------------------------------------------------------*/ #endif /* __STM32F1xx_HAL_CONF_H */ ``` 8. 在工程窗口中,右键点击“Src”文件夹,选择“New Items”,然后选择“C File”或者“C++ File”,输入文件名,点击“Add”按钮。这里以stm32f1xx_hal_msp.c为例。 9. 在新建的stm32f1xx_hal_msp.c文件中,添加以下代码: ``` #include "stm32f1xx_hal.h" void HAL_MspInit(void) { __HAL_RCC_AFIO_CLK_ENABLE(); } void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) { if(htim_base->Instance==TIM2) { /* Peripheral clock enable */ __HAL_RCC_TIM2_CLK_ENABLE(); } } void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) { if(htim_base->Instance==TIM2) { /* Peripheral clock disable */ __HAL_RCC_TIM2_CLK_DISABLE(); } } ``` 10. 在工程窗口中,右键点击“Inc”文件夹,选择“New Items”,然后选择“Header File”,输入文件名,点击“Add”按钮。这里以stm32f1xx_hal_msp.h为例。 11. 在新建的stm32f1xx_hal_msp.h文件中,添加以下代码: ``` #ifndef __STM32F1xx_HAL_MSP_H #define __STM32F1xx_HAL_MSP_H #include "stm32f1xx_hal.h" void HAL_MspInit(void); void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base); void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base); #endif /* __STM32F1xx_HAL_MSP_H */ ``` 12. 在工程窗口中,右键点击“Inc”文件夹,选择“New Items”,然后选择“Header File”,输入文件名,点击“Add”按钮。这里以stm32f1xx_it.h为例。 13. 在新建的stm32f1xx_it.h文件中,添加以下代码: ``` #ifndef __STM32F1xx_IT_H #define __STM32F1xx_IT_H #include "stm32f1xx_hal.h" void SysTick_Handler(void); #endif /* __STM32F1xx_IT_H */ ``` 14. 在工程窗口中,右键点击“Src”文件夹,选择“New Items”,然后选择“C File”或者“C++ File”,输入文件名,点击“Add”按钮。这里以stm32f1xx_it.c为例。 15. 在新建的stm32f1xx_it.c文件中,添加以下代码: ``` #include "stm32f1xx_hal.h" #include "stm32f1xx_it.h" void SysTick_Handler(void) { HAL_IncTick(); } ``` 16. 在工程窗口中,右键点击“Inc”文件夹,选择“New Items”,然后选择“Header File”,输入文件名,点击“Add”按钮。这里以main.h为例。 17. 在新建的main.h文件中,添加以下代码: ``` #ifndef __MAIN_H #define __MAIN_H #include "stm32f1xx_hal.h" #endif /* __MAIN_H */ ``` 18. 在工程窗口中,右键点击工程名,选择“Options for Target 'Target 1'”,弹出“Options for Target 'Target 1'”对话框。 19. 选择“C/C++”选项卡,然后在“Define”栏中添加以下宏定义: ``` USE_HAL_DRIVER ``` 20. 点击“OK”按钮保存设置。 现在,你的STM32F103 HAL库工程已经创建完成了,可以开始编写代码了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值