N76E003内部有两个RC振荡器——16M(HIRC)、10K(LIRC)。高速16MHz误差在出厂时校准到±2%(全温度、全电压范围内),而10K低速振荡器,据说是35%的误差,一个小时定时,多出十几分钟就不足为奇了。
以下代码源于新唐官方例程,其运行原理大概是同时使用HLRC&LIRC定时器,两者同时开启,LIRC定时固定时间,溢出后查看HIRC计数值,求出差值(时间越短越精确),用于校准LIRC。
但在实际测试中,效果不理想,可能是个别芯片的问题,希望大家也能进行测试
//***********************************************************************************************************
// File Function: N76E003 wake up timer self calib demo code
//***********************************************************************************************************
#include <stdio.h>
#include "N76E003.h"
#include "Define.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_define.h"
#define TIMER_DIV12_VALUE_25_6ms 65536-34134 //34134*(12/16)=45000 us = 25.6 ms
#define TIMER_DIV12_VALUE_45ms 65536-60000 //60000*(12/16)=45000 us = 45 ms // Timer divider = 12
#define TIMER_45MS_BEGIN 5536
#