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.

关于TM4C库函数操作IO输出高低电平函数GPIOPinWrite()的使用注意



一直以来认为,TI的库函数和别的厂商的一样,应该是第一个参数为所属引脚为哪个区域(A,B,C,D,E,F),第二个参数为所属区域的第几个引脚(GPIO_PIN_0-7),第三个参数为所需要得到的电平值(0或1),可是TI的操作是不一样的,比如操作开发板上的LED亮,LED的电路图如下

如上图所示,当给PF1,PF2,PF3高电平时,对应的颜色亮,给低电平时,对应的颜色是灭的。

该函数的原型如下

void
GPIOPinWrite(uint32_t ui32Port, uint8_t ui8Pins, uint8_t ui8Val)
{
    //
    // Check the arguments.
    //
    ASSERT(_GPIOBaseValid(ui32Port));

    //
    // Write the pins.
    //
    HWREG(ui32Port + (GPIO_O_DATA + (ui8Pins << 2))) = ui8Val;
}

那么按照我们以前芯片一般的操作,应该是这个样子的

GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1, 1);//点亮LED

可是,在TM4C中不是这个样子的,这样子是不会点亮LED的,应该是这个样子

GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1, GPIO_PIN_1);

注意:第三个参数和第二个参数相同的时候,才会把该IO输出高电平。

输出低电平的话,直接写0就可以了,应该是下面这个样子

GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1, 0);