单片机(STM32)内部RC振荡器误差时间到底有多少
此例以STM32单片机为例来进行分析. 定时器每1ms的上下误差是多少us
先看数据表给出的误差值
可以看出 此单片机内部的高速RC振荡器的标准频率是16Mhz.
在标称电压不考虑温漂的情况下 误差上下 不超过 1% 即 15.88MHz — 16.08MHz
而考虑温漂(负温漂)就会高达到2% 即 16*0.02 = 0.32Mhz 即 15.68MHz — 16.32MHz
那我们就以最大的误差 2%(15.68MHz — 16.32MHz) 来分析 1ms的定时器 误差会有多少us?
分析之前,我们要先知道当前 单片机定时器的一个计数 需要消耗的周期 是 时钟周期 还是机器周期 还是指令周期
通常 定时器的 计数周期为 时钟周期 即主频, 以下以时钟周期为例进行分析
我们假设单片机进行16分频 此时的误差频率为 (0.98MHz — 1.02MHz)
此时计时 1S 需要进行 980000 ---- 1020000 次的 节拍计数
计时 1ms 需要进行 980 — 1020 次的 节拍计数
而1ms = 1000us
所以 定时1ms的误差 时间为 ±20us 1s的误差为±20ms
在分析完之后,其实我们 也可以 以更快的方式得到结果 那就是 1000*2% = 20us