今天看I2C的示例的时候发现居然是先I2C_Cmd,然后再调用I2C_Init函数,但是我记得昨天看的ADC示例是先ADC_Init,再进行ADC_Cmd的,而且根据常识也感觉应该先进行设置,然后再使能的。于是我就翻看固件库使用手册,惊奇的发现ADC_Cmd函数下面有一行注意:
而在I2C函数下面却没有:
想知道为什么只有ADC需要先初始化再使能呢?
今天看I2C的示例的时候发现居然是先I2C_Cmd,然后再调用I2C_Init函数,但是我记得昨天看的ADC示例是先ADC_Init,再进行ADC_Cmd的,而且根据常识也感觉应该先进行设置,然后再使能的。于是我就翻看固件库使用手册,惊奇的发现ADC_Cmd函数下面有一行注意:
该回答引用GPTᴼᴾᴱᴺᴬᴵ
ADC(模数转换器)和I2C(串行总线)是两种不同类型的设备,它们在初始化和启用方面有所不同。
-
在ADC中,需要在调用ADC_Cmd函数之前设置各种参数,例如采样时间、转换模式、通道选择等。这些参数的设置将直接影响ADC的转换结果,因此需要在使能之前设置好。如果在使能之前调用ADC_Cmd函数,则可能会导致转换结果不准确。
-
而在I2C中,使能总线是第一步,因为在使能总线之前无法进行任何I2C通信。I2C_Init函数是用来初始化I2C总线的各种参数和时序的,但是并不会使能总线。因此,在调用I2C_Cmd函数之前,需要确保I2C总线已经初始化好,并且时钟已经配置正确。
-
总之,每种设备都有其特定的初始化和启用顺序,需要按照设备的要求进行操作。在使用固件库时,应该仔细查看设备的手册和固件库使用手册,了解每个函数的调用顺序和要求。