你好,我使用的是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);
}
}
}
app_easy_timer(),这个函数使用完是不是必须要关掉?同时使用的话最多可以使用多少个?有没有相关的资料给我推荐下吗?
你好,
app_easy_timer是一次性计时器,超时执行完超时处理程序后,就释放了。无需自己再取消。
你程序里的做法是正确的,即在取消之前,有对定时器处理的有效性进行判断。
最多只能”同时“申请:APP_TIMER_MAX_NUM个。这个值可由用户定义,个数越多,需要的内存越大。
SDK3.0.6.0这个版本中的ke_timer可以定义多少个?里面没有用户自定义数量的参数
你好,
SDK3已经过于久远不再支持,是否考虑移植到SDK5