请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TM4C129ENCPDT 工具/软件:Code Composer Studio
我一直在使用此代码来检测按下 SW1 (PJ0)按钮的时刻、它运行良好。
#include #include include "inc/hw_ints.h" #include "inc/hw_memmap.h" #include "inc/hw_types.h" #include "inc/hw_NVIC.h" #include "driverlib/debug.h" #include "driverlib/fpu.h" #include "driverlib/gpio.h" #include "driverlib_clockpine.h"#include "driverlib#driverlib#idt.idt.idt.idt.ide"#include "driverlib"#include "driverlib_rom.idt.idr.idt.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr if (intcase ==0) { TimerEnable (Timer1_base、timer_A); intcase = 1; } 其他 { TimerDisable (Timer1_base、timer_A); intcase = 0; Val = 0; } GPIOIntClear (GPIO_PORTJ_BASE、GPIO_INT_PIN_0); } 空 Timer1IntHandler (void) { ROM_TimerIntClear (Timer1_base、timer_TINA_TIMEOUT); V++; } int main (void){ sysclock_T = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_main | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOJ); SysCtlPeripheralEnable (SYSCTL_Periph_GPION); SysCtlPeripheralEnable (SYSCTL_Periph_Timer1); TimerConfigure (Timer1_base、timer_CFG_PERIODICRACRACASE); TimerLoadSet (Timer1_base、timer_A、(sysclock_T/(1000000*2))); IntEnable (INT_TIMER1A); TimerIntEnable (Timer1_base、timer_TINA_TIMEOUT); GPIOPinTypeGPIOOutput (GPIO_PORTN_BASE、GPIO_PIN_1);//led 初始化 GPIOPinTypeGPIOInput (GPIO_PORTJ_BASE、GPIO_PIN_0);//按钮初始化 GPIOIntTypeSet (GPIO_PORTJ_BASE、GPIO_PIN_0、GPIO_Bot_Edges); GPIOIntRegister (GPIO_PORTJ_BASE、button_press); GPIOIntEnable (GPIO_PORTJ_BASE、GPIO_INT_PIN_0); GPIOPadConfigSet (GPIO_PORTJ_BASE、GPIO_PIN_0、GPIO_Strength _6mA、GPIO_PIN_TYPE_STD_WPU); while (1) { } }
但我希望使输入引脚处于低电平(0)并检测何时使用 PD2上升沿、我的代码是:
#include #include include "inc/hw_ints.h" #include "inc/hw_memmap.h" #include "inc/hw_types.h" #include "inc/hw_NVIC.h" #include "driverlib/debug.h" #include "driverlib/fpu.h" #include "driverlib/gpio.h" #include "driverlib_clockpine.h"#include "driverlib#driverlib#idt.idt.idt.idt.ide"#include "driverlib"#include "driverlib_rom.idt.idr.idt.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr if (intcase ==0) { TimerEnable (Timer1_base、timer_A); intcase = 1; } 其他 { TimerDisable (Timer1_base、timer_A); intcase = 0; Val = 0; } GPIOIntClear (GPIO_PORTD_base、GPIO_INT_PIN_2); } 空 Timer1IntHandler (void) { ROM_TimerIntClear (Timer1_base、timer_TINA_TIMEOUT); //清除计时器中断。 V++; } int main (void){ sysclock_T = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_main | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD); SysCtlPeripheralEnable (SYSCTL_Periph_GPION);//led 时钟 GPIO 初始化 SysCtlPeripheralEnable (SYSCTL_Periph_Timer1); TimerConfigure (Timer1_base、timer_CFG_PERIODICRACRACASE); TimerLoadSet (Timer1_base、timer_A、(sysclock_T/(1000000*2))); IntEnable (INT_TIMER1A); TimerIntEnable (Timer1_base、timer_TINA_TIMEOUT); GPIOPinTypeGPIOOutput (GPIO_PORTN_BASE、GPIO_PIN_1);//led 初始化 GPIOPinTypeGPIOInput (GPIO_PORTD_base、GPIO_PIN_2);//按钮初始化 //中断设置 GPIOIntTypeSet (GPIO_PORTD_base、GPIO_PIN_2、GPIO_RIST上升 沿); GPIOIntRegister (GPIO_PORTD_base、button_press); GPIOIntEnable (GPIO_PORTD_base、GPIO_INT_PIN_2); GPIOPadConfigSet (GPIO_PORTD_base、GPIO_PIN_2、GPIO_FORMENT_2mA、GPIO_PIN_TYPE_STD_WPU); GPIOPinWrite (GPIO_PORTD_BASE、GPIO_PIN_2、0x0); IntMasterEnable(); while (1) { } }
问题是、即使我使用"GPIOPinWrite (GPIO_PORTD_BASE、GPIO_PIN_2、0x0); "、如何使该输入以低电平开始????
谢谢