在STM32芯片中,内部RTC(Real-Time Clock)用于实现精准的日期和时间控制,但与外部RTC相比,内部RTC的精度和稳定性可能会有所不足,这主要是由于内部RTC使用的晶振精度较低,时间漂移较大,而外部RTC则使用的是高精度晶体振荡器,精度和稳定性较高。
因此,当需要进行非常精确的时间控制或需要长时间保持时,往往使用外部RTC进行时间控制。
另一个原因是,内部RTC通常需要与后备电池一起使用来实现断电后继续计时的功能。但实际生产过程中,很多设备并不需要在掉电后依然持续计时,因此使用后备电池会增加成本和设计复杂度,所以使用内部RTC并不是最优选择。
在实际开发中,将内部RTC口往往被其他外设或应用所占用,例如串口、SPI、I2C等。在这种情况下,使用内部RTC将会造成很大的资源浪费,对于需要使用多个外设或实现复杂功能的设备来说,这种方法不划算。
最后,使用内部RTC还需要满足一些特殊条件,例如必须保证设备总是通电,需要额外的后备电源或超级电容来实现断电续时功能;还需要保证RTC的时钟频率与外设接口的时钟频率相匹配,否则会导致不同步的情况,并影响设备运行效率。
因此,在一些对RTC精度、稳定性和复杂度要求不高的应用场景中,为了节约成本、简化设计,往往会采用不使用内部RTC的方案。