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.

[参考译文] TM4C1294NCPDT:TM4C1294位 Bandig single-bit 操作

Guru**** 2606725 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1425468/tm4c1294ncpdt-tm4c1294-bit-bandig-single-bit-manipulation

器件型号:TM4C1294NCPDT

工具与软件:

您好!

我使用 TM4C1294、需要在 portF 上快速更新。
我 使用下面的行初始化端口。

SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOF);
HWREG (GPIO_PORTF_BASE + GPIO_DIR)|= GPIO_PIN_1;
HWREG (GPIO_PORTF_BASE + GPIO_DEN)|= GPIO_PIN_1;

当我使用以下代码时、端口 F 引脚1的输出会改变。

HWREG (GPIO_PORTF_BASE +(GPIO_DATA +(GPIO_PIN_1 << 2)))= 0;和
HWREG (GPIO_PORTF_BASE+(GPIO_O_DATA +(GPIO_PIN_1<< 2)))= GPIO_PIN_1;

但是下列代码不起作用。  您能指定我的错误吗?
*(volatile uint32_t *) 0x421C4FF84)= 1;
*(volatile uint32_t *) 0x421C4FF84)= 0;

此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    但是下列代码不起作用。  您能指定我的错误吗?
    *(volatile uint32_t *) 0x421C4FF84)= 1;
    *((volatile uint32_t *) 0x421C4FF84)= 0;[/报价]

    为什么要写入 0x421C4FF84? GPIOPinWrite() API 已执行位写入。 不是读取-修改-写入。 为什么不查看反汇编来查看映射和写入的地址 PF1。 另请参阅数据表以了解位写入。 请参见下文。  

    PF1位于地址0x4005D008上。  

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

    尊敬的 Charles:
    感谢您的答复。 我正在寻找一个最快的替代方案来取代 PF1的 CHAGE 状态。 我认为位带比 GPIOPinWrite()快、所以我想直接访问内存寄存器。
    此致

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

    正如我提到过的、您应该将 值0x8写入地址0x4005D008以将 PF1设置为高电平。