ktdm1314 发表于 2022-10-10 11:10

adc时钟和HSI与HSE问题

系统时钟选择的是HSE外部时钟,ADC时钟为PPL的16分频,adc1M时钟选择外部时钟的8分频。
ADC_ConfigClk(ADC_CTRL3_CKMOD_PLL, RCC_ADCPLLCLK_DIV16);
RCC_ConfigAdc1mClk(RCC_ADC1MCLK_SRC_HSE, RCC_ADC1MCLK_DIV8);
现在遇到个问题。
写flash的时候,开启了内部HSI,写完了之后,想把HSI关闭了,以达到节能的目的。
但现在的问题是,如果把HSI关闭了,ADC初始化就会无法通过。
while(ADC_GetFlagStatusNew(ADC,ADC_FLAG_RDY) == RESET){};
始终卡在这。
有了解这部分的朋友吗?

sy12138 发表于 2022-10-10 11:33

把flash操作屏蔽看ADC能不能通过,以及看一下用的是不是最新版本的库

sy12138 发表于 2022-10-10 11:42

或者提供一下代码看看

ktdm1314 发表于 2022-10-10 13:27

sy12138 发表于 2022-10-10 11:33
把flash操作屏蔽看ADC能不能通过,以及看一下用的是不是最新版本的库

屏蔽flash后,ADC正常运行。但是不能关hsi

sy12138 发表于 2022-10-10 14:12

我在ADC例程打开再关掉HSI,对ADC没有啥影响

sy12138 发表于 2022-10-19 14:31

了解到这部分原理了

sy12138 发表于 2022-10-19 14:33

因为ADC_1M时钟的默认时钟源是HSI,所以要使能ADC_1M时钟的时候保证HSI是打开的,像你这种情况是把HSI关闭再初始化1M时钟,就会导致初始化不成功,卡在ADC等待就绪哪里那里

sy12138 发表于 2022-10-19 14:34

把HSI关闭之后,就算ADC_1M配成HSE也会失败

sy12138 发表于 2022-10-19 14:35

所以正确的顺序应该是先配置ADC,再对动HSI的外设进行操作
页: [1]
查看完整版本: adc时钟和HSI与HSE问题