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.
大家好、我想实现位段来使用它来设置和清除 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