当前位置: 首页 > article >正文

SYD881X RTC定时器事件在调用timeAppClockSet后会出现比较大的延迟

RTC定时器事件在调用timeAppClockSet后会出现比较大的延迟

这里RTC做了两个定时器一个是12秒,一个是185秒:

#define  RTCEVT_NUM  ((uint8_t) 0x02)//当前定时器事件数

#define  RTCEVT_12S  ((uint32_t)  0x0000002)//定时器1s事件
/*整分钟定时器事件,因为其余的事件追求的是时间的等长,但是在手环中还需要一个分钟的定时器,每次60秒的时候需要一个定时器事件,
比如60秒,120秒,180秒等,概况起来就是整(正)分钟*/
//#define  RTCEVT_whole_minute  ((uint32_t)  0x00000002)
#define  RTCEVT_185S  ((uint32_t) 0x0000004)//定时器185s事件

在12秒定时器的第三次事件设置万年历时间:

    uint8_t count=3;
	#ifdef	RTCEVT_12S
	if(RTC_EVT&RTCEVT_12S)
	{
		#ifdef _WDT_
		 wdt_clear();
		#endif
              if(count)
              {
                  count--;
                  if(count==0)
                  {
                      UTCTime       unix_time = 0;
                      UTCTimeStruct rtc_time = {0};
                      unix_time = 1734588550-94665600; 
                      ConvertUTCTime(&rtc_time,unix_time);
                      timeAppClockSet((uint8_t*)&rtc_time.year);
                  }
              }
		
		#if defined(_DEBUG_) || defined(_SYD_RTT_DEBUG_)
		dbg_printf("nLPO_12S_RTC_EVT_ID:%d\r\n",count);
		#endif

		RTC_EVT_Clr(RTCEVT_12S);
	}
	#endif

这里测试到调用timeAppClockSet后会出现比较大的延迟,本来12秒的定时器变成了19秒而且每次测试还不一样,还有可能是30多秒之类的:
在这里插入图片描述
这里奇怪的是把RTCEVT_12S这个定时器ID从0x02改成0x01等非0x02的数值这个问题就消失了,比如这里改成0x01在调用timeAppClockSet后也不会出现比较大的延迟:
在这里插入图片描述
这个就奇葩了!
最后查了很久发现是整分钟定时器默认的ID为0x02,即使不用这个整分钟定时器他依旧存在,调用timeAppClockSet的时候(不限于调用该函数)会进行一次整分钟的调整,就造成定时器出错,这里修改lib的bug后即使ID为0x02也不会出现这个问题了:
在这里插入图片描述
本文设计的代码可以从如下地址下载(工程:\Source Code\SYD8811_ble_peripheral\1.SYD8811_BLE_UART_notifyen_open_power):https://download.csdn.net/download/chengdong1314/90159565

原文地址:https://blog.csdn.net/chengdong1314/article/details/144605571
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/445736.html

相关文章:

  • 人工智能与物联网:智慧城市的未来
  • oracle位运算、左移右移、标签算法等
  • SpringBoot之核心配置
  • 常见的开源网络操作系统
  • GitLab创建用户,设置访问SSH Key
  • openai swarm agent框架源码详解及应用案例实战
  • 解锁看板工具的潜力:企业流程自动化的实践方法
  • Apache 如何监听多个端口 ?
  • 网站灰度发布?Tomcat的8005、8009、8080三个端口的作用什么是CDNLVS、Nginx和Haproxy的优缺点服务器无法开机时
  • 浏览器要求用户确认 Cookies Privacy(隐私相关内容)是基于隐私法规的要求,VUE 实现,html 代码
  • [Unity]Unity跨平台开发之Android打包和分发
  • Vue Web开发(十一)
  • 数据结构——队列的模拟实现
  • MySQL 8.0/8.4执行DDL会丢数据?是,但影响有限
  • React的img图片路径怎么写
  • dpdk中udp包的接受与发送
  • 什么是开关噪声抖动 (SNJ)?
  • 文章发稿平台哪个好用?哪个类型的媒体平台比较好过稿?
  • 2024年全球办公键盘行业总体规模、主要企业国内外市场占有率及排名
  • Liveweb视频融合共享平台在果园农场等项目中的视频监控系统搭建方案
  • Linux线程同步
  • 轻松上手:使用 Vercel 部署 HTML 页面教程
  • C#—扩展方法
  • 中小学教室多媒体电脑安全登录解决方案
  • Soul Android端稳定性背后的那些事
  • 智能化测绘装备的自主研发与市场应用