之前跟着机智云社区某位大神的例程走,后来才发现原来这个版本自动生成的代码已经带有时间获取的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
效果展示:
之前跟着机智云社区某位大神的例程走,后来才发现原来这个版本自动生成的代码已经带有时间获取的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
效果展示: