Thread 中讨论的其他器件:SYSBIOS
我按如下方式设置 eCAP 的参数
空 InitECapture()
{
InitECap1Gpio();
//步骤3. 清除所有中断并初始化 PIE 矢量表:
//禁用 CPU 中断
Dint;
//禁用 CPU 中断并清除所有 CPU 中断标志:
IER = 0x0000;
IFR = 0x0000;
ECap1Regs.ECEINT.ALL = 0x0000;//禁用所有捕捉中断
ECap1Regs.ECCLR.ALL = 0xFFFF;//清除所有 CAP 中断标志
ECap1Regs.ECCTL1.bit.CAPLDEN = 0;//禁用 CAP1-CAP4寄存器加载
ECap1Regs.ECCTL2.bit.TSCTRSTOP = 0;//确保计数器被停止
//配置外设寄存器
ECap1Regs.ECCTL2.bit.CONT_ONESHT = 1;//单次触发
ECap1Regs.ECCTL2.bit.STOP_Wrap = 3;//在4个事件时停止
ECap1Regs.ECCTL1.bit.CAP1POL = 1;//下降边沿
ECap1Regs.ECCTL1.bit.CAP2POL = 0;//上升边沿
ECap1Regs.ECCTL1.bit.CAP3POL = 1;//下降边沿
ECap1Regs.ECCTL1.bit.CAP4POL = 0;//上升边沿
ECap1Regs.ECCTL1.bit.CTRRST1 = 1;//差动操作
ECap1Regs.ECCTL1.bit.CTRRST2 = 1;//差动操作
ECap1Regs.ECCTL1.bit.CTRST3 = 1;//差动操作
ECap1Regs.ECCTL1.bit.CTRRST4 = 1;//差动操作
ECap1Regs.ECCTL2.bit.SYNCI_EN = 1;//启用同步输入
ECap1Regs.ECCTL2.bit.SYNCO_SEL = 0;//直通
ECap1Regs.ECCTL1.bit.CAPLDEN = 1;//启用捕捉单元
ECap1Regs.ECCTL2.bit.TSCTRSTOP = 1;//起始计数器
ECap1Regs.ECCTL2.bit.rearm = 1;// ARM 单次触发
ECap1Regs.ECCTL1.bit.CAPLDEN = 1;//启用 CAP1-CAP4寄存器加载
ECap1Regs.ECEINT.BIT.CEVT4 = 1;// 4个事件=中断
//启用连接到 ECAP1-4 INT 的 CPU INT4:
IER |= M_INT4;
//在 PIE 中启用 eCAP INTn:组3中断1-6
PieCtrlRegs.PIEIER4.bit.INTx1 = 1;
//启用全局中断和更高优先级的实时调试事件:
EINT;//启用全局中断 INTM
ERTM;//启用全局实时中断 DBGM
}
并在 RTOS 中按如下方式分配中断功能:

但是、在以1Hz 信号连接到中断函数的情况下运行代码时、似乎不会调用中断函数。 我使用 GPIO24 (J6-pin55) 作为引脚来捕获信号。 我缺少什么?











