选用的开发板为 STM32F401RE Nucleo,MCU型号F401RET6。
下载解压STM32最新HAL库:
里面也包含了开发板在内的工程文件,可以直接使用。
但我们的目的是定制各个功能,所以要学会自己创建工程。
首先找到库里面的内核、HAL库、以及任何应用都需要进行配置的基本文件。
解压后文件:
将内核相关信息,即驱动文件夹内的头文件和源文件拷贝到自己的工程中:
Core文件夹内,包含了芯片底层的汇编等驱动文件。
按我的理解,与芯片描述相关的放在Core中,工程应用相关的驱动文件放在Driver_Lib,实现功能的程序都放在PRG里,个人习惯。
那么内核需要用到的文件至少包含以下:
驱动文件夹里先把源文件和头文件全部复制过来。
此外,因为不同应用使用不同的外设,因此有些并不通用的配置,不在源文件里,必须自行修改。ST提供了例程,可以参考例程工程文件,进行适当修改,我这个nucleo的板子不改也能用。
源文件如果不显式调用,则相关配置不运行,最小工程里面必须要显式调用几个基础功能,否则HAL库很难编译通过,即使编译通过了,芯片也会工作不正常。先看工程里面需要显式调用哪些SRC文件:
其中的Cortex、RCC、EXTI、GPIO在SRC目录下已有,Main的头文件是从例程里面拷过来的,只有几行很简单。此外需要在目标机配置中添加全局声明和Include path:
包含路径:core 、Driver_Lib\Inc、还有就是用户目录,我个人习惯定义为PRG。
主程序直接拿F401nucleo例程里一个空的main程序跑就行,当然不是完全空的,里面进行了简单的时钟、中断配置。添加进工程,修改下载调试器为stlink,下载和debug: