2017-02-22 7 views
0

SDK 12.0.0을 사용하고 있습니다.저전력 PWM 라이브러리 : low_power_pwm_stop이 핸들러에서 호출되면 PWM이 멈 춥니 다. 이거 버그 야?

나는 PWW를 초기화하기 위해 low_power_pwm_init()으로 일하고 있으며 초기화하는 동안 핸들러를 전달했다. 나는 핸들러에서 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_stateNRF_DRV_STATE_INITIALIZED 할당되고, 운전자 상태 NRF_DRV_STATE_INITIALIZED 경우 위의 코드에서, 타이머는 다시 PWM ON되게 시작된다.

이것은 버그입니까?

답변

0

이 질문은 북유럽의 devzone에 게시했으며 아래는 북유럽 직원의 answer입니다.

안녕,

나는이 사건되며 내부적으로보고 있음을 알 수있다.

이벤트 처리기에 플래그를 설정하고 main에있는 중지 루틴을 호출 할 수 있습니다. 올레

그래서 나는이 북유럽의 SDK 코드의 버그 같아요.