CC2540 无法停止定时器
我的代码如下:
#define FAST_LED_PERIOD (500) /* 200ms */
#define SLOW_LED_PERIOD (1000) /* 1s */
#define ADVERTISING_PERIOD (1000*4) /* 1min */
uint16 LedAdvertising_ProcessEvent(uint8 task_id, uint16 events)
{
static uint32 led_count;
static uint8 led_mask = 0x0f;
static uint8 led_value = 0x0f;
uint16 sum = 0;
if (events & ADVERTISING_EVENT)
{
osal_start_timerEx(LedAdvertising_TaskID, FAST_LED_EVENT, FAST_LED_PERIOD);
return (events ^ ADVERTISING_EVENT);
}
if (events & FAST_LED_EVENT)
{
sum = (led_count * FAST_LED_PERIOD);
// if ((led_count * FAST_LED_PERIOD) < ADVERTISING_PERIOD)
if (sum < ADVERTISING_PERIOD)
{
led_count++;
led_value = ~led_value;
set_led(led_mask, led_value);
}
else
{
led_count = 0;
osal_stop_timerEx(LedAdvertising_TaskID, FAST_LED_EVENT);
}
return (events ^ FAST_LED_EVENT);
}
请教一下,为什么调用osal_stop_timerEx(LedAdvertising_TaskID, FAST_LED_EVENT); 函数无法把定时器停下来
你确定这个函数被调用了吗?设个断点试试。
ADVERTISING_EVENT是什么事件? 如果这个事件发生,你的定时器又被启动。