其他分享
首页 > 其他分享> > 基于HAL库的STM32H7工程开发系列教程一《手动配置基本工程》

基于HAL库的STM32H7工程开发系列教程一《手动配置基本工程》

作者:互联网

下载HAL库Cube文件包《STM32Cube_FW_H7_V1.9.0》
文件可以在ST官网下载,也可以从CubeMX中获取,具体下载方法自行解决。
下载后打开文件夹得到如下内容:
在这里插入图片描述
这个文件具体有哪些内容就不一一分析了,我们只用关心裸机工程需要用到哪些文件就好。
配置一个H7裸机工程需要Drivers中的部分内容:
在这里插入图片描述
BSP是官方给的案例,我们自己配置工程的话需要用到的是CMSIS和STM32H7xx_HAL_Driver两个文件夹的内容,在电脑上新建一个工程文件夹命名为:STM32H743XIH6_001并在该文件夹下创建如下文件夹:
在这里插入图片描述
红色框里的两个文件夹从库包中直接拷贝,其他三个文件夹自己创建
Keil_Project文件夹用来放置Keil工程文件
User用来放置main文件和Config配置文件
CMSIS和STM32H7xx_HAL_Driver两个文件夹中的中间有些是用不到的需要删除,最终留下的文件如下所示,其余的先删除,后边用到了再从库文件中拷贝,在删除的过程中,不要修改文件的目录结构,只是把不需要的文件和文件夹删除就可以了

├─Bsp
│      bsp_led.c
│      bsp_led.h
│      bsp_uart.c
│      bsp_uart.h
│      
├─CMSIS
│  ├─Core
│  │  └─Include
│  │          cmsis_armcc.h
│  │          cmsis_armclang.h
│  │          cmsis_armclang_ltm.h
│  │          cmsis_compiler.h
│  │          cmsis_gcc.h
│  │          cmsis_iccarm.h
│  │          cmsis_version.h
│  │          core_armv81mml.h
│  │          core_armv8mbl.h
│  │          core_armv8mml.h
│  │          core_cm0.h
│  │          core_cm0plus.h
│  │          core_cm1.h
│  │          core_cm23.h
│  │          core_cm3.h
│  │          core_cm33.h
│  │          core_cm35p.h
│  │          core_cm4.h
│  │          core_cm7.h
│  │          core_sc000.h
│  │          core_sc300.h
│  │          mpu_armv7.h
│  │          mpu_armv8.h
│  │          tz_context.h
│  │          
│  └─Device
│      └─ST
│          └─STM32H7xx
│              ├─Include
│              │      stm32h723xx.h
│              │      stm32h725xx.h
│              │      stm32h730xx.h
│              │      stm32h730xxq.h
│              │      stm32h733xx.h
│              │      stm32h735xx.h
│              │      stm32h742xx.h
│              │      stm32h743xx.h
│              │      stm32h745xx.h
│              │      stm32h747xx.h
│              │      stm32h750xx.h
│              │      stm32h753xx.h
│              │      stm32h755xx.h
│              │      stm32h757xx.h
│              │      stm32h7a3xx.h
│              │      stm32h7a3xxq.h
│              │      stm32h7b0xx.h
│              │      stm32h7b0xxq.h
│              │      stm32h7b3xx.h
│              │      stm32h7b3xxq.h
│              │      stm32h7xx.h
│              │      system_stm32h7xx.h
│              │      
│              └─Source
│                  └─Templates
│                      │  system_stm32h7xx.c
│                      │  
│                      └─arm
│                              startup_stm32h723xx.s
│                              startup_stm32h725xx.s
│                              startup_stm32h730xx.s
│                              startup_stm32h730xxq.s
│                              startup_stm32h733xx.s
│                              startup_stm32h735xx.s
│                              startup_stm32h742xx.s
│                              startup_stm32h743xx.s
│                              startup_stm32h745xx.s
│                              startup_stm32h747xx.s
│                              startup_stm32h750xx.s
│                              startup_stm32h753xx.s
│                              startup_stm32h755xx.s
│                              startup_stm32h757xx.s
│                              startup_stm32h7a3xx.s
│                              startup_stm32h7a3xxq.s
│                              startup_stm32h7b0xx.s
│                              startup_stm32h7b0xxq.s
│                              startup_stm32h7b3xx.s
│                              startup_stm32h7b3xxq.s
│                              
├─Keil_Project
│  │  STM32H743XIH6.uvguix.GUY
│  │  STM32H743XIH6.uvoptx
│  │  STM32H743XIH6.uvprojx
│  │  
│  ├─DebugConfig
│  │      Target_1_STM32H743XIHx_1.1.0.dbgconf
│  │      
│  ├─Listings
│  └─Objects
├─STM32H7xx_HAL_Driver
│  ├─Inc
│  │  │  stm32h7xx_hal.h
│  │  │  stm32h7xx_hal_adc.h
│  │  │  stm32h7xx_hal_adc_ex.h
│  │  │  stm32h7xx_hal_cec.h
│  │  │  stm32h7xx_hal_comp.h
│  │  │  stm32h7xx_hal_conf_template.h
│  │  │  stm32h7xx_hal_cordic.h
│  │  │  stm32h7xx_hal_cortex.h
│  │  │  stm32h7xx_hal_crc.h
│  │  │  stm32h7xx_hal_crc_ex.h
│  │  │  stm32h7xx_hal_cryp.h
│  │  │  stm32h7xx_hal_cryp_ex.h
│  │  │  stm32h7xx_hal_dac.h
│  │  │  stm32h7xx_hal_dac_ex.h
│  │  │  stm32h7xx_hal_dcmi.h
│  │  │  stm32h7xx_hal_def.h
│  │  │  stm32h7xx_hal_dfsdm.h
│  │  │  stm32h7xx_hal_dfsdm_ex.h
│  │  │  stm32h7xx_hal_dma.h
│  │  │  stm32h7xx_hal_dma2d.h
│  │  │  stm32h7xx_hal_dma_ex.h
│  │  │  stm32h7xx_hal_dsi.h
│  │  │  stm32h7xx_hal_dts.h
│  │  │  stm32h7xx_hal_eth.h
│  │  │  stm32h7xx_hal_eth_ex.h
│  │  │  stm32h7xx_hal_exti.h
│  │  │  stm32h7xx_hal_fdcan.h
│  │  │  stm32h7xx_hal_flash.h
│  │  │  stm32h7xx_hal_flash_ex.h
│  │  │  stm32h7xx_hal_fmac.h
│  │  │  stm32h7xx_hal_gfxmmu.h
│  │  │  stm32h7xx_hal_gpio.h
│  │  │  stm32h7xx_hal_gpio_ex.h
│  │  │  stm32h7xx_hal_hash.h
│  │  │  stm32h7xx_hal_hash_ex.h
│  │  │  stm32h7xx_hal_hcd.h
│  │  │  stm32h7xx_hal_hrtim.h
│  │  │  stm32h7xx_hal_hsem.h
│  │  │  stm32h7xx_hal_i2c.h
│  │  │  stm32h7xx_hal_i2c_ex.h
│  │  │  stm32h7xx_hal_i2s.h
│  │  │  stm32h7xx_hal_i2s_ex.h
│  │  │  stm32h7xx_hal_irda.h
│  │  │  stm32h7xx_hal_irda_ex.h
│  │  │  stm32h7xx_hal_iwdg.h
│  │  │  stm32h7xx_hal_jpeg.h
│  │  │  stm32h7xx_hal_lptim.h
│  │  │  stm32h7xx_hal_ltdc.h
│  │  │  stm32h7xx_hal_ltdc_ex.h
│  │  │  stm32h7xx_hal_mdios.h
│  │  │  stm32h7xx_hal_mdma.h
│  │  │  stm32h7xx_hal_mmc.h
│  │  │  stm32h7xx_hal_mmc_ex.h
│  │  │  stm32h7xx_hal_nand.h
│  │  │  stm32h7xx_hal_nor.h
│  │  │  stm32h7xx_hal_opamp.h
│  │  │  stm32h7xx_hal_opamp_ex.h
│  │  │  stm32h7xx_hal_ospi.h
│  │  │  stm32h7xx_hal_otfdec.h
│  │  │  stm32h7xx_hal_pcd.h
│  │  │  stm32h7xx_hal_pcd_ex.h
│  │  │  stm32h7xx_hal_pssi.h
│  │  │  stm32h7xx_hal_pwr.h
│  │  │  stm32h7xx_hal_pwr_ex.h
│  │  │  stm32h7xx_hal_qspi.h
│  │  │  stm32h7xx_hal_ramecc.h
│  │  │  stm32h7xx_hal_rcc.h
│  │  │  stm32h7xx_hal_rcc_ex.h
│  │  │  stm32h7xx_hal_rng.h
│  │  │  stm32h7xx_hal_rng_ex.h
│  │  │  stm32h7xx_hal_rtc.h
│  │  │  stm32h7xx_hal_rtc_ex.h
│  │  │  stm32h7xx_hal_sai.h
│  │  │  stm32h7xx_hal_sai_ex.h
│  │  │  stm32h7xx_hal_sd.h
│  │  │  stm32h7xx_hal_sdram.h
│  │  │  stm32h7xx_hal_sd_ex.h
│  │  │  stm32h7xx_hal_smartcard.h
│  │  │  stm32h7xx_hal_smartcard_ex.h
│  │  │  stm32h7xx_hal_smbus.h
│  │  │  stm32h7xx_hal_spdifrx.h
│  │  │  stm32h7xx_hal_spi.h
│  │  │  stm32h7xx_hal_spi_ex.h
│  │  │  stm32h7xx_hal_sram.h
│  │  │  stm32h7xx_hal_swpmi.h
│  │  │  stm32h7xx_hal_tim.h
│  │  │  stm32h7xx_hal_tim_ex.h
│  │  │  stm32h7xx_hal_uart.h
│  │  │  stm32h7xx_hal_uart_ex.h
│  │  │  stm32h7xx_hal_usart.h
│  │  │  stm32h7xx_hal_usart_ex.h
│  │  │  stm32h7xx_hal_wwdg.h
│  │  │  stm32h7xx_ll_adc.h
│  │  │  stm32h7xx_ll_bdma.h
│  │  │  stm32h7xx_ll_bus.h
│  │  │  stm32h7xx_ll_comp.h
│  │  │  stm32h7xx_ll_cordic.h
│  │  │  stm32h7xx_ll_cortex.h
│  │  │  stm32h7xx_ll_crc.h
│  │  │  stm32h7xx_ll_crs.h
│  │  │  stm32h7xx_ll_dac.h
│  │  │  stm32h7xx_ll_delayblock.h
│  │  │  stm32h7xx_ll_dma.h
│  │  │  stm32h7xx_ll_dma2d.h
│  │  │  stm32h7xx_ll_dmamux.h
│  │  │  stm32h7xx_ll_exti.h
│  │  │  stm32h7xx_ll_fmac.h
│  │  │  stm32h7xx_ll_fmc.h
│  │  │  stm32h7xx_ll_gpio.h
│  │  │  stm32h7xx_ll_hrtim.h
│  │  │  stm32h7xx_ll_hsem.h
│  │  │  stm32h7xx_ll_i2c.h
│  │  │  stm32h7xx_ll_iwdg.h
│  │  │  stm32h7xx_ll_lptim.h
│  │  │  stm32h7xx_ll_lpuart.h
│  │  │  stm32h7xx_ll_mdma.h
│  │  │  stm32h7xx_ll_opamp.h
│  │  │  stm32h7xx_ll_pwr.h
│  │  │  stm32h7xx_ll_rcc.h
│  │  │  stm32h7xx_ll_rng.h
│  │  │  stm32h7xx_ll_rtc.h
│  │  │  stm32h7xx_ll_sdmmc.h
│  │  │  stm32h7xx_ll_spi.h
│  │  │  stm32h7xx_ll_swpmi.h
│  │  │  stm32h7xx_ll_system.h
│  │  │  stm32h7xx_ll_tim.h
│  │  │  stm32h7xx_ll_usart.h
│  │  │  stm32h7xx_ll_usb.h
│  │  │  stm32h7xx_ll_utils.h
│  │  │  stm32h7xx_ll_wwdg.h
│  │  │  stm32_assert_template.h
│  │  │  
│  │  └─Legacy
│  │          stm32_hal_legacy.h
│  │          
│  └─Src
│          stm32h7xx_hal.c
│          stm32h7xx_hal_adc.c
│          stm32h7xx_hal_adc_ex.c
│          stm32h7xx_hal_cec.c
│          stm32h7xx_hal_comp.c
│          stm32h7xx_hal_cordic.c
│          stm32h7xx_hal_cortex.c
│          stm32h7xx_hal_crc.c
│          stm32h7xx_hal_crc_ex.c
│          stm32h7xx_hal_cryp.c
│          stm32h7xx_hal_cryp_ex.c
│          stm32h7xx_hal_dac.c
│          stm32h7xx_hal_dac_ex.c
│          stm32h7xx_hal_dcmi.c
│          stm32h7xx_hal_dfsdm.c
│          stm32h7xx_hal_dfsdm_ex.c
│          stm32h7xx_hal_dma.c
│          stm32h7xx_hal_dma2d.c
│          stm32h7xx_hal_dma_ex.c
│          stm32h7xx_hal_dsi.c
│          stm32h7xx_hal_dts.c
│          stm32h7xx_hal_eth.c
│          stm32h7xx_hal_eth_ex.c
│          stm32h7xx_hal_exti.c
│          stm32h7xx_hal_fdcan.c
│          stm32h7xx_hal_flash.c
│          stm32h7xx_hal_flash_ex.c
│          stm32h7xx_hal_fmac.c
│          stm32h7xx_hal_gfxmmu.c
│          stm32h7xx_hal_gpio.c
│          stm32h7xx_hal_hash.c
│          stm32h7xx_hal_hash_ex.c
│          stm32h7xx_hal_hcd.c
│          stm32h7xx_hal_hrtim.c
│          stm32h7xx_hal_hsem.c
│          stm32h7xx_hal_i2c.c
│          stm32h7xx_hal_i2c_ex.c
│          stm32h7xx_hal_i2s.c
│          stm32h7xx_hal_i2s_ex.c
│          stm32h7xx_hal_irda.c
│          stm32h7xx_hal_iwdg.c
│          stm32h7xx_hal_jpeg.c
│          stm32h7xx_hal_lptim.c
│          stm32h7xx_hal_ltdc.c
│          stm32h7xx_hal_ltdc_ex.c
│          stm32h7xx_hal_mdios.c
│          stm32h7xx_hal_mdma.c
│          stm32h7xx_hal_mmc.c
│          stm32h7xx_hal_mmc_ex.c
│          stm32h7xx_hal_msp_template.c
│          stm32h7xx_hal_nand.c
│          stm32h7xx_hal_nor.c
│          stm32h7xx_hal_opamp.c
│          stm32h7xx_hal_opamp_ex.c
│          stm32h7xx_hal_ospi.c
│          stm32h7xx_hal_otfdec.c
│          stm32h7xx_hal_pcd.c
│          stm32h7xx_hal_pcd_ex.c
│          stm32h7xx_hal_pssi.c
│          stm32h7xx_hal_pwr.c
│          stm32h7xx_hal_pwr_ex.c
│          stm32h7xx_hal_qspi.c
│          stm32h7xx_hal_ramecc.c
│          stm32h7xx_hal_rcc.c
│          stm32h7xx_hal_rcc_ex.c
│          stm32h7xx_hal_rng.c
│          stm32h7xx_hal_rng_ex.c
│          stm32h7xx_hal_rtc.c
│          stm32h7xx_hal_rtc_ex.c
│          stm32h7xx_hal_sai.c
│          stm32h7xx_hal_sai_ex.c
│          stm32h7xx_hal_sd.c
│          stm32h7xx_hal_sdram.c
│          stm32h7xx_hal_sd_ex.c
│          stm32h7xx_hal_smartcard.c
│          stm32h7xx_hal_smartcard_ex.c
│          stm32h7xx_hal_smbus.c
│          stm32h7xx_hal_spdifrx.c
│          stm32h7xx_hal_spi.c
│          stm32h7xx_hal_spi_ex.c
│          stm32h7xx_hal_sram.c
│          stm32h7xx_hal_swpmi.c
│          stm32h7xx_hal_tim.c
│          stm32h7xx_hal_timebase_rtc_alarm_template.c
│          stm32h7xx_hal_timebase_rtc_wakeup_template.c
│          stm32h7xx_hal_timebase_tim_template.c
│          stm32h7xx_hal_tim_ex.c
│          stm32h7xx_hal_uart.c
│          stm32h7xx_hal_uart_ex.c
│          stm32h7xx_hal_usart.c
│          stm32h7xx_hal_usart_ex.c
│          stm32h7xx_hal_wwdg.c
│          stm32h7xx_ll_adc.c
│          stm32h7xx_ll_bdma.c
│          stm32h7xx_ll_comp.c
│          stm32h7xx_ll_cordic.c
│          stm32h7xx_ll_crc.c
│          stm32h7xx_ll_crs.c
│          stm32h7xx_ll_dac.c
│          stm32h7xx_ll_delayblock.c
│          stm32h7xx_ll_dma.c
│          stm32h7xx_ll_dma2d.c
│          stm32h7xx_ll_exti.c
│          stm32h7xx_ll_fmac.c
│          stm32h7xx_ll_fmc.c
│          stm32h7xx_ll_gpio.c
│          stm32h7xx_ll_hrtim.c
│          stm32h7xx_ll_i2c.c
│          stm32h7xx_ll_lptim.c
│          stm32h7xx_ll_lpuart.c
│          stm32h7xx_ll_mdma.c
│          stm32h7xx_ll_opamp.c
│          stm32h7xx_ll_pwr.c
│          stm32h7xx_ll_rcc.c
│          stm32h7xx_ll_rng.c
│          stm32h7xx_ll_rtc.c
│          stm32h7xx_ll_sdmmc.c
│          stm32h7xx_ll_spi.c
│          stm32h7xx_ll_swpmi.c
│          stm32h7xx_ll_tim.c
│          stm32h7xx_ll_usart.c
│          stm32h7xx_ll_usb.c
│          stm32h7xx_ll_utils.c
│          
└─User
        main.c
        main.h
        stm32h7xx_hal_conf.h
        systemclock.c
        systemclock.h

文件添加完成之后,在keil中新建一个H7的工程,讲工程中新建如下几个组把相关的源文件给添加进去
在这里插入图片描述
添加文件之后需要在keil中添加如下配置
在这里插入图片描述
在Define中添加了两个宏,USE_HAL_DRIVER这个宏表示用的是HAL库,在编译的时候会把HAL库的驱动进行编译,STM32H743xx这个宏表示的是用到H743的芯片(不同的芯片对应不同的宏定义)
为什么是这两个宏定义呢,在以下代码的位置可以看到原因
在这里插入图片描述
有了这个宏才能将stm32h7xx_hal.h头文件添加进去,这个头文件中包含了HAL库各个外设驱动文件
在这里插入图片描述
有了上边的宏定义才能将stm32h743xx.h头文件包含进去,这个头文件是定义了对应芯片的各个外设基地址和寄存器地址等相关的内容
添加完以上代码之后在main.c和main.h文件中添加如下代码
main.h文件中内容

#ifndef __MAIN_H
#define __MAIN_H

#ifdef __cplusplus
extern "C" {
#endif

#include "stm32h7xx_hal.h"

#ifdef __cplusplus
}
#endif

#endif /* __MAIN_H */

main.c文件中内容

/**
 * @file main.c
 * @author 匠心智造 (QQ资料群:723687715)
 * @brief 
 * @version 0.1
 * @date 2021-07-13
 * 
 * @copyright Copyright (c) 2021
 * 
 */
#include "main.h"

int main(void)
{
	while(1)
	{
		;
	}
}

代码添加完成之后进行编译,编译之后会出现如下错误
在这里插入图片描述
这个错误是这几个文件都是官方给的模板,并不是底层驱动文件,把含有template的都移除,编译之后还有如下两个错误
在这里插入图片描述
这个LL文件一般用不到,也先把这个移除再编译就没有错了,基本的工程结构就配置完成了。但是这个工程还不不能直接运行,下一篇文章讲外部HSE和LSE时钟的配置,通用GPIO端口的配置。
源代码可添加代码中的QQ群中下载。

标签:core,hal,工程,ll,startup,STM32H7,HAL,stm32h7xx,ex
来源: https://blog.csdn.net/kangxubo/article/details/118685237