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

问题描述:

我正尝试使用ARM Cortex M4单片机连接超声波传感器。由于我正在使用边沿触发定时器来计算传感器回波的上升沿和下降沿之间的时间,因此我应该将其分配给回波输入引脚的备用功能是什么? 我发现在http://cortex-m.com/tm4c-lessons/以下配置:如何在ARM Cortex M4 TM4C123G微控制器中使用GPIO端口控制(GPIOPCTL)?

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

我使用的数据表,了解每一行,但对行我不明白:

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

我想的第一行就是一个复位,第二行选择外设功能,但我不能承担或找到什么设置PCTL寄存器中用于输入7的引脚?

+0

这些寄存器并非ARM内核固有的,而是特定于您正在使用的微控制器。 –

+0

我添加了微控制器的类型,谢谢。 @EugeneSh。 –

+0

@PeterJ我真的不明白你的评论! :D –

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

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

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

GPIOB->PCTL |= 0x07000000;设置引脚6的功能,而不改变其他。