STM32F4 | 新建工程模板——寄存器版本 | HAL库入门 | 新建工程模板——库函数版本

本文介绍了如何新建STM32F4的寄存器版本和HAL库版本工程模板,详细阐述了从创建工程、添加文件到配置HAL库的过程。文章涉及固件库与寄存器开发的区别,以及STM32CubeF4包的目录结构和关键文件夹的作用。在HAL库入门部分,解释了HAL库的功能和如何使用HAL库简化硬件操作。最后,文章提供了新建HAL库工程模板的步骤,包括创建文件夹结构、复制必要文件、设置头文件路径和全局宏定义等。
摘要由CSDN通过智能技术生成

一、新建工程模板——寄存器版本


  • 开发环境:MDK5
  • 软件包:STM32CubeF4包

  新建工程模板的一般步骤为:

  • 新建工程目录,复制需要的文件到工程目录
      首先,打开 MDK软件。然后点击 Project->New uVision Project
    在这里插入图片描述
    弹出如图所示界面:
    在这里插入图片描述
    之后,弹出选择器件的对话框,如图所示。因为 ALIENTEK 阿波罗 STM32F429 开发板所使用的 STM32 型号为 STM32F429IGT6,所以在这里我们选择:STMicroelectronics->STM32F4 Series->STM32F429->STM32F429IG->STM32F429IGTx
    在这里插入图片描述
    点击 OK,MDK 会弹出 Manage Run-Time Environment 对话框,如图所示:
    在这里插入图片描述
    这是 MDK5 新增的一个功能,在这个界面,我们可以添加自己需要的组件,从而方便构建开发环境,不过这里我们不做介绍。所以在图中所示界面,我们直接点击 Cancel,即可,得到如下界面。

      到这里,我们还只是建了一个框架,还需要添加启动代码,以及.c 文件等。需要引入下面文件
    在这里插入图片描述
    启动文件放入USER文件夹,头文件放入CORE文件夹。
    在这里插入图片描述
    在这里插入图片描述

  • 把工程需要的文件添加到工程
    在这里插入图片描述
    启动代码是一段和硬件相关的汇编代码。是必不可少的!这代码主要作用如下:1、堆栈(SP)的初始化;2、初始化程序计数器(PC);3、设置向量表异常事件的入口地址;4、调用 main 函数。
      这个启动文件,修改了Reset_Handler 函数,该函数修改后代码如下:

    ; Reset handler
    Reset_Handler    PROC
                     EXPORT  Reset_Handler             [WEAK]
            ;IMPORT  SystemInit					//寄存器代码,不需要在这里调用 SystemInit 函数,
    											//故屏蔽掉,库函数版本代码,可以留下.
    											//不过需要在外部实现 SystemInit 函数,否则会报错.
            IMPORT  __main
                     LDR     R0, =0xE000ED88    // 使能浮点运算 CP10,CP11
                     LDR     R1,[R0]
                     ORR     R1,R1,#(0xF << 20)
                     STR     R1,[R0]
    				 
                     ;LDR     R0, =SystemInit	//寄存器代码,未用到,屏蔽
                     ;BLX     R0				//寄存器代码,未用到,屏蔽
                     LDR     R0, =__main
                     BX      R0
                     ENDP
    

      这段代码,我们主要加入了开启 STM32F429 硬件 FPU 的代码,以使能 STM32F429 的浮点运算单元。其中,0xE000ED88 就是协处理器控制寄存器(CPACR)的地址,该寄存器的第 20~23位用来控制是否支持浮点运算,这里我们全设置为 1,以支持浮点运算。
      特别注意:我们在汇编代码里面使能了 FPU,所以在 MDK 里面,我们也要设置使用 FPU,否则可能代码会无法运行,设置方法如下:选择 Options for Target ‘Target1’,打开 Target 选项卡,在 Code Generation 里面,选择 Use Single Precision,如图所示:
    在这里插入图片描述

  • MDK中设置把头文件存放路径
    在这里插入图片描述

  • 配置MDK:全局宏定义等
    重要的预编译全局宏定义标识符:STM32F429xx
    在这里插入图片描述

  • 编写用户函数
    新建test.c文件,并添加到工程组中
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值