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.

[参考译文] EK-TM4C129EXL:GPIO 端口配置。

Guru**** 2481465 points
Other Parts Discussed in Thread: EK-TM4C129EXL

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/701390/ek-tm4c129exl-gpio-port-configuring

器件型号:EK-TM4C129EXL

我正在使用 EK-TM4C129EXL 控制卡。 我尝试将端口配置为输入/输出。

我使用   GPIOPinTypeGPIOOutput (GPIO_Porte _BASE、GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3)成功配置了它;

然后、我尝试使用   GPIOPinWrite (GPIO_PORTG_base、GPIO_PIN_0)将值写入引脚;

如何将值写入端口而不是写入特定的引脚????

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Naveen Kumar29"] GPIOPinWrite (GPIO_PORTG_base、GPIO_PIN_0);[/引用]

    如果您对'GPIOPinWrite()'的调用成功,这将是一个“惊喜”-正如您在上面列出的那样-成功!

    为什么呢?   您对"TM4C 外设驱动程序库 (PDL) 用户手册"的采用和遵守表明、"三个参数"-而不仅仅是两个(正如您的代码所揭示的)是必需的!   中间参数-实际上是-实现所需的"完整端口写入"的"关键"-而不是写入单个引脚!

    遵循 PDL 手册中的密钥提取。   (真的-"必读" -为您/我/其他人。)

    14.2.3.48  GPIOPinWrite
    将值写入指定的引脚。
    原型:
    无效
    GPIOPinWrite (uint32_t ui32Port、uint8_t ui8引脚、uint8_t ui8Val)  // 粗体显示您所使用的参数

    参数:
    ui32Port 是 GPIO 端口的基址。
    ui8引脚是引脚的位封装表示。
    ui8Val 是要写入引脚的值。
    描述:
    将相应的位值写入 ui8引脚指定的输出引脚。 写入配置为输入引脚的引脚无效。
    引脚使用位封装字节指定、其中设置的每个位标识要访问的引脚、字节的位0代表 GPIO 端口引脚0、位1代表 GPIO 端口引脚1、依此类推。

    在您的情况下-要寻址"完整端口"-您可以为(必要)参数2输入(255或0xFF)。   (您也可以使用'GPIO_PIN_N'-其中 N 包括每个条目(0 - 7)-并且您不介意 '腕 带综合症和/或浪费时间/精力。')

    只有那些带有参数2的"出现"引脚才会接受您的写入命令。   (例如、如果是参数。 2为0xFC、param。 3为0xFF -则不会写入端口位0和位1 (置位)。)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Naveen、

    为了添加 CB1的内容、当您询问如何写入整个端口时、您可以使用 GPIOPinWrite 写入多个引脚、就像对 GPIOPinTypeGPIOOutput 所做的那样将它们一起写入。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我(仍然)认为需要"中间参数"(错过了哪个海报)!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当然可以。 因此,"补充 CB1所说的内容"。 只是想让他知道这样做是有效的:

    GPIOPinWrite (GPIO_PORTG_base、GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3、GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3);

    以便写入多个引脚。 )
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是我正在处理的代码、

    int bitShift=0;
    INT 引脚= 0;

    引脚=位移;
    引脚|=(1<<3);          //到或带有端口值的引脚值

    /*将 bitShiftvalue 写入 Porte */

    GPIOPinWrite (GPIO_Porte _BASE、0x0F、Pin);

    这是正确的吗????? 当循环移动位移的每个位(即8位值)时、它是否起作用???

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Naveen、

    只要您非常了解位移如何影响输出(即您发布的内容将打开引脚3、而不是其他任何引脚)、那么您发布的代码就应该起作用。

    也就是说、我不会对0x0F 进行硬编码、而是一起使用 TivaWare 宏或。 这使得代码更易读、因为任何查看该代码的人都可以了解该代码适用于端口上的特定引脚。