最近要使用STM32F4芯片做开发,根据自己的编程习惯,做一些学习记录,以便于自己以后查阅。我们在设计电路的时候,一般都会设计MCU使用外部晶振,笔者工作中曾经遇到外部晶振故障芯片无法正常启动问题(无内部晶振老的MCU),使用示波器发现的,在更换了外部晶振以后,问题就解决了。由此笔者想到,STM32F4系列自带内部晶振,在外部晶振故障的时候完全可以使用内部晶振,确保软件能够正常工作。因为F4外部晶振通常使用168Mhz,而内部晶振默认并不是168Mhz,参考了 上一些资料,查阅了芯片手册,设计了一个软件保护,当外部晶振故障的时候,自动使用内部晶振锁定为168Mhz。
STM32官方巡回演讲里面介绍说内部晶振现在已经能够可靠使用了,我决定实测一下,结果发现这个说法不太准确。使用系统滴答定时器中断里普通IO用100HZ方波间接测量,示波器实测使用外部晶振100HZ很稳定,使用内部晶振在100–103HZ跳动,所以最新官方演讲说内部晶振稳定性很好可以直接使用这个说法有待商酌。
具体实现思路如下,编写外部晶振软件设定函数,编写内部晶振软件设定函数,在时钟安全中断里做好时钟切换工作。代码如下
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!