低功耗PWM库:如果从处理程序调用low_power_pwm_stop,则PWM不会停止。这是一个错误吗?

时间:2017-02-22 14:14:54

标签: bluetooth-lowenergy nrf51

我使用的是SDK 12.0.0。

我正在使用low_power_pwm_init()来初始化pwm,并在初始化时通过了处理程序。我想从处理程序中停止pwm,因此我从处理程序调用{​​{1}}。我观察到pwm没有停止。

我试图调查原因并发现low_power_pwm.c中的low_power_pwm_stop()正在重启pwm。以下是可疑的摘录。

pwm_timeout_handler()

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,则会在上面的代码段中启动计时器,从而导致pwm再次打开。

这是一个错误吗?

1 个答案:

答案 0 :(得分:0)

我在nordic的devzone上发布了这个问题,下面是我从北欧员工那里得到的answer

  

您好,

     

我可以看到情况就是这样,并会在内部报告。

     

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

     

奥莱

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