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.

[参考译文] TM4C129ENCPDT:板载 LED 有问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/565714/tm4c129encpdt-trouble-with-on-board-leds

器件型号:TM4C129ENCPDT

查看 TM4C129E Launchpad 手册时、第2.1.6节列出了4个板载用户 LED、即 PN1、PN0、PF0和 PF4。 这些文档还指出、PF0和 PF4可由以太网模块控制。 尽管如此,我仍有一个用例,在发生故障时,我希望所有4个 LED 都闪烁。 为了测试我的逻辑、我转到了现有的闪烁示例项目并添加了几行:

#define PORTN_LED GPIO_PIN_0 | GPIO_PIN_1
#define PORTF_LED GPIO_PIN_0 | GPIO_PIN_4
#define PIN_HIGH 0x01
#define PIN_LOW 0x00

int main (void){

volatile uint32_t ui32Loop;

SysCtlPeripheralEnable (SYSCTL_Periph_GPION);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);

while (!SysCtlPeripheralReady (SYSCTL_Periph_GPION)&&!SysCtlPeripheralReady (SYSCTL_Periph_GPIOF));

//设置方向
GPIOPinTypeGPIOOutput (GPIO_PORTN_BASE、PORTN_LED);
GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、PORTF_LED);

while (1){

//打开引脚
GPIOPinWrite (GPIO_PORTN_BASE、PORTN_LED、PIN_HIGH);
GPIOPinWrite (GPIO_PORTF_BASE、PORTF_LED、PIN_HIGH);

//延迟
for (ui32Loop = 0;ui32Loop < 200000;ui32Loop +);

//关闭引脚
GPIOPinWrite (GPIO_PORTN_BASE、PORTN_LED、PIN_LOW);
GPIOPinWrite (GPIO_PORTF_BASE、PORTF_LED、PIN_LOW);

//延迟
for (ui32Loop = 0;ui32Loop < 200000;ui32Loop +);
}

//无法访问
返回0;
} 

这里的问题是只有 PN0和 PF0闪烁。 更奇怪的是、如果我评论一下:

SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、PORTF_LED); 

GPIOPinWrite 上的 PF0仍然闪烁。 我更深入地了解 了 TM4C129E 数据表 、并对需要执行额外步骤才能释放 PORTF 上的 GPIO_PIN_0和 GPIO_PIN_4的情况进行了验证。 我想知道 EN0LED[0-2]是否控制了这些引脚?

目前、执行的唯一代码是粘贴在上面的主函数。 我的主要目标是使所有4个 LED 闪烁。  我完全确定这是我的最终问题、我只是不确定如何解决。

如果有任何帮助,将不胜感激。 谢谢!

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

    使用 GPIOPinWrite 过程写入 GPIO 引脚的正确过程是

    GPIOPinWrite (GPIO_PORTN_BASE、PORTN_LED、PORTN_LED);

    GPIO 数据寄存器是位段、因此要向特定引脚写入1、需要向相应位置写入1。 只需设置 PIN_HIGH (0x1)的值、并不会使引脚选择 PORTN_LED 中的所有位都变为1。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢! 您的解决方案按预期工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Birt

    很高兴它能为您提供帮助。