你好呀,
我正在为智能手表实施一个挂墙时钟,我的设备是DA14585,具有SDK 6.4.2。
你能回答我的问题吗?非常感谢。
1. App_easy_Timer适合实施挂钟吗?它是否准确?我知道由于睡眠模式,我无法使用Systick计时器。
2.如果定时器到期并系统睡眠,系统会唤醒定时器并实现回调函数直到函数完成吗?
3. DA14585中没有硬件RTC,所以我必须为日期和时间写一些代码?
我创造了一个app_easy_timer.之后system_init()功能in.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 ++;
}
....
设备:
嗨Stanley_yeh,
这取决于你允许你的时钟有多少漂移,我们还没有对585个振荡器的措施进行任何估计,以便才能实现RTC,但我不认为这将是一种可行的解决方案,因为我想你会注意到相当漂移。
2.是的,系统将从计时器经过时醒来,只要保持设备忙碌,即将到达主循环的主机,并通过睡眠检查,那么设备将返回睡眠状态。
3.否,585上没有RTC H / W,是的,如果您想这样做,则必须使用软件和定时器,但我不认为585上的实施是足够的可靠的时钟。
4. System_Init()后,设备随到的所有消息都将堆栈重置为迄今为止向堆栈发送,因此,这就是为什么您无法在该点设置计时器。因此,执行reset命令后,可以正确设置计时器。
谢谢mt_dialog.
嗨mt_dialog,
我从你那里学到了很多东西。非常感谢。