- HAL库的目录很简单,就两个文件夹,分别是
Inc
和Src
。先整体移到你的工程中去。 - 处理其中以
_template
结尾的文件,将它们移动到Inc
和Src
目录之外,也就是单独拎出来,重命名这些文件,将名字中的_template
删除,这些文件是要用户修改的。stm32f0xx_hal_conf_template.h
,重命名后保留,用于裁剪库。stm32f0xx_hal_msp_template.c
,重命名后保留,用于调用驱动时对相应的GPIO引脚初始化。stm32_assert_template.h
,重命名后保留,可以自己定义断言函数。stm32f0xx_hal_timebase_rtc_alarm_template.c
,先删除,用的时候再移回来。stm32f0xx_hal_timebase_rtc_wakeup_template.c
,先删除,用的时候再移回来。stm32f0xx_hal_timebase_tim_template.c
,先删除,用的时候再移回来。
- 在编译器中添加宏定义,宏定义的名字针对不同芯片,按如下表格来。
- HAL库的启动官方是调用了
HAL_Init()
,但它会对SysTick
初始话并开启中断。这里选择不调用这个函数,然后在main.c
开头加上Flash prefetch 的处理语句,__HAL_FLASH_PREFETCH_BUFFER_ENABLE();
至此,移植完毕,Inc
和 Src
里面的东西不要动,如果要DIY,参考它的代码自定义函数实现。这样的好处是HAL库是干净的,且官方有更新时,直接替换官方的 Inc
和 Src
目录(先把官方的 _template
结尾的文件删掉,然后覆盖),而工程的其余部分不用动。
番外:
第一次从零开始创建工程文件的时候,直接参考如: Projects\STM32F030R8-Nucleo\Examples
这个里面的工程文件,看看它用了哪些文件,直接照搬照抄过来。如,system_stm32f0xx.c
, startup_stm32f030x8.s
, STM32F030R8Tx_FLASH.ld
等像这些文件可以直接搬过来。