水墨画定时控制系统:gokit时间获取及其分析3
本帖最后由 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
效果展示:
好帖 mark2020.3.24 请教大神,星期怎么获取 这个应该不是从网络获取的时间呀,这个时间走了好就会有误差的
页:
[1]