请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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); "、如何使该输入以低电平开始????
谢谢