主题中讨论的其他器件:C2000WARE
工具/软件:Code Composer Studio
我将使用 EPWM2生成 PWM 脉冲,并在 ECAP1上读取占空比和周期。 当我使用 GPIO5进行捕获时、一切都正常、但当选择 GPIO19/GPIO24时、寄存器不会更新。 我想其余的设置不需要受到干扰。
Dint; //禁用所有 CPU 中断
IER = 0x0000; //禁用所有外设中断
IFR = 0x0000; //清除所有中断标志
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO5=3 ; // 0=GPIO 1=EPWM3B 2=SPISIMOA 3=ECAP1
// GpioCtrlRegs.GPAPUD.bit.GPIO19=0;
// GpioCtrlRegs.GPAQSEL2.bit.GPIO19=0;
// GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 3;
GpioCtrlRegs.GPAMUX2.bit.GPIO24=1 ; // 0=GPIO 1=EPWM3B 2=SPISIMOA 3=ECAP1
EDIS;
///----------------------------------------------------------
//--为捕捉配置 eCAP1单元
///----------------------------------------------------------
ECap1Regs.ECEINT.ALL = 0; //禁用所有 eCAP 中断
ECap1Regs.ECCTL1.bit.CAPLDEN = 0; //已禁用捕获结果的加载
ECap1Regs.ECCTL2.bit.TSCTRSTOP = 0; //停止计数器
ECap1Regs.TSCTR = 0; //清除计数器
ECap1Regs.CTRPHS = 0; //清除计数器相位寄存器
ECap1Regs.ECCTL2.all = 0x0096; // ECAP 控制寄存器2
//位15-11 00000: 保留
//位10 0: APWMPOL、无关
//位9 0: CAP/APWM、0 =捕捉模式、1 = APWM 模式
//位8 0: SWSYNC、0 =无操作(无 s/w 同步)
//位7-6 10: SYNCO_SEL、10 =禁用 SYNC OUT 信号
//位5 0: SYNCI_EN、0 =禁用同步输入
//位4 1: TSCTRSTOP、1 =使能计数器
//位3 0: 重新布防、0 =不重新布防、1 =重新布防
//位2-1 11: STOP_Wrap、11 = 4次捕捉后换行
//位0 0: CONT/ONESHT、0 =连续模式
ECap1Regs.ECCTL1.ALL = 0xC144; // ECAP 控制寄存器1
//位15-14 11: 自由/软、11 =忽略仿真挂起
//位13-9 00000: 预分频、00000 = 1分频
//位8 1: CAPLDEN、1 =启用捕捉结果加载
//位7 0: CTRRTST4、0 =不在 CAP4事件上复位计数器
//位6 1: CAP4POL、0 =上升沿、1 =下降沿
//位5 0: CTRRTST3、0 =不在 CAP3事件上复位计数器
//位4 0: CAP3POL、0 =上升沿、1 =下降沿
//位3 0: CTRRTST2、0 =不在 CAP2事件上复位计数器
//位2 1: CAP2POL、0 =上升沿、1 =下降沿
//位1 0: CTRRTST1、0 =不在 CAP1事件上复位计数器
//位0 0: CAP1POL、0 =上升沿、1 =下降沿
ECap1Regs.ECEINT.ALL = 0x0008; //启用所需的 eCAP 中断
//位15-8 0 : 保留
//位7 0: CTR=CMP、0 =比较中断被禁用
//位6 0: CTR=PRD、0 =周期中断被禁用
//位5 0: CTROVF、0 =溢出中断被禁用
//位4 0: CEVT4、0 =事件4中断被禁用
//位3 1: CEVT3、1 =启用事件3中断
//位2 0: CEVT2、0 =事件2中断被禁用
//位1 0: CEVT1、0 =事件1中断被禁用
//位0 0: 保留
EALLOW;
PieCtrlRegs.PIEIER4.bit.INTx1 = 1; //在 PIE 组4中启用 ECAP1_INT
PieVectTable.ECAP1_INT =&eCAP1_INT_ISR;
EDIS;
IER |= 0x0008; //在 IER 中启用 INT4以启用 PIE 组4