5个职位/ 0个新
最后发表
kongxiangmin
离线
最后看到:1年4个月前
加入:2019-01-02 01:33
系统定时函数问题

你好,我使用的是DA14580, SDK5.0.4 /项目/ target_apps / ble_examples / ble_app_all_in_one。

我使用系统定时函数app_easy_timer(),遇到了一个问题。
我调用这个函数之后,只要加入app_easy_timer_cancel()函数,那么下面的函数只会循环一次。

大概代码如下:
uint16_t receyle_read_timer_hnd = EASY_TIMER_INVALID_TIMER;
空白read_body_sensor_mag_reset(空白)
{
arch_printf(“好”);
open_flag = 0;
如果(person_in = = false)
{
如果(GPIO_GetPinStatus (GPIO_BODY_PORT GPIO_BODY_PIN)) / /人感检测到有人
{
arch_printf(“有人\ r \ n”);
init_judege (&magx_init &magy_init &magz_init); / /地磁数据更新
person_in = true;
cycle_counter = 0;
last_state = person_in;
time_flag = 0;
stop_flag = 0;
reset_flag = 0;
body_time = 0;
send_data [6] = 6;
toilet_indicate_data (send_data 20);
send_data [6] = 0;
如果(receyle_read_timer_hnd ! = EASY_TIMER_INVALID_TIMER)
{
app_easy_timer_cancel (receyle_read_timer_hnd);
receyle_read_timer_hnd = 0;
}
}
Else if(cycle_counter > 5)
{
open_flag = 4;
cycle_counter = 0;
time_flag = 0;
stop_flag = 0;
reset_flag = 0;
body_time = 0;
如果(receyle_read_timer_hnd ! = EASY_TIMER_INVALID_TIMER)
{
app_easy_timer_cancel (receyle_read_timer_hnd);
receyle_read_timer_hnd = 0;
}
}
如果(cycle_counter < 6)
{
cycle_counter + +;
read_body_sensor_mag_reset receyle_read_timer_hnd = app_easy_timer (265);
}
}
}

关键词:
设备:
kongxiangmin
离线
最后看到:1年4个月前
加入:2019-01-02 01:33
app_easy_timer ()

app_easy_timer(),这个函数使用完是不是必须要关掉?同时使用的话最多可以使用多少个?有没有相关的资料给我推荐下吗?

CYibin
离线
最后看到:7个月1周前
工作人员
加入:2017-12-14 02:48
你好,

你好,

app_easy_timer是一次性计时器,超时执行完超时处理程序后,就释放了。无需自己再取消。

你程序里的做法是正确的,即在取消之前,有对定时器处理的有效性进行判断。

最多只能”同时“申请:APP_TIMER_MAX_NUM个。这个值可由用户定义,个数越多,需要的内存越大。

对话框
离线
最后看到:1年1个月前
加入:比较2019-09-30 04:19
SDK3.0.6.0这个版本中的客

SDK3.0.6.0这个版本中的ke_timer可以定义多少个?里面没有用户自定义数量的参数

CYibin
离线
最后看到:7个月1周前
工作人员
加入:2017-12-14 02:48
你好,

你好,

SDK3已经过于久远不再支持,是否考虑移植到SDK5