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.

[参考译文] TMS320F28379D:外部中断不工作

Guru**** 2482225 points
Other Parts Discussed in Thread: C2000WARE, TMS320F28377S, TMS320F28379D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/636880/tms320f28379d-external-interrupts-not-working

器件型号:TMS320F28379D
主题中讨论的其他器件:C2000WARETMS320F28377S

您好!

我正在尝试创建一个非常简单的 ISR。 当 GPIO 引脚上有下降沿时、我只需要中断。 为了测试这一点、我编写了下面看到的代码并将"勤奋模拟发现"连接到引脚、以便我可以控制引脚的数字电压。

我的代码如下所示。 它使用 C2000Ware 下载中的函数(并基于中断_ex1_external 示例)。

请注意、Interrupt_ex1_external 未更改似乎也不起作用。

void General_Setup()
 {
  //初始化设备时钟和外设
  device_init();
  /* 修改系统时钟
  * Device.h -> DEVICE_setClock_CFG
  *  SYSCTL_IMULT (40)
  *  SYSCTL_FMULT_0
  *  SYSCTL_SYSDIV (4)
  *   -> 100MHz
  * Device.c ->第88行
  *  SYSCTL_LSPCLK_PRESCALE_4
  *   -> 25MHz
  *

  //禁用引脚锁定并启用内部上拉。
  DEVICE_initGPIO();

  //初始化 PIE 并清除 PIE 寄存器。 禁用 CPU 中断。
  interrupt_initModule();

  //使用指向 shell 中断的指针初始化 PIE 矢量表
  //服务例程(ISR)。
  interrupt_initVectorTable();

  //启用全局中断(INTM)和实时中断(DBGM)
  EINT;
  ERTM;
 }

//中断
 void interrupt_init()
 {
  Dint;
  interrupt_initModule();
  interrupt_initVectorTable();
  INTERRUPT_REGTER (INT_XINT1、&ISR_DRDY_XINT1);
  INTERRUPT_ENABLE (INT_XINT1);
  EINT;
  GPIO_setDirectionMode (ADC_DRDY、GPIO_DIR_MODE_IN);
  GPIO_setPinConfig (GPIO_86_GPIO86);
  GPIO_setQualificationMode (ADC_DRDY、GPIO_QUAL_异 步);
  GPIO_setInterruptPin (ADC_DRDY、GPIO_INT_XINT1);
  GPIO_setInterruptType (GPIO_INT_XINT1、GPIO_INT_TY_FALLING_EDGE);
  GPIO_enableInterrupt (GPIO_INT_XINT1);
 }

 中断空 ISR_DRDY_XINT1 (空)
 {
  count++;
  INTERRUPT_clearACKGROUP (INTERRUPT_ACK_Group1);
 }

void main (void)

 General_Setup();

 interrupt_init();

 while (1);

此致、  

Seth Kittles

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

    您好、Seth、

    [引用 USER="Seth Kittures"]请注意,Interrupt_ex1_external unre级 未更改的内容似乎也不起作用。

    这很奇怪、因为它在我的结尾工作! 以下是我导入的示例:

    C:\ti\c2000Ware_1_00_02_00\device_support\f2837xd\examples\cpu1\external_interrupt

    此致、

    Gautam

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我没有运行该特定文件。 我可以尝试一下。 这是我当前工作所依据的项目的文件路径。
    C:\ti\c2000Ware_1_00_01_00\driverlib\f2837xd\examples\cpu1\interrupt
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、再说一次、

    我认为我可能发现了部分错误来源。 因为我在中断错误方面没有进展、所以我转到测试 SCI。 我注意到环回协议运行良好。 但是、每当我尝试探测硬件时、我都没有得到与回送协议提供的数据相对应的信号。 然后、我尝试做一些非常基本的事情。 我选择了3个随机 GPIO 引脚并将其强制为高电平(使用我过去验证过的代码)。 硬件似乎没有反应。 我检查了寄存器 GPxDAT、对于我尝试设置的3个 GPIO 引脚中的每一个引脚、它显示为"1"(突出显示为黄色、并且最近更新了所有内容)。 然后、我在 TMS320F28377S Launchpad 上测试了相同的代码、代码运行良好。

    TMS320F28379D Launchpad 是否出现了问题? 我应该在外部做些什么来使引脚可用吗?

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

    您好、Seth、

    确保正在探测/设置 F28379D Lauchpad 上的正确引脚:  (第11和12页)

    您是否正在执行以下类似操作来初始化 GPIO 并将其设置为高电平/低电平?

    //初始化 GPIO
    EALLOW;
    GpioCtrlRegs.GPEMUX1.bit.GPIO139 = 0;// LP 引脚43
    GpioCtrlRegs.GPEDIR.bit.GPIO139=1;
    EDIS;
    
    //切换 GPIO 引脚
    GpioDataRegs.GPETOGGL.bit.GPIO139 = 1;// LP 引脚43 

    最棒的

    Kevin

    P.S. 对于 SCI、您将关闭哪个示例程序?