前言:本文章目的是透过ST官方固件包(STM32CubeF1 firmware package)内的参考手册(Reference manual)UM1847与STM32F10xxx家族芯片的参考手册RM0008,分析HAL库是如何初始化时钟的。 分析这问题的原因有: - 时钟树是整个系统中十分关键的部分,没有时钟,其他模块就无法正常运作。
- HAL_Delay(uint32_t) 延迟功能函数为什么能在不同系统时钟(SYSCLK)情况下提供相同的延时功能。
HAL库文件的组成部分想分析HAL库从启动到初始化时钟的整个流程,就需要先了解HAL库文件的组成部分。 在STM32CubeF1的固件库文件的文档中,就提供了下图关于STM32CubeF1 firmware package structure(固件包的文件结构示意图)
从图中给出的信息中可以知道的是,一个工程文件中(一般由STM32CubeMX自动生成)"Drivers"目录内的包括了BSP(板级支持包)、CMSIS(微控制器软件接口标准)、HAL库和LL库。"Drivers"可以理解为C语言中的库文件,里面包含了ST提供的各种功能函数。而"Middlewares"中间层则是算应用层,提供给需要相关应用开发的开发者使用。
|