你好,
我正在实现一个智能手表挂钟,我的设备是DA14585 SDK 6.4.2。
你能回答我的问题吗?非常感谢。
1.app_easy_timer适合实现挂钟吗?这是准确的吗?我知道我不能使用Systick定时器,因为是睡眠模式。
2.如果计时器过期,系统正在休眠,系统是否会为计时器而唤醒,并实现回调函数,直到函数完成?
3.DA14585中没有硬件RTC,所以我必须写一些日期和时间的代码,对吗?
4.我创建了一个app_easy_timer后system_init ()函数arch_main.c,它不起作用。
但是,我将这一行移动到schedule_while_ble_on()函数之后,它工作了。为什么?
int主要(空白)
{
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_while_ble_on ();
如果(a = = 0)
{
user_wall_clock_timer = app_easy_timer((USER_WALL_CLOCK_TRIGGER_FREQ * 100), user_wall_clock_cb);/ /它的工作原理
+ +;
}
....
设备:
嗨stanley_yeh,
1.,取决于你将允许时钟漂移,我们没有任何估计在585年如何适当的振荡器将为了实现清债信托公司,但我不认为这将是一个可行的解决方案,因为我认为你会发现漂移。
2.是的,系统将从计时器过期时醒来,并将保持清醒,只要保持设备忙碌,如果它到达主while循环,并通过睡眠检查,然后设备将回到睡眠。
3.不,在585上没有RTC h/w,是的,如果你想这样做,你将不得不使用软件和定时器,但我再次认为在585上的实现将不足以提供一个可靠的时钟。
4.在system_init()之后,设备将重置堆栈以及迄今为止发送到堆栈的所有消息,所以,这就是为什么你不能在这一点上设置计时器的原因。所以在执行reset命令之后,您可以正确地设置您的计时器。
由于MT_dialog
嗨MT_dialog,
我从你身上学到了很多东西。非常感谢。