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));
}