请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:EK-TM4C123GXL 我正在尝试编写一个程序、在 SW1被按下时、该程序将使电路板上的蓝色 LED 闪烁。 我尝试使用中断来处理状态变化、并遵循 了这里发布的示例代码。
以下是我的代码:
#include
#include
#include
#include "inc/hw_memmap.h"
#include "driverlib/interrupt.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"
void onButtonDown (void);
void onButtonUp (void);
/**
*在按下 SW1时调用
*/ButtonDown
(void)
if (GPIOIntStatus (GPIO_PORTF_BASE、false)& GPIO_PIN_4){
// PF4是中断原因
GPIOIntRegister (GPIO_PORTF_BASE、onButtonUp);//为端口 F 注册处理程序函数
GPIOIntTypeSet (GPIO_PORTF_BASE、GPIO_PIN_4、GPIO_RISE_EDGE); //为上升沿触发配置 PF4
GPIOIntClear (GPIO_PORTF_BASE、GPIO_PIN_4);//清除中断标志
while (1){
GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、GPIO_PIN_2);
SysCtlDelay (20000000);
GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、0);
}
}
}/**
*在 SW1释放时调用
*/
void onButtonUp (void){
if (GPIOIntStatus (GPIO_PORTF_BASE、false)& GPIO_PIN_4){
// PF4是中断原因
GPIOIntRegister (GPIO_PORTF_BASE、onButtonDown);//为端口 F 注册处理程序函数
GPIOIntTypeSet (GPIO_PORTF_BASE、GPIO_PIN_4、GPIO_FALLING_EDGE); //为下降沿触发配置 PF4
GPIOIntClear (GPIO_PORTF_BASE、GPIO_PIN_4);//清除中断标志
GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、0);
}
}
/**
* main.c
*/
int main (void)
{
SysCtlClockSet (SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_INT | SYSCTL_XTAL_16MHz);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOF))
{
}
//输出引脚 F2设置(LED)
GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_2);
//输入引脚 F4设置(SW1)
GPIOPinTypeGPIOInput (GPIO_PORTF_BASE、GPIO_PIN_4);
GPIOPadConfigSet (GPIO_PORTF_BASE、GPIO_PIN_4、GPIO_Strength _2mA、GPIO_PIN_TYPE_STD_WPU);
GPIOIntDisable (GPIO_PORTF_BASE、GPIO_PIN_4);
GPIOIntClear (GPIO_PORTF_BASE、GPIO_PIN_4);
GPIOIntRegister (GPIO_PORTF_BASE、onButtonDown);
GPIOIntTypeSet (GPIO_PORTF_BASE、GPIO_PIN_4、GPIO_FALLING_EDGE);//为下降沿触发配置 PF4
GPIOIntEnable (GPIO_PORTF_BASE、GPIO_PIN_4);
while (1);
}
我有两个问题。
第一个是当 SW1被保持在低电平时、蓝色 LED 应该闪烁和熄灭、但 LED 只保持亮起。
第二个问题是,在 SW1被释放后永远不会触发中断 onButtonUp(),并且程序一直停留在 onButtonDown()中的 while 循环中。
如果有任何关于我所做的错误的帮助或提示、我们将不胜感激。
详细信息:
Code Composer 版本:8.1.0.00011
TivaWare 版本2.1.4.178
编译器:TI v18.1.3
对该帖子中出现的任何错误表示歉意。