You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TIVA TM4C123 同时按下sw1和sw2点亮红色LED代码问题咨询

TIVA TM4C123 GPIO双按键点亮红色LED修复方案

核心问题定位

你的代码存在两处错误:

  • 按键电平判断逻辑反转:SW1(PF4)、SW2(PF0)配置为上拉输入,未按下时引脚为高电平,按下时为低电平,原代码的判断条件是检测按键未按下的状态,和需求完全相反。
  • while循环末尾冗余代码:原代码在所有逻辑判断结束后,额外加了一行全LED关闭的代码,导致前面分支点亮的LED仅能维持几纳秒,人眼无法识别点亮效果。

修复后的完整代码

#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "inc/hw_gpio.h"

uint8_t sw1=2;
uint8_t sw2=2;

int main(void)
{
    SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);

    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;

    GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);

    GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_0|GPIO_PIN_4);
    GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_0|GPIO_PIN_4, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);


    while(1)
    {
        sw1 = GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_4);
        sw2 = GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_0);
        // 修改判断逻辑:检测按键按下(低电平)
        if (sw1 == 0 && sw2 == 0)
        {
            // 双按键同时按下点亮红色LED(PF1)
            GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, GPIO_PIN_1);
        }
        else if (sw2 == 0)
        {
            // SW2单独按下点亮蓝色LED(PF2)
            GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, GPIO_PIN_2);
        }
        else if (sw1 == 0)
        {
            // SW1单独按下点亮绿色LED(PF3)
            GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, GPIO_PIN_3);
        }
        else
        {
            // 无按键按下关闭所有LED
            GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 0x00);
        }
    }
}

内容的提问来源于stack exchange,提问作者Porton_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:54:06