我使用的是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再次打开。
这是一个错误吗?
答案 0 :(得分:0)
我在nordic的devzone上发布了这个问题,下面是我从北欧员工那里得到的answer。
您好,
我可以看到情况就是这样,并会在内部报告。
您可以在事件处理程序中设置一个标志,并在其中调用停止例程 主
奥莱
所以我猜这是nordic的sdk代码中的一个错误。