我正在使用 SDK 12.0.0。
我正在使用low_power_pwm_init()
初始化 pwm 并且在初始化时我已经通过了一个处理程序。我想从处理程序中停止 pwm,因此我low_power_pwm_stop()
从处理程序中调用。我观察到 pwm 没有停止。
我试图调查原因,发现pwm_timeout_handler()
在low_power_pwm.c 中正在重新启动pwm。以下是可疑的片段。
if (p_pwm_instance->pwm_state == NRF_DRV_STATE_INITIALIZED)
{
p_pwm_instance->pwm_state = NRF_DRV_STATE_POWERED_ON;
err_code = app_timer_start(*p_pwm_instance->p_timer_id, p_pwm_instance->timeout_ticks, p_pwm_instance);
APP_ERROR_CHECK(err_code);
}
在low_power_pwm_stop()
,p_pwm_instance->pwm_state
中分配NRF_DRV_STATE_INITIALIZED
,并且在上面的代码段中,如果驱动程序状态为 ,则启动计时器NRF_DRV_STATE_INITIALIZED
,导致 pwm 再次打开。
这是一个错误吗?