最近用到了飞思卡尔的KL系列MCU,内核为Cortex-M0+。该系列MCU有个特 {MOD},具有外部时钟监视功能,一旦外部时钟丢失,将会触发系统复位或者中断(可配置)。这对外部时钟失效后及时启用内部时钟提供了保障,只是内部RC振荡器稳定性及精度可能要差一些,RTC将不再精准。
现在外部晶振使用的是EPSON 32768Hz,通过内部FLL倍频为内核及总线提供时钟。该晶振有12.5pF负载电容的(常用),与单片机的负载电容需要匹配到最佳,才能获最佳精度。改系列单片机可启用内部(2,4,8,16pF)负载电容,所以晶振直接接了单片机引脚,无需外挂负载电容,只需开启内部的就能达到不错的精度,每天误差一秒之内。
我遇到的问题是,启用内部电容后,单片机复位。最后发现问题是,之前我开启了MCU的clock monitor功能,在启用内部电容的瞬间,时钟发生波动,导致系统复位(开启时钟监视中断,则会进入到中断里)。解决办法是,先启用内部负载电容,loop一段延时,再开启clock monitor功能。