本文作者是milershao
某晚一位不曾谋面的老熟人用QQ问我STM32L151MCU是否必须要开启HSI才能工作。该工程师也算是STM32 FANS,玩了32F1又玩32F2好久了,对STM32的东西相对比较熟。我印象中32L1系列没这个要求的,打开手册查看32L1的相关RCC部分内容,STM32L1的工作除了可用HSI外,还可以有HSE、PLL、MSI的其它选择。
当我告知STM32L151 MCU并非必须开HSI才能工作时,他说当注释掉库函数中开启HSI的命令行后,AD就起不来了。并说,之前用STM32F1/F2时就没这个问题,在STM32L1相关手册里没发现详细说明。哦原来这样。 其实,在32L1系列Reference Manual里的RCC部分,对ADC的时钟有详细的明确描述。
显然,STM32L1系列的ADC时钟只能来自于HSI。顺便提下,STM32L0芯片的ADC时钟也只能来自于HSI。尽管STM32L1与STM32F1\STM32F2同属一个CORTEX-M3内核,但外设安排并不一样,而是各具特色。 其实本案的问题非常简单,我觉得主要两方面原因导致应用堵塞。第一是思维定势使然,觉得32F1/F2都不必这样,32L1系列这里应该差不多。第二应该算是ST官方库带来的副作用,呵呵。STM32 提供的官方库极大的方便了开发,使得很多人基本不怎么看手册就搞定项目,有些人即使做了多个项目后对MCU手册框架还很陌生,导致类似YES OR NO的简单问题不能迅速地从技术手册中得到答案。
最后顺便提下,STM32的低功耗系列中,除了基于CORTEX-M3的STM32L1系列外,还有低端点基于CORTEX-M0+内核的STM32L0系列和相对高端点的基于CORTEX-M4内核的STM32L4系列。它俩都具有很高的性价比,也属于ST公司的主推产品系列,可以了解关注。
|