0

我正在使用 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 再次打开。

这是一个错误吗?

4

1 回答 1

0

我已经在北欧的 devzone 上发布了这个问题,下面是我从北欧员工那里得到的答案。

你好,

我可以看到情况会如此,并将在内部报告。

您可以在事件处理程序中设置一个标志并在 main 中调用停止例程。

奥莱

所以我猜这是nordic的sdk代码中的一个bug。

于 2017-02-27T07:54:56.363 回答