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.

F28m35x uart_echo.c例程的疑问



你好!我在看Host example中的例子uart_echo,在程序中以下几句实现了引脚的定义:

    GPIOPinTypeUART(GPIO_PORTE_BASE, GPIO_PIN_4 | GPIO_PIN_5);
    GPIOPinConfigure(GPIO_PE4_U0RX);
    GPIOPinConfigure(GPIO_PE5_U0TX);
实际上这几句包含了以下函数:

GPIODirModeSet(GPIO_PORTE_BASE, GPIO_PIN_6, GPIO_DIR_MODE_HW);

GPIOPadConfigSet(GPIO_PORTE_BASE, GPIO_PIN_6, GPIO_PIN_TYPE_STD);

HWREG(GPIO_PORTE_BASE + GPIO_O_APSEL)|= ....

HWREG(ulBase + GPIO_O_PCTL) = ......

但配置一个管脚的复用功能不是还要配置核的语句

void  GPIOPinConfigureCoreSelect(unsigned long ulBase, unsigned char ucPins,unsigned char ucCore)
这在例子uart_echo中并未体现,这是怎么回事啊?希望能指点一下,谢谢。
  • timberrain,

    因为默认情况下,这些GPIO的引脚都是归M3内核来控制,所以例程里面就没有再写core select的代码。一般只有当某些GPIO口需要给C28的时候,才会用到GPIOPinConfigureCoreSelect函数。

    当然,你考虑的点很好,你可以加上去,我赞成这样的习惯。

    Eric

  • HWREG(GPIO_PORTE_BASE + GPIO_O_APSEL)|= ....这个语句中是配置APSEL寄存器 ,应该怎么配,弄不明白!

     //PORT D
        // MII_TXD3
        GPIODirModeSet(GPIO_PORTD_BASE, GPIO_PIN_4, GPIO_DIR_MODE_HW);        
        GPIOPadConfigSet(GPIO_PORTD_BASE, GPIO_PIN_4, GPIO_PIN_TYPE_STD);    
        HWREG(GPIO_PORTD_BASE + GPIO_O_PCTL) &= 0xFFF0FFFF;
        HWREG(GPIO_PORTD_BASE + GPIO_O_PCTL) |= 0x00040000;

        //PORT E
        // MII_RXD3, MII_MDIO, MII_TXER, MII_RXD0
        GPIODirModeSet(GPIO_PORTE_BASE, GPIO_PIN_7|GPIO_PIN_6|GPIO_PIN_5|GPIO_PIN_4, GPIO_DIR_MODE_HW);
        GPIOPadConfigSet(GPIO_PORTE_BASE, GPIO_PIN_7|GPIO_PIN_6|GPIO_PIN_5|GPIO_PIN_4, GPIO_PIN_TYPE_STD);
        HWREG(GPIO_PORTE_BASE + GPIO_O_APSEL)|= 0x000000E0;
        HWREG(GPIO_PORTE_BASE + GPIO_O_PCTL) &= 0x0000FFFF;
        HWREG(GPIO_PORTE_BASE + GPIO_O_PCTL) |= 0xCCC70000;
    这是EMAC的引脚配置  为什么在配置port D的TXD3时不需要加HWREG(GPIO_PORTE_BASE + GPIO_O_APSEL)|= 0x00000010;
    而 下一个portE时, 加入了HWREG(GPIO_PORTE_BASE + GPIO_O_APSEL)|= 0x000000E0;   而不是语句HWREG(GPIO_PORTE_BASE + GPIO_O_APSEL)|= 0x000000F0;     

     

    高手,帮忙解答一下!