GPIO口复用功能怎么配置?



各位前辈,我想问一下我下面的GPIO口复用功能的配置是否正确。我的处理器是TI的LM3S9B92,我要启用MCU的I2C1模块,而I2C1SCL是PA6的复用功能,I2C1SDA是PA7的复用功能。

void
I2C_Init(void)
{
     SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C1);                   //使能I2C1模块
     SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);               //使能SCL/SDA所在的GPIO模块(此句需重点注意)
   
     GPIOPinConfigure(GPIO_PA6_I2C1SCL);
     GPIOPinConfigure(GPIO_PA7_I2C1SDA);

     GPIOPinTypeI2C(GPIO_PORTA_BASE, GPIO_PIN_6 | GPIO_PIN_7);   // 配置相关管脚为SCL、SDA功能(此句需重点注意)
     IntEnable(INT_I2C1);

     I2CMasterInit(I2C1_MASTER_BASE,false);                                       //I2C主机模块初始化,100kbps
     I2CMasterIntEnable(I2C1_MASTER_BASE);                                     //使能I2C主模块中断
     IntMasterEnable();                                                                                   //使能处理器中断
     I2CMasterEnable(I2C1_MASTER_BASE); 

}

  • 配置没啥问题。配置中断时根据你的实际需要进行配置的。配置I2C仅仅

     SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C1);                   //使能I2C1模块
         SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);               //使能SCL/SDA所在的GPIO模块(此句需重点注意)
       
         GPIOPinConfigure(GPIO_PA6_I2C1SCL);
         GPIOPinConfigure(GPIO_PA7_I2C1SDA);

         GPIOPinTypeI2C(GPIO_PORTA_BASE, GPIO_PIN_6 | GPIO_PIN_7);   // 配置相关管脚为SCL、SDA功能(此句需重点注意)

    I2CMasterEnable(I2C1_MASTER_BASE); 

    当然你还需要配置I2C的速率

    I2CMasterInitExpClk(I2C1_MASTER_BASE, SysCtlClockGet(), false);

    就可以了。

  • I2CMasterInit(I2C1_MASTER_BASE,false);                                       //I2C主机模块初始化,100kbps

    这个不是TI标准的库函数。