2017-02-22 42 views
0

我正在使用SDK 12.0.0。低功耗PWM庫:如果從處理程序調用low_power_pwm_stop,則PWM不會停止。這是一個錯誤?

我正在與low_power_pwm_init()一起初始化pwm,並在初始化時傳遞了一個處理函數。我想停止處理程序的pwm,因此我從處理程序調用low_power_pwm_stop()。我觀察到pwm不停止。

我試圖調查此原因,發現low_power_pwm.c中的pwm_timeout_handler()正在重新啓動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再次爲ON。

這是一個錯誤?

回答

0

我已經在北歐的devzone上發佈了這個問題,下面是我從北歐員工處獲得的answer

嗨,

我可以看到,這將是情況下,將內部報告。

您可以在事件處理程序中設置一個標誌並調用 main中的停止例程。

奧萊

所以我想這是在北歐的SDK代碼中的bug。