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.
我正在尝试编写一个程序、在 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
对该帖子中出现的任何错误表示歉意。