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.

[参考译文] TM4C123GH6PM:位段实现

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1191068/tm4c123gh6pm-bit-banding-implementation

器件型号:TM4C123GH6PM
Thread 中讨论的其他器件:EK-TM4C123GXL

大家好、我想实现位段来使用它来设置和清除 GPIO 引脚、但我发现它需要更多的指令周期、而不是设置方式  

如果有一些错误、这就是我的实现方法告诉我实现它的最佳方法  

易失性 uint32_t* GPIO_GetBitBandIOAddress (无符号整型索引)

PinConfig * pinDef =(PinConfig *)&GPIOTIVA_CONFIG.pinConfigs[index];
const volatile uint32_t * baseAddress = gpioBaseAddresses[pinDef->port];

int pinNumber = getPinNumber (pinDef->pin);

//添加0x3FC (数据寄存器偏移量)并清除顶部字节以获取数据地址。
uint32_t dataAddress = 0x00FFFFFF &((uint32_t) baseAddress + 0x3FC);

return (volatile uint32_t *)(0x42000000 +(32*dataAddress)+(4*pinNumber));

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

    您好 Rehab、

    我们在 TivaWare 中有一个位段示例、可参考:[INSTALL Path]\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c123gxl\bitband

    查看参考资料是否为您提供了在您的预期绩效水平下进行此操作所需的信息。 如果没有、我需要有关您具体用例的更多背景信息。

    此致、

    Ralph Jacobi

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

    您好 Ralph  

    我想使用位段来访问阵列、以驱动 TLC (LED 驱动器)以实现快速响应(如果可能)或不可能)  

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

    您好 Rehab、

    我不是很熟悉位段、但从我所读出的内容来看、当与 GPIO 一起使用时、结果更类似于位拆裂。 因此、我不确定这将驱动 LED 驱动器上的快速响应。 使用位段的固有优势似乎是、您可以在不 能中断的单个原子指令中执行写入操作、但这不一定意味着性能的提高。

    我发现这篇文章非常有用: https://atadiat.com/en/e-bit-banding-explained-a-feature-of-arm-cortex-m3/

    此致、

    Ralph Jacobi