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.

[参考译文] TM4C1294NCPDT:GPIOIntRegisterPin ()不能正常工作

Guru**** 2457760 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/643062/tm4c1294ncpdt-gpiointregisterpin-doesn-t-work-correctly

器件型号:TM4C1294NCPDT

您好、香榭丽舍

我 想生成 GPIO 中断并且我使用 GPIOIntRegisterPin ()来注册中断服务例程。  但是、当  我调用 GPIOIntRegisterPin (GPIO_PORTQ_BASE、GPIO_PIN_0、DI0_IntHandler)时、我发现了。 它会将错误的值传递给 IntRegister()。 请参阅以下代码。  ui32Int = 0x100、 ui32Pin=GPIO_PIN_0=0x0001。 它将 DI0_IntHandler 地址写入0x101、这不是正确的地址。 在数据表中、PQ0中断矢量应该被放置在0x100上。 这就是 当我触发 PQ1中断并运行 PQ0 ISR 时的原因...。 因为0x101应为 PQ1 ISR 地址。  

是否有人可以检查此部件? 我可以在帖子中附加 main.c 文件。 谢谢! e2e.ti.com/.../1715.interrupts.c

void
GPIOIntRegisterPin (uint32_t ui32port、uint32_t ui32Pin、
void (* pfnIntHandler)(void)
{
uint32_t ui32Int;

//
//检查参数。
//
assert ((ui32Port == GPIO_PORTP_BASE)||(ui32Port ==GPIO_PORTQ_BASE));
assert (((ui32Pin > 0)&&(ui32Pin < 8));
assert (pfnIntHandler!= 0);

//
//获取与指定 GPIO 关联的中断号。
//
ui32Int =_GPIOIntNumberGet (ui32Port);

//
//注册中断处理程序。
//
IntRegister (((ui32Int + ui32Pin)、pfnIntHandler);

//
//启用 GPIO 引脚中断。
//
IntEnable (ui32Int + ui32Pin);
} 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Lisa、
    GPIO_PIN_0定义引脚0的位位置。 函数 GPIOIntRegister 的第二个参数必须是引脚编号、在本例中为0。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob:

    我检查了显示 ui32Pin = GPIO_PIN_0=0x0001的 CCS。  GPIO_PIN_0在 gpio.h 中定义

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

    您好 Lisa、

    是的、没错。 它定义了引脚0的位位置。 该定义不会在函数 GPIOIntRegister 中使用。

    GPIOIntRegisterPin (GPIO_PORTQ_BASE、GPIO_PIN_0、DI0_IntHandler); 

    应写为:

    GPIOIntRegisterPin (GPIO_PORTQ_BASE、0、DI0_IntHandler); 

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

    非常有耐心-(非常)有很多证据-这里...

    两个 TI 人 和 CB1/C破裂 crüe 相信问题(早期)已完全解决...

    作出(任何)此类声称、"违反 API 的正确工作"-大多数情况下都是错误的-不公平 地"攻击卓越 API "-并(过度陈述)海报上反映(不好)...  (99%+这是"海报的方法和/或理解" 、而不是 API -这"不能正常工作!"

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    另一种在 API 中具有适当类型的情况会大有帮助(甚至向后兼容)。

    Robert