你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
查看全部评分
安 发表于 2017-11-9 08:20 直接初始化就行了。HAL_I2C_DeInit(&hi2c2);以后,会把I2C时钟关掉,重新打开一下就可以了。 ...
安 发表于 2017-11-9 15:15 楼主,看一下对应的寄存器,时钟寄存器、IO配置寄存器,如果I2C寄存器没有值,大多是因为时钟未开启导致的 ...
安 发表于 2017-11-9 16:41 在线仿真,KEIL可以通过外设寄存器查看RCC寄存器的功能。
安 发表于 2017-11-11 08:34 一般重新初始化,直接初始化I2C就可以了。不用HAL_I2C_DeInit。仿真一下是否重新执行了开启时钟。 ...
STM32隐藏
5.18活动板子会不会是STM32L4呢
STM32 CUBE软件中找不到STM32L4系列单片机
Your UAT Feedback is needed within today.
应用
AAA
tiwen
BBBB
aaa
2222
评分
查看全部评分
谢谢答复,追源码是这样的。HAL_I2C_DeInit把时钟关掉,然后sda,sck的IO配置也释放掉。
再次初始化,又会把时钟使能,io配置为i2c。
疑惑是:为啥HAL_I2C_DeInit后,就初始化失效呢?
谢谢回复,确实我也是怀疑时钟没有起来,but如何确保时钟能够起来呢?函数是:__HAL_RCC_I2C2_CLK_ENABLE()
#define __HAL_RCC_I2C2_CLK_ENABLE() do { \
__IO uint32_t tmpreg = 0x00U; \
SET_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C2EN);\
/* Delay after an RCC peripheral clock enabling */ \
tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C2EN);\
UNUSED(tmpreg); \
} while(0U)
这边有个 /* Delay after an RCC peripheral clock enabling */
是不是需要我们在这函数外,再判断一下?谢谢,对时钟那块不太了解。
谢谢,仿真确实发现I2C2的时钟未使能。但是初始化的时候,有Enable了,请问为什么enable会失效呢?需要做哪些措施吗?
好的,谢谢~