Page 1 of 1

求助PHY6222定时器应用问题

Posted: 2025年 Mar 27日 10:39
by wuyoujr

1)开发包全名:PHY6222_TuyaOS-3.11.0
2)问题现象:
hal_timer_init(timer_int_process);
hal_timer_mask_int(AP_TIMER_ID_5,1);
hal_timer_set(AP_TIMER_ID_5,1000);
按上述初始化定时器5定时1ms,实际出来8ms秒。请问是哪里的问题?


Re: 求助PHY6222定时器应用问题

Posted: 2025年 Mar 27日 10:52
by 逻辑的院子

8ms是通过什么方式测量出来的,请详细描述


Re: 求助PHY6222定时器应用问题

Posted: 2025年 Mar 27日 10:57
by wuyoujr

void timer_int_process(uint8_t evt)
{
switch(evt)
{
case HAL_EVT_TIMER_5:
TY_PRINTF("t5\n");
if(TestVar==0)
{
TestVar = 1;
tal_gpio_write(TUYA_GPIO_NUM_0, TUYA_GPIO_LEVEL_HIGH);
}
else
{
TestVar = 0;
tal_gpio_write(TUYA_GPIO_NUM_0, TUYA_GPIO_LEVEL_LOW);
}
break;

Code: Select all

case HAL_EVT_TIMER_6:
    TY_PRINTF("t6\n");
    break;

case HAL_EVT_WAKEUP:
    TY_PRINTF("wakeup\n");
    TY_PRINTF("timer will disable when sleep,so if you want it work please init it when wakeup");
    break;

case HAL_EVT_SLEEP:
    TY_PRINTF("sleep\n");
    break;

default:
    TY_PRINTF("err ");
    break;
}

}

通过在回调函数内的IO口翻转,然后用示波器抓取信号测量出来的


Re: 求助PHY6222定时器应用问题

Posted: 2025年 Mar 27日 10:59
by wuyoujr

void timer_int_process(uint8_t evt)
{
switch(evt)
{
case HAL_EVT_TIMER_5:
TY_PRINTF("t5\n");
if(TestVar==0)
{
TestVar = 1;
tal_gpio_write(TUYA_GPIO_NUM_0, TUYA_GPIO_LEVEL_HIGH);
}
else
{
TestVar = 0;
tal_gpio_write(TUYA_GPIO_NUM_0, TUYA_GPIO_LEVEL_LOW);
}
break;

Code: Select all

case HAL_EVT_TIMER_6:
    TY_PRINTF("t6\n");
    break;

case HAL_EVT_WAKEUP:
    TY_PRINTF("wakeup\n");
    TY_PRINTF("timer will disable when sleep,so if you want it work please init it when wakeup");
    break;

case HAL_EVT_SLEEP:
    TY_PRINTF("sleep\n");
    break;

default:
    TY_PRINTF("err ");
    break;
}

}
通过回调函数里面进行IO口翻转,使用示波器测量的


Re: 求助PHY6222定时器应用问题

Posted: 2025年 Mar 27日 11:03
by 逻辑的院子

把所有Log注释掉尝试一下


Re: 求助PHY6222定时器应用问题

Posted: 2025年 Mar 27日 11:07
by wuyoujr

已解决,谢谢!