wy943103 发表于 5 天前

掉电唤醒定时器误差大,按手册读取掉电唤醒定时器频率,误差更大,什么原因?

掉电唤醒定时器误差大,按手册读取掉电唤醒定时器频率,误差更大,什么原因?
以下是读取掉电唤醒定时器频率,并重新设置定时器,SleepTime=5s时,实际唤醒时间间隔大约有8~9s的时间。


#define F32K_ADDR                (*(unsigned int volatile xdata *)(CPUIDBASE+0X09))


void GetWakeTime(uint SleepTime)
{ unsigned int tmp;
       
        tmp=SleepTime*(F32K_ADDR/16 -1);//WakupTimes掉电唤醒,1秒钟=(F32K/16-1)
                       
        WKTCL = tmp & 0xff;//设定掉电唤醒时钟,
        WKTCH = (tmp>>8)|0x80;///bit7 使能休眠定时器
}

神农鼎 发表于 5 天前

可以外部接个 RTC-32768Hz 晶振,来唤醒,1.5uA

wy943103 发表于 5 天前

神农鼎 发表于 2025-6-12 18:57
可以外部接个 RTC-32768Hz 晶振,来唤醒,1.5uA

掉电唤醒定时器只能用内部晶振吧。掉电唤醒定时器频率是35.6khz,SleepTime=5时,打印tmp=11120,都是正确的,但是唤醒时间就是不对。SleepTime=4时,大约5s,SleepTime=5时,大约6~7s,SleepTime=10时,大约13~14s. 也不知道哪里有问题。

_奶咖君_ 发表于 4 天前

wy943103 发表于 2025-6-12 20:40
掉电唤醒定时器只能用内部晶振吧。掉电唤醒定时器频率是35.6khz,SleepTime=5时,打印tmp=11120,都是正确 ...

没什么问题,本来就是误差大,,,你可以看手册相应的章节。。。出厂的给的 应该是在5V供电,25℃情况下的频率。根据实际的间隔手动修正一下得了。。,

要不就换带有RTC功能的单片机,,,接外部晶振。利用内置的RTC功能唤醒单片机。

再不行就外接RTC芯片。。

DebugLab 发表于 4 天前

内部低频时钟(约32K)作为掉电唤醒定时器,出于低功耗考虑,无抗温飘压飘电路,精度较低,不能作为RTC时钟使用,RTC使用内部低频时钟仅供测试(看秒在走就是RTC正常工作),不要在实际运行时使用
新手必读:
https://www.stcaimcu.com/thread-16535-1-1.html
页: [1]
查看完整版本: 掉电唤醒定时器误差大,按手册读取掉电唤醒定时器频率,误差更大,什么原因?