This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TMS320F28027:LAUNCHXL-28027、XINT3不工作

Guru**** 2346880 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/592165/ccs-tms320f28027-launchxl-28027-xint3-is-not-working

器件型号:TMS320F28027

工具/软件:Code Composer Studio

您好~

我不熟悉 TI MCU。
当前我正在使用 TI MCU 处理小型项目。
对于我的项目、我需要3个外部中断。
因此、我为 XINT1、XINT2和 XINT3分配了3个 GPIO (GPIO3、GPIO4和 GPIO5)

我的配置为:
-硬件:LAUNCHXL-28027
-频率:60MHz
3个用于外部中断的 GPIO:XINT1 (GPIO3)、XINT2 (GPIO5)、XINT3 (GPIO4)

其中、XINT1和 XINT2正在工作、但永远不会发生 XINT3。

发生什么事了、如何修复?
请告诉我。

提前通知您。

-在-

我的代码如下:

===

EALLOW;
PieVectTable.XINT1 =&XINT1_ISR;
PieVectTable.XINT2 =&XINT2_ISR;
PieVectTable.XINT3 =&xint3_ISR;
EDIS;

//在 PIE 中启用 XINT1、XINT2和 XINT3:组1中断4、5和组12中断1
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;//启用 PIE 块
PieCtrlRegs.PIEIER1.bit.INTx4 = 1;//启用 PIE 组1 INT4 -> XINT1
PieCtrlRegs.PIEIER1.bit.INTx5 = 1;//启用 PIE 组1 INT5 --> XINT2
PieCtrlRegs.PIEIER12.bit.INTx1 = 1;//启用 PIE 组12 INT1 --> XINT3

IER |= M_INT1 | M_INT12;//启用 CPU 中断1和12
EINT;//启用全局中断 INTM
ERTM;


EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 0;// GPIO3 -通用 I/O
GpioCtrlRegs.GPADIR.bit.GPIO3 = 0;//输入
GpioCtrlRegs.GPAQSEL1.bit.GPIO3 = 1;//限制条件00:同步到 SYSCLK、01:3个采样、10:6个采样、11:异步
GpioCtrlRegs.GPACTRL.bit.QUALPRD0 = 0;//采样周期= 510 x Tsysclkout = 510 x 16.67us = 85us
EDIS;

// GPIO3是 XINT1
EALLOW;
GpioIntRegs.GPIOXINT1SEL.ALL = 3;// XINT1为 GPIO3
EDIS;

//设置 GPIO4
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO4 = 0;// GPIO4 -通用 I/O
GpioCtrlRegs.GPADIR.bit.GPIO4 = 0;//输入
GpioCtrlRegs.GPAQSEL1.bit.GPIO4 = 1;//限制条件00:同步到 SYSCLK、01:3个采样、10:6个采样、11:异步
GpioCtrlRegs.GPACTRL.bit.QUALPRD0 = 0;//采样周期= 510 x Tsysclkout = 510 x 16.67us = 85us
EDIS;

// GPIO4是 XINT3
EALLOW;
GpioIntRegs.GPIOXINT3SEL.ALL = 4;// XINT3为 GPIO4
EDIS;

//设置 GPIO5
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO5=0;// GPIO5 -通用 I/O
GpioCtrlRegs.GPADIR.bit.GPIO5 = 0;//输入
GpioCtrlRegs.GPAQSEL1.bit.GPIO5 = 1;//限制条件00:同步到 SYSCLK、01:3个采样、10:6个采样、11:异步
GpioCtrlRegs.GPACTRL.bit.QUALPRD0 = 0;//采样周期= 510 x Tsysclkout = 510 x 16.67us = 85us
EDIS;

// GPIO5是 XINT2
EALLOW;
GpioIntRegs.GPIOXINT2SEL.ALL = 5;// XINT2为 GPIO5
EDIS;

//配置 XINT1
XIntertRegs.XINT1CR.bit.Polarity = 0;// 0:下降、1:上升、2:下降、3:两者
XIntertRegs.XINT1CR.bit.ENABLE = 1;//启用 XINT1

//配置 XINT2
XIntertRegs.XINT2CR.bit.Polarity = 0;// 0:下降、1:上升、2:下降、3:两者
XIntertRegs.XINT2CR.bit.ENABLE = 1;//启用 XINT2

//配置 XINT3
XIntertRegs.XINT3CR.bit.Polarity = 0;// 0:下降、1:上升、2:下降、3:两者
XIntertRegs.XINT3CR.bit.ENABLE = 1;//启用 XINT3

=

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我更改了连接 GPIO 的 XINT3的采样周期、现在 XINT3正在工作。

    void GPIO4_config (void)

      //设置 GPIO4
      EALLOW;
      GpioCtrlRegs.GPAMUX1.bit.GPIO4 = 0;// GPIO4 -通用 I/O
      GpioCtrlRegs.GPADIR.bit.GPIO4 = 0;//输入
      GpioCtrlRegs.GPAQSEL1.bit.GPIO4 = 0;//限制条件00:同步到 SYSCLK、01:3个采样、10:6个采样、11:异步
      GpioCtrlRegs.GPACTRL.bit.QUALPRD0 = 1;//采样周期(n=0xFF)= 510 x Tsysclkout = 510 x 16.67ns = 8.5us
      EDIS;

      // GPIO4是 XINT3
      EALLOW;
      GpioIntRegs.GPIOXINT3SEL.ALL = 4;// XINT3为 GPIO4
      EDIS;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、JAE、

    我看不到您的代码有任何问题。 我将其复制到一个项目中、并在我自己的 LaunchPad 上运行它、我能够使它触发全部三个 XINT。

    硬件可能发生了一些问题。 您如何切换引脚? 您能否在示波器上查看信号并确保它们看起来正常?

    编辑:哎呀、刚刚发现了您的回复。 很高兴你找到了它!


    惠特尼

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的惠特尼:

    感谢您的回答。
    今天上午、我找到了这个解决方案、所有三个 XINT 都在工作。

    -Jae