我正试图在我的tiva启动板(tm4c123)中打开LED。
当前代码:
while (1)
{
switch(GPIO_PORTF_DATA_R & 0x11) // 0x11 = 10001
{
case 0x00: //both switches are pressed
{
GPIO_PORTF_DATA_R = 0x02; // turn on the red led
break;
}
case 0x01: //SW1 is pressed, SW2 is not pressed
{
GPIO_PORTF_DATA_R = 0x04; // turn on the blue led
break;
}
case 0x10: //SW2 is pressed, SW1 is not pressed
{
GPIO_PORTF_DATA_R = 0x08; // turn on the green led
break;
}
default:
GPIO_PORTF_DATA_R = 0;
break;
}
}
如果没有这两行代码,就会发生这种情况:
有人可以向我解释原因吗?
GPIO_PORTF_LOCK_R = 0x4C4F434B;
GPIO_PORTF_CR_R = 0x1F;
答案 0 :(得分:2)
您可以在tiva启动板上阅读开关,如下所示:
SW1 = GPIO_PORTF_DATA_R&0x10; // read PF4 into SW1
SW2 = GPIO_PORTF_DATA_R&0x01; // read PF0 into SW2
然后您可以检查这些输入的状态并做出决定。
if (!SW1 && !SW2) { // both pressed
GPIO_PORTF_DATA_R = 0x04;
} else if (!SW1) { // SW1 pressed
GPIO_PORTF_DATA_R = 0x02;
} else if (!SW2) { // SW2 pressed
GPIO_PORTF_DATA_R = 0x08;
} else { // neither
GPIO_PORTF_DATA_R = 0x00;
}
如果您查看TM4C123GH6PM datasheet,请参阅第205页,
为GPIO引脚提供保护,可用作四个引脚 JTAG / SWD引脚
如果您检查信号表(第1329页),您将看到其中一个交换机所连接的PF0就是其中之一。所以你需要解锁它。
在第684页,它说
将0x4C4F.434B写入GPIOLOCK寄存器可解锁GPIOCR 注册