收藏官网首页
查看: 20241|回复: 3

水墨画定时控制系统:gokit时间获取及其分析3

2

主题

3

帖子

92

积分

注册会员

Rank: 2

积分
92
跳转到指定楼层
楼主
发表于 2017-11-25 12:11:11 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
注册成为机智云开发者,手机加虚拟设备快速开发
本帖最后由 tinnu 于 2018-2-7 21:47 编辑

之前跟着机智云社区某位大神的例程走,后来才发现原来这个版本自动生成的代码已经带有时间获取的API,估计是大神那个时候的版本太低才需要自己写。
前面两张帖子是我根据大神例程的学习机智云代码结构的总结,不过不知道是什么原因发不出来。

(一)网络时间获取的API
1、官方定义的命令:

对应的操作函数:

时间获取函数:

那么只需要在case里面更新时间就可以了。


2、来分析一下gizGetTimerCount()函数:
看看timerMsCount:


看看gizTimerMs():


看看TIMER_IRQ_FUN():


竟然是个中断!


这就是个定时器3的中断处理函数!
看看定时器3的使能是怎么样的:

可以算出溢出时间是(7199+1)*(9+1)/72000000=0.001s=1ms,其实从gizTimerMs的函数名就可以看出来。
综上所述,timerMsCount就是一个计算从开机到目前的毫秒数,它的定义:
static uint32_t timerMsCount;
是一个无符号32位整型,算一下,可以整整维持接近50天连续开机的计算。
所以例程中这一句:

如果要定时1s的话,SAMPLING_TIME_MAX=1000。

(二)实现:
定义结构体:
typedef struct{
        uint16_t year;
        uint16_t month;
        uint16_t day;
        uint16_t hour;
        uint16_t minute;
        uint16_t second;
}mytime_t;
extern mytime_t mytime;


在case ACK_GET_NTP,里面:


userHandle里面,上面定义一个:#define SAMPLING_TIME_MAX 1000


效果展示:







1

主题

9

帖子

111

积分

注册会员

Rank: 2

积分
111
沙发
发表于 2020-3-24 03:05:48 | 只看该作者
好帖 mark2020.3.24

0

主题

4

帖子

318

积分

中级会员

Rank: 3Rank: 3

积分
318
板凳
发表于 2020-3-26 23:29:36 | 只看该作者
请教大神,星期怎么获取

5

主题

27

帖子

533

积分

高级会员

Rank: 4

积分
533
地板
发表于 2020-5-28 17:33:36 | 只看该作者
这个应该不是从网络获取的时间呀,这个时间走了好就会有误差的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表