下为numaker bricks的一段程序,我对pwm捕获的一些设置比较疑惑。这个程序是关于HC-SR04,获取高电平时间,我原以为pwm捕获要配置为上升沿和下降沿触发才算ok,没想到它只配置fall-edge,在计算高电平的时间竟然还去明目张胆的获取rising-edge的时间,再去获取fall-edge的时间。想到这里只能认为是上升沿和下降沿的中断无论是否使能 与 上/下升沿寄存器保存计数器的值 毫无关系。 唉,多么痛的领悟
// ----------Set PWM0 CH4 as SONAR Rx---------------
/* set PWM1 channel 5 capture configuration, 5us*/
PWM_ConfigCaptureChannel(PWM0, 4, 5000, 0);
/* Enable capture falling edge interrupt for PWM0 channel 3 */
PWM_EnableCaptureInt(PWM0, 4, PWM_CAPTURE_INT_FALLING_LATCH);
/* Enable PWM0 NVIC interrupt */
/*p2对应的应该是pwm的4、5通道,两个通道共享一个INT*/
NVIC_EnableIRQ(PWM0P2_IRQn);
/* Enable Timer for PWM0 channel 4 */
PWM_Start(PWM0, PWM_CH_4_MASK);
/*Enable Input Schmitt Trigger*/
//PC->SMTEN |= GPIO_SMTEN_SMTEN4_Msk;
/* Enable Capture Function for PWM0 channel 4 */
PWM_EnableCapture(PWM0, PWM_CH_4_MASK);
/* Enable falling capture reload */
PWM0->CAPCTL |= PWM_CAPCTL_FCRLDEN4_Msk; |