黑皮男 发表于 2015-5-26 11:43:56

关于HAL库

对于这个库有些地方不是很清楚,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中有具体代码实现,不理解,请大神指教

iSine 发表于 2015-5-26 12:16:58

看下函数上面的说明,有简单介绍函数的说明用途。

moyanming2013 发表于 2015-5-26 13:37:03

_weak宏表示如果有其他的定义则废弃本定义。
比如在库中有一个定义:_weak void HAL_RCC_OscConfig(),在你自己的.c里面还有一个定义:
void HAL_RCC_OscConfig(),则使用你自己定义的而不是库里的,因为有_weak宏。
如果多个名字相同的只能有一个带有_weak,这就是说同名的定义只能最多有2个。

黑皮男 发表于 2015-5-26 15:20:41

moyanming2013 发表于 2015-5-26 13:37
_weak宏表示如果有其他的定义则废弃本定义。
比如在库中有一个定义:_weak void HAL_RCC_OscConfig(),在你 ...

非常感谢。

黑皮男 发表于 2015-5-26 15:20:56

iSine 发表于 2015-5-26 12:16
看下函数上面的说明,有简单介绍函数的说明用途。

同样感谢

为什么是EEFOCUS小白 发表于 2015-5-27 09:12:26

2楼正解

zzhere2007 发表于 2015-5-27 09:38:18

路过,看看

逍遥李 发表于 2015-5-27 09:48:39

这个在“UM1725 User Manual”这个官方文件里面有详细说明,如图:


即_.c文件里是一些通用的驱动C文件,而_ex.c里面是一些外设和模块的扩展驱动文件,包含了个别型号或系列的特定API(驱动),另外,如果新的API文件和默认API在程序中执行有冲突,新的API将覆盖默认API;

stary666 发表于 2015-5-27 09:55:51

学习了。。。。

黑皮男 发表于 2015-5-27 11:47:28

逍遥李 发表于 2015-5-27 09:48
这个在“UM1725 User Manual”这个官方文件里面有详细说明,如图:




多谢指点
页: [1] 2
查看完整版本: 关于HAL库