你好呀,
我正在为智能手表实施挂钟,我的设备是DA14585,SDK 6.4.2。
你能回答我的问题吗?非常感谢。
1. app_easy_timer适合实施挂钟吗?它准确了吗?我知道由于睡眠模式,我无法使用Systick计时器。
2.如果定时器到期并且系统睡眠,系统会唤醒定时器并实现回调函数直到函数完成吗?
3. DA14585中没有硬件RTC,所以我必须为日期和时间写一些代码,对吧?
我创造了一个app_easy_timer.之后system_init()功能在Arch_main.c.,它不起作用。
但是,我在schedule_whle_ble_on()函数后移动行,它有效。为什么?
int main(空白)
{
sleep_mode_t sleep_mode;
init_retention_mode();
//全球初始化
system_init();
user_wall_clock_timer = app_easy_timer((user_wall_clock_trigger_freq * 100),user_wall_clock_cb);//它不起作用
uint8_t a = 0;
而(1)
{
做 {
//安排所有待处理的事件
schedule_hile_ble_on();
如果(a == 0)
{
user_wall_clock_timer = app_easy_timer((user_wall_clock_trigger_freq * 100),user_wall_clock_cb);//有用
A ++;
}
....
设备:
嗨斯坦利_yeh,
这取决于你允许时钟的漂移量有多漂移,我们还没有对585振荡器的正确估计是为了实现RTC来实现的,但我不认为这将是一种可行的解决方案,因为我想你会注意到相当漂移。
2.是的,系统将从计时器经过时醒来,只要保持设备忙碌,即将到达主循环,并通过睡眠检查,那么设备将返回睡眠状态。
3.否,在585上没有RTC H / W,如果您想这样做,则必须使用该软件和定时器,但我不认为585上的实施是足够的可靠的时钟。
4. System_Init()后,设备将堆栈重置以及到目前为止发送到堆栈的所有消息,因此,这就是为什么您无法在该点设置计时器。因此,在执行reset命令后,可以正确设置计时器。
谢谢mt_dialog.
嗨mt_dialog,
我从你那里学到了很多东西。非常感谢。