主题中讨论的其他器件:TM4C1294NCPDT、 ENERGIA
您好!
我有一个代码在输入引脚上使用中断进行一些计算。
目前、当我使用端口 M、D、A 或 B 时、它可以正常工作(我已经对所有端口进行了测试)。
问题是、我需要使它专门在端口 L 引脚3上工作、但当我这么做时、中断会被每次调用、程序会卡住。
我甚至尝试使 Timer1中断(我也在使用它)在优先级 C0上工作、GPIO 在优先级 E0上工作、但由于程序滞留在端口 L 中断上、甚至计时器中断都不会被调用。
我启用用于测试代码的所有 GPIO:
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOO);SysCtlPeripheralEnable (SYSCTL_Periph_GPIOL); SysCtlPeripheralEnable (SYSCTL_GPIOB)
我将引脚类型设置为输入:(这里我仅为端口 L 显示它、当我测试其他引脚时、我将此行更改为要测试的端口)。
GPIOPinTypeGPIOInput (GPIO_PORTL_base、GPIO_PIN_3);
我设置中断:
GPIOIntRegister (GPIO_PORTL_base、TACHandler); GPIOIntTypeSet (GPIO_PORTL_base、GPIO_PIN_3、GPIO_FALLING_EDGE); GPIOIntEnable (GPIO_PORTL_BASE、GPIO_INT_PIN_3);
在中断处理程序"TacHandler"上、我清除中断:
void TacHandler (void){ GPIOIntClear (GPIO_PORTL_base、GPIO_PIN_3); freqCalc (); } 内联 void freqCalc (void){ pulseCounter++; }
但是、正如我说过的、GPIO 中断不断被调用、软件被卡住。 当我尝试使用其他引脚时、我得到的结果是我想要的。
除了 GPIO 和 Timer1之外、我没有初始化任何其他内容、因此我不使用模拟比较器、USB 或正交编码器(我确实看到它们可以设置为在引脚 PL3上工作)。
我正在使用 Launchpad 板。
是否无法为此使用 PL3?
谢谢你。