找回密码
 立即注册
×

00:00:00

您有一张0.1元限时体验卡,马上领取获得VIP尊享特权。

求问,如何获取内部不精准的32k时钟准确值

2024-9-5 20:43 来自 苏紫方璇 发布 @ 综合讨论

首先我知道这个低功耗的32k时钟十分不准,但还是想不加晶振的情况下,尽可能的利用这个做一些东西。现在想获取他在某一时刻的准确值。

我的思路是使用rtc的秒中断,设置一个100us一次的定时器,中断时记录计数值。准确频率值应该是(32768/计数值)x10000。
但是我发现,计算值,和用主时钟输出,示波器/另一个单片机pwm测量值不相同,比如计算值是24983Hz,示波器或pwm测量是25370Hz。
我想问下,这两者之间哪个较为准确,如果计算值不准确,能否看看是哪里的问题。万分感谢

附上主要代码
  1. #include        "config.h"
  2. #include        "STC8G_H_GPIO.h"
  3. #include        "STC8G_H_UART.h"
  4. #include        "STC8G_H_Delay.h"
  5. #include        "STC8G_H_NVIC.h"
  6. #include        "STC8G_H_Switch.h"

  7. bit f_1s;
  8. u16 timeCnt, lastCnt, fwt;
  9. float tmp;
  10. u8 st;

  11. void        GPIO_config(void)
  12. {
  13.     GPIO_InitTypeDef        GPIO_InitStructure;                //结构定义

  14.     P0M0 = 0x00;
  15.     P0M1 = 0x00;
  16.     P1M0 = 0x00;
  17.     P1M1 = 0x00;
  18.     P2M0 = 0x00;
  19.     P2M1 = 0x00;
  20.     P3M0 = 0x00;
  21.     P3M1 = 0x00;
  22.     P4M0 = 0x00;
  23.     P4M1 = 0x00;
  24.     P5M0 = 0x00;
  25.     P5M1 = 0x00;

  26.     GPIO_InitStructure.Pin  = GPIO_Pin_0 | GPIO_Pin_1;                //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7
  27.     GPIO_InitStructure.Mode = GPIO_PullUp;        //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
  28.     GPIO_Inilize(GPIO_P3, &GPIO_InitStructure);        //初始化
  29. }

  30. /***************  串口初始化函数 *****************/
  31. void        UART_config(void)
  32. {
  33.     COMx_InitDefine                COMx_InitStructure;                                        //结构定义

复制代码

免责声明:

本平台旨在开源共享精神,请勿发布敏感信息,任何违法信息我们将移交公安机关;

热门标签 更多

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-14 19:19 , Processed in 0.068977 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

返回顶部