This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

最简单的问题:GPIO无法得到希望的输出



TM4C123系列

程序如下:用逻辑分析仪看 PG2 始终保持高电平(原意是输出脉冲)

int main(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);
GPIOPinTypeGPIOOutput(GPIO_PORTG_BASE, GPIO_PIN_2);

while (1)
{
GPIOPinWrite(GPIO_PORTG_BASE, GPIO_PIN_2, 0);
SysCtlDelay(250 * (SysCtlClockGet() / 3000));
GPIOPinWrite(GPIO_PORTG_BASE, GPIO_PIN_2, 0);
SysCtlDelay(250 * (SysCtlClockGet() / 3000));
}
}

手册上没找到例子,程序可以编译通过,也能下载到芯片里

  • 1.系统的主时钟没有设置

    2.你的程序配置是否OK,给你个LED的例子

    //LED实验程序解析
    //头文件
    #include <stdint.h>
    #include <stdbool.h>
    #include "inc/hw_memmap.h"
    #include "inc/hw_types.h"
    #include "driverlib/sysctl.h"
    #include "driverlib/rom.h"
    #include "driverlib/gpio.h"
    #include "driverlib/fpu.h"
    #include "driverlib/pin_map.h"
    
    int main (void)
    {
      //使能FPU
      FPUEnable();
      FPULazyStackingEnable();
      //设置系统时钟为50MHz (400/2/4=50)
      SysCtlClockSet(SYSCTL_SYSDIV_4 |SYSCTL_USE_PLL 
    |SYSCTL_OSC_MAIN |SYSCTL_XTAL_16MHZ);
      //使能相关的外设
      ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);
     //配置PG2为输出
     ROM_GPIOPinTypeGPIOOutput(GPIO_PORTG_BASE,GPIO_PIN_2);
    
    while(1)
    {
    	//翻转LED,延时时间为250ms
    	//延时 = (SysCtlClockGet()/12)*(3/SysCtlClockGet())=0.25s
    	ROM_GPIOPinWrite(GPIO_PORTG_BASE,GPIO_PIN_2, GPIO_PIN_2);
    	ROM_SysCtlDelay(SysCtlClockGet()/12);
    	ROM_GPIOPinWrite(GPIO_PORTG_BASE,GPIO_PIN_2, 0);
    	ROM_SysCtlDelay(SysCtlClockGet()/12);
    }
    }
    
  • 谢谢,我试试你的方案