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.

TM4C123GH6PMI的针脚配置问题



RT,配置如下,但是用示波器观察不到PB0的信号变化,有木有大神解答下

SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_0);
while(1)
{

if(error!=1400)
{GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_0, true);
SysCtlDelay(2000000);

}

else

{
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0, 0x00);
SysCtlDelay(2000000);

}
}

  • SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);//这个是使能PF的时钟

    使能B口的时钟应该是

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);


    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);

    SysCtlDelay(10); //在模块时钟使能后 需要加一个超过5cycle时钟的delay, 这个要求在SysCtlPeripheralEnable()函数说明中有要求: 


    GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_0);


    参见: 

    //*****************************************************************************
    //
    //! Enables a peripheral.
    //!
    //! \param ui32Peripheral is the peripheral to enable.
    //!
    //! This function enables a peripheral. At power-up, all peripherals are
    //! disabled; they must be enabled in order to operate or respond to register
    //! reads/writes.
    //!
    //! The \e ui32Peripheral parameter must be only one of the following values:
    //! \b SYSCTL_PERIPH_ADC0, \b SYSCTL_PERIPH_ADC1, \b SYSCTL_PERIPH_CAN0,
    //! \b SYSCTL_PERIPH_CAN1, \b SYSCTL_PERIPH_CCM0,\b SYSCTL_PERIPH_COMP0,
    //! \b SYSCTL_PERIPH_EEPROM0, \b SYSCTL_PERIPH_EMAC, \b SYSCTL_PERIPH_EPHY,
    //! \b SYSCTL_PERIPH_EPI0,
    //! \b SYSCTL_PERIPH_GPIOA, \b SYSCTL_PERIPH_GPIOB, \b SYSCTL_PERIPH_GPIOC,
    //! \b SYSCTL_PERIPH_GPIOD, \b SYSCTL_PERIPH_GPIOE, \b SYSCTL_PERIPH_GPIOF,
    //! \b SYSCTL_PERIPH_GPIOG, \b SYSCTL_PERIPH_GPIOH, \b SYSCTL_PERIPH_GPIOJ,
    //! \b SYSCTL_PERIPH_GPIOK, \b SYSCTL_PERIPH_GPIOL, \b SYSCTL_PERIPH_GPIOM,
    //! \b SYSCTL_PERIPH_GPION, \b SYSCTL_PERIPH_GPIOP, \b SYSCTL_PERIPH_GPIOQ,
    //! \b SYSCTL_PERIPH_GPIOR, \b SYSCTL_PERIPH_GPIOS, \b SYSCTL_PERIPH_GPIOT,
    //! \b SYSCTL_PERIPH_HIBERNATE,
    //! \b SYSCTL_PERIPH_I2C0, \b SYSCTL_PERIPH_I2C1, \b SYSCTL_PERIPH_I2C2,
    //! \b SYSCTL_PERIPH_I2C3, \b SYSCTL_PERIPH_I2C4, \b SYSCTL_PERIPH_I2C5,
    //! \b SYSCTL_PERIPH_I2C6, \b SYSCTL_PERIPH_I2C7, \b SYSCTL_PERIPH_I2C8,
    //! \b SYSCTL_PERIPH_I2C9, \b SYSCTL_PERIPH_LCD0,
    //! \b SYSCTL_PERIPH_ONEWIRE0,
    //! \b SYSCTL_PERIPH_PWM0, \b SYSCTL_PERIPH_PWM1, \b SYSCTL_PERIPH_QEI0,
    //! \b SYSCTL_PERIPH_QEI1, \b SYSCTL_PERIPH_SSI0, \b SYSCTL_PERIPH_SSI1,
    //! \b SYSCTL_PERIPH_SSI2, \b SYSCTL_PERIPH_SSI3, \b SYSCTL_PERIPH_TIMER0,
    //! \b SYSCTL_PERIPH_TIMER1, \b SYSCTL_PERIPH_TIMER2, \b SYSCTL_PERIPH_TIMER3,
    //! \b SYSCTL_PERIPH_TIMER4, \b SYSCTL_PERIPH_TIMER5, \b SYSCTL_PERIPH_TIMER6,
    //! \b SYSCTL_PERIPH_TIMER7, \b SYSCTL_PERIPH_UART0, \b SYSCTL_PERIPH_UART1,
    //! \b SYSCTL_PERIPH_UART2, \b SYSCTL_PERIPH_UART3, \b SYSCTL_PERIPH_UART4,
    //! \b SYSCTL_PERIPH_UART5, \b SYSCTL_PERIPH_UART6, \b SYSCTL_PERIPH_UART7,
    //! \b SYSCTL_PERIPH_UDMA, \b SYSCTL_PERIPH_USB0, \b SYSCTL_PERIPH_WDOG0,
    //! \b SYSCTL_PERIPH_WDOG1, \b SYSCTL_PERIPH_WTIMER0, \b SYSCTL_PERIPH_WTIMER1,
    //! \b SYSCTL_PERIPH_WTIMER2, \b SYSCTL_PERIPH_WTIMER3,
    //! \b SYSCTL_PERIPH_WTIMER4, or \b SYSCTL_PERIPH_WTIMER5
    //!
    //! \note It takes five clock cycles after the write to enable a peripheral
    //! before the the peripheral is actually enabled. During this time, attempts
    //! to access the peripheral result in a bus fault. Care should be taken
    //! to ensure that the peripheral is not accessed during this brief time
    //! period.
    //!
    //! \return None.
    //
    //*****************************************************************************
    void
    SysCtlPeripheralEnable(uint32_t ui32Peripheral)
    {
    //
    // Check the arguments.
    //
    ASSERT(_SysCtlPeripheralValid(ui32Peripheral));

    //
    // Enable this peripheral.
    //
    HWREGBITW(SYSCTL_RCGCBASE + ((ui32Peripheral & 0xff00) >> 8),
    ui32Peripheral & 0xff) = 1;
    }



    JIAJIE ZANG 说:

    RT,配置如下,但是用示波器观察不到PB0的信号变化,有木有大神解答下

    SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
    GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_0);
    while(1)
    {

    if(error!=1400)
    {GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_0, true);
    SysCtlDelay(2000000);

    }

    else

    {
    GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0, 0x00);
    SysCtlDelay(2000000);

    }
    }

  • 学习了。这些说明一般没仔细看,以后操作函数的时候需要仔细看这些说明了。