工具与软件:
我将尝试通过中断来检测 GPIO 上的上升沿和下降沿。
由于 MSP430FR6043仅允许检测一种类型的边沿、因此我将通过读取引脚的电流值来更改 ISR 内的 PxIES。
这种方法在大多数情况下都适用、但有时 无法检测 边沿。
到目前为止、我只看到了它缺失下降沿的情况、但我不能说检测到了所有上升沿。
该引脚连接到125Hz 的 PWM 信号、因此每次发生 ISR 之间存在4ms 的间隙。 当我测量引脚时、高电平为3.32V、低电平为 0V。
如何确保检测到所有边沿?
#pragma vector = PORT6_VECTOR __interrupt void EIC_PORT6_ISR(void) { HWREG16(P6_BASE + OFS_PAIFG) &= ~(GPIO_PIN0 << 8); if((HWREG16(P6_BASE + OFS_PAIN) & (GPIO_PIN0 << 8)) > 0) { HWREG16(P6_BASE + OFS_PAIES) |= (GPIO_PIN0 << 8); GPIO_PIN0_Value = true; } else { HWREG16(P6_BASE + OFS_PAIES) &= ~(GPIO_PIN0 << 8); GPIO_PIN0_Value = false; } HWREG16(P6_BASE + OFS_PAIFG) &= ~(GPIO_PIN0 << 8); }
谢谢!