void Key2IntHandler(void)
{
GPIOIntClear(GPIO_PORTF_BASE,GPIO_INT_PIN_4);
if(GPIOPinRead(GPIO_PORTF_BASE,GPIO_PIN_0))
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,0<<0);
else
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,1<<0);
{
GPIOIntClear(GPIO_PORTF_BASE,GPIO_INT_PIN_4);
if(GPIOPinRead(GPIO_PORTF_BASE,GPIO_PIN_0))
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,0<<0);
else
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,1<<0);
}
void Key4IntHandler(void)
{
GPIOIntClear(GPIO_PORTA_BASE,GPIO_INT_PIN_2);
if(GPIOPinRead(GPIO_PORTA_BASE,GPIO_PIN_4))
GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,0<<0);
else
GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,1<<0);
/*GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,
(0x10^GPIOPinRead(GPIO_PORTA_BASE,GPIO_PIN_4)));*/
}
void Key4IntHandler(void)
{
GPIOIntClear(GPIO_PORTA_BASE,GPIO_INT_PIN_2);
if(GPIOPinRead(GPIO_PORTA_BASE,GPIO_PIN_4))
GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,0<<0);
else
GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,1<<0);
/*GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,
(0x10^GPIOPinRead(GPIO_PORTA_BASE,GPIO_PIN_4)));*/
}
main(void)
{
SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_16MHZ);
//设置系统时钟50MHZ;
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
//使能外设
HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;
HWREG(GPIO_PORTF_BASE + GPIO_O_CR) |= 0x01;
HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = 0;
//解锁PF0
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_0);
GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_4);//D2,D3
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,0);
GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,0);
//配置并初始化
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_4);
GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_2);
GPIOIntTypeSet(GPIO_PORTF_BASE,GPIO_PIN_4,GPIO_FALLING_EDGE);
GPIOIntTypeSet(GPIO_PORTA_BASE,GPIO_PIN_2,GPIO_FALLING_EDGE);
GPIOIntEnable(GPIO_PORTF_BASE,GPIO_INT_PIN_4);
GPIOIntEnable(GPIO_PORTA_BASE,GPIO_INT_PIN_2);
IntMasterEnable();
IntPrioritySet(INT_GPIOA,1);
IntPrioritySet(INT_GPIOF,0);
GPIOIntRegister(GPIO_PORTF_BASE, Key2IntHandler);
GPIOIntRegister(GPIO_PORTA_BASE, Key4IntHandler);
while(1)
{
{
SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_16MHZ);
//设置系统时钟50MHZ;
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
//使能外设
HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;
HWREG(GPIO_PORTF_BASE + GPIO_O_CR) |= 0x01;
HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = 0;
//解锁PF0
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_0);
GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_4);//D2,D3
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,0);
GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,0);
//配置并初始化
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_4);
GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_2);
GPIOIntTypeSet(GPIO_PORTF_BASE,GPIO_PIN_4,GPIO_FALLING_EDGE);
GPIOIntTypeSet(GPIO_PORTA_BASE,GPIO_PIN_2,GPIO_FALLING_EDGE);
GPIOIntEnable(GPIO_PORTF_BASE,GPIO_INT_PIN_4);
GPIOIntEnable(GPIO_PORTA_BASE,GPIO_INT_PIN_2);
IntMasterEnable();
IntPrioritySet(INT_GPIOA,1);
IntPrioritySet(INT_GPIOF,0);
GPIOIntRegister(GPIO_PORTF_BASE, Key2IntHandler);
GPIOIntRegister(GPIO_PORTA_BASE, Key4IntHandler);
while(1)
{
}
}
}
xyz549040622:
配置为输出的时候,是可以读状态的吗?我没有这样做过。
user5362661:
回复 xyz549040622:
但是两个程序里面都用到了读引脚的函数
xyz549040622:
回复 user5362661:
也是,奇怪,我这里实际测试看看。
user5362661:
回复 xyz549040622:
我明白了,那个没注释那部分是错的,引脚一直是低电平, GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,GPIO_PIN_4);才是高电平,~~~~
谢谢啦
xyz549040622:
回复 user5362661:
我看错标题了,我说么,注释的那部分是没有任何问题的,看成你的问题是注释的问题。对,TIVA和别的不一样,写高电平的参数是GPIO_PIN_x,写低电平的参数是0x00.