今天在调试公司的一款产品的时候发现8M的晶振用完了,于是找了一个16M的替代
坑爹的就在这里,明明已经把时钟按照时钟树配置好了,但是串口等外设一直无法正常工作
折腾了一下午,终于发现这位老兄的文章http://www.eeworld.com.cn/mcu/article_2016101130348.html
在stm32f10x.h中91-97行的代码如下:
#if !defined HSE_VALUE #ifdef STM32F10X_CL #define HSE_VALUE ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */ #else #define HSE_VALUE ((uint32_t)16000000) /*!< Value of the External oscillator in Hz */ #endif /* STM32F10X_CL */ #endif /* HSE_VALUE */
其实STM32并不知道外部接多少频率的晶振,要在stm32f10x.h中给出,所以需要手动配置 HSE_VALUE ((uint32_t)16000000)