对于这个库有些地方不是很清楚,stm32f3xx_hal_rcc.c和stm32f3xx_hal_rcc_ex.c这两个文件有些函数的定义是相同的,只不过在stm32f3xx_hal_rcc.c中的定义前有_weak修饰,为什么会这样。比如_weak HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct),这个函数在rcc.c中的函数体里没有代码实现,而在rcc_ex.c中有具体代码实现,不理解,请大神指教 |
比如在库中有一个定义:_weak void HAL_RCC_OscConfig(),在你自己的.c里面还有一个定义:
void HAL_RCC_OscConfig(),则使用你自己定义的而不是库里的,因为有_weak宏。
如果多个名字相同的只能有一个带有_weak,这就是说同名的定义只能最多有2个。
非常感谢。
同样感谢
即_.c文件里是一些通用的驱动C文件,而_ex.c里面是一些外设和模块的扩展驱动文件,包含了个别型号或系列的特定API(驱动),另外,如果新的API文件和默认API在程序中执行有冲突,新的API将覆盖默认API;
多谢指点
有标准库,不过这个HAL库用着也不错