如何在 ARM Cortex M4 TM4C123G 微控制器中使用 GPIO 端口控制 (GPIOPCTL)?

How to use GPIO Port Control (GPIOPCTL) in ARM Cortex M4 TM4C123G microcontroller?

我正在尝试将超声波传感器与 ARM Cortex M4 mcu 连接。由于我正在使用边沿触发定时器来计算传感器回波上升沿和下降沿之间的时间,我应该分配给回波输入引脚的替代功能是什么? 我在 http://cortex-m.com/tm4c-lessons/ 上找到了以下配置:

void Timer0_init(void)
{
SYSCTL->RCGCTIMER |=(1U<<0); 
SYSCTL->RCGCGPIO |=(1U<<1); 
GPIOB->DIR &=~ECHO;
GPIOB->DEN |=ECHO;
GPIOB->AFSEL |=ECHO;
GPIOB->PCTL &=~0x0F000000;
GPIOB->PCTL |= 0x07000000;
TIMER0->CTL &=~1;
TIMER0->CFG =4;
TIMER0->TAMR = 0x17;
TIMER0->CTL |=0x0C;
TIMER0->CTL |=1;
}

我使用数据 sheet 来理解每一行,但对于我不理解的行:

GPIOB->PCTL &=~0x0F000000;
GPIOB->PCTL |= 0x07000000;

我猜第一行只是reset,第二行是选择外设功能,但是我不明白也找不到在PCTL寄存器中将他输入的pin设置为7是什么意思?

如第 688f 页的 datasheet 中所述,该寄存器的使用位 27:24 用于设置要在引脚 6 上使用的备用功能。根据 GPIOB->PCTL配置引脚为 PB6.

现在您可以在第 1351 页上看到 Table23-5 设置了哪个备用功能。在这种情况下,它是 T0CCP0,它可以是 pwm、捕获或基于引脚方向和外设配置的比较功能。

GPIOB->PCTL &=~0x0F000000;用于复位引脚6功能,不触及其他引脚。

GPIOB->PCTL |= 0x07000000;设置pin 6功能,其他不变