[N32L4xx] adc时钟和HSI与HSE问题

[复制链接]
931|8
 楼主| ktdm1314 发表于 2022-10-10 11:10 | 显示全部楼层 |阅读模式
系统时钟选择的是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没有啥影响
7216981081ea70e0d0dd10dbd5c7926.png
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的外设进行操作
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

16

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部