1.低功耗设备频繁的进入和退出休眠,是不是因为软件定时器触发的
2.频繁的进入和退出休眠这样会不会对低功耗的要求产生影响,
3.如果是软件定时器触发的,可否把这个触发条件关闭,只保留中断触发
4.tkl_gpio_output_use_wakeup_mode返回true的引脚为什么没有一直保持推挽输出
5.退出和进入休眠的轮询时间如何修改
低功耗设备
Re: 低功耗设备
pwm驱动蜂鸣器,路由设备就可以,为什么低功耗的就不可以,需要怎么处理,下面是代码
Code: Select all
OPERATE_RET v_ret = OPRT_COM_ERROR;
tkl_pwm_mapping_to_gpio((UINT32_T)TUYA_PWM_NUM_0, USER_PWM_CH0_PIN); // PC3
TUYA_PWM_BASE_CFG_T v_cfg = {
.duty = 1000,
.frequency = 500,
.polarity = pwm_polarity,
};
tkl_pwm_idle_level_set(TUYA_PWM_NUM_0, 0);
v_ret = tal_pwm_init(TUYA_PWM_NUM_0, &v_cfg);
tal_pwm_start(TUYA_PWM_NUM_0);
TAL_PR_DEBUG("pwm init ok!");
Re: 低功耗设备
Code: Select all
tkl_pwm_mapping_to_gpio((UINT32_T)TUYA_PWM_NUM_0, TUYA_GPIO_NUM_13); // PB5
TUYA_PWM_BASE_CFG_T v_cfg = {
.duty = 1000,
.frequency = 500,
.polarity = TUYA_PWM_POSITIVE,
};
tkl_pwm_idle_level_set(TUYA_PWM_NUM_0, 0);
tal_pwm_init(TUYA_PWM_NUM_0, &v_cfg);
tal_pwm_start(TUYA_PWM_NUM_0);
1.这是我在 3.8.0 tuya_init_last中添加的函数,实际测试PB5管脚可以正常输出pwm波
2.请确认在你的程序中 USER_PWM_CH0_PIN 这个管脚是否被别的功能占用?
3.请在demo中添加我的上述程序在你的环境中进行验证
Re: 低功耗设备
huanghuan 2024年 Feb 5日 11:171.该开发框架低功耗设备进入休眠后,gpio 功能会被重置,你可以在 tal_pwm_start 前调用 gpio_set_func 进行配置,比如 gpio_set_func(GPIO_PB5, AS_PWM5)。
2.调用pwm start后设备将强制唤醒不会进入休眠,最长保持2min sdk会有兜底重启;tal_pwm_stop 可以停止pwm输出并可进入休眠。
3.进入休眠时sys clk会进行切换,为了保持pwm精准输出,建议每次使用pwm输出时都进行一次配置。
你好,我在调用tal_cpu_force_wakeup();之后,再次调用
OPERATE_RET app_pwm_init(UINT_T fre, UINT_T du)
{
// tal_cpu_force_wakeup();
OPERATE_RET v_ret = OPRT_COM_ERROR;
/* TUYA_GPIO_BASE_CFG_T pwm_cfg = {
.direct = TUYA_GPIO_OUTPUT,
.mode = TUYA_GPIO_PUSH_PULL,
//.level = TUYA_GPIO_LEVEL_HIGH,
};
tal_gpio_init(USER_PWM_CH0_PIN, &pwm_cfg);*/
Code: Select all
tkl_pwm_mapping_to_gpio((UINT32_T)TUYA_PWM_NUM_0, USER_PWM_CH0_PIN); // PC3
TUYA_PWM_BASE_CFG_T v_cfg = {
.duty = du,
.frequency = fre,
.polarity = pwm_polarity,
};
tkl_pwm_idle_level_set(TUYA_PWM_NUM_0, 0);
v_ret = tal_pwm_init(TUYA_PWM_NUM_0, &v_cfg);
// gpio_set_func(USER_PWM_CH0_PIN, AS_PWM0);
TAL_PR_DEBUG("pwm init ok!");
// tal_mutex_create_init(&mutex);
return v_ret;
}
然后 tal_pwm_start(TUYA_PWM_NUM_0);
发现还是不能正常输出PWM能帮忙看一下怎么回事吗