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.

[参考译文] TMS320F28027:外部中断意外触发

Guru**** 2815875 points

Other Parts Discussed in Thread: MOTORWARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/992067/tms320f28027-external-interrupts-unexpected-triggering

器件型号:TMS320F28027
主题中讨论的其他器件:MOTORWARE

您好!

我正在使用基于 lab01的 motorware Hal 对象、并遵循 Motoware HAL 教程。 我尝试通过2个按钮触发中断、一个连接到 GPIO12、一个连接到 GPIO33/32。

当我在 GPIO12上配置 extInt1时、一切都正常、但是当我将 extInt1更改为 GPIO 33或32时、ISR 似乎每11us 就会被持续触发一次(我将切换 ISR 内部的 LED 以在示波器上进行测量)。

我是否遗漏了什么? 引脚 GPIO33/32是否不用于外部内部功能?

从 hal.c 中提取的配置代码:

void HAL_setupGpios (HAL_Handle handle)

//按钮1.
GPIO_setMode (obj->gpioHandle、GPIO_Number_12、GPIO_12_Mode_generalpurpose);
GPIO_setDirection (obj->gpioHandle、GPIO_Number_12、GPIO_Direction_Input);
GPIO_setPullUp (obj->gpioHandle、GPIO_Number_12、GPIO_PULLUP_Disable);

//按钮2.
GPIO_setMode (obj->gpioHandle、GPIO_Number_32、GPIO_32_Mode_generalpurpose);
GPIO_setDirection (obj->gpioHandle、GPIO_Number_32、GPIO_Direction_Input);
GPIO_setPullUp (obj->gpioHandle、GPIO_Number_32、GPIO_PULLUP_Enable);

//用于示波器测量和调试的引脚
GPIO_setMode (obj->gpioHandle、GPIO_Number_33、GPIO_33_Mode_generalpurpose);
GPIO_setLow (obj->gpioHandle、GPIO_Number_33);
GPIO_setDirection (obj->gpioHandle、GPIO_Number_33、GPIO_Direction_Output);

void HAL_enableExtInts (HAL_Handle handle)

HAL_Obj * obj =(HAL_Obj *)句柄;

// GPIO 上的外部内部1 12.
PI_enableInt (obj->压 电致、PI_GroupNumber_1、PI_InterruptSource_XINT_1);
GPIO_setExtInt (obj->gpioHandle、GPIO_Number_32、CPU_ExtIntNumber_1);

PI_setExtIntPolarity (obj->压 电极、cpu_ExtIntNumber_1、PI_ExtIntPolarity_RisingAndFallingEdge);
PI_enableExtInt (obj->压 电式、cpu_ExtIntNumber_1);

cpu_enableInt (obj->cpuHandle、cpu_IntNumber_1);

返回;

谢谢、

David

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

    David、

    GPIOXINTnSEL 寄存器只允许通过 GPIO31选择 GPIO0:

    您可以 读回寄存器值以查看它实际监控的引脚。  我怀疑 GPIO32溢出到 GPIO0。

    Tommy

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

    谢谢、只需查找正确的文档即可。