2017-08-03 50 views
0

我正嘗試使用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 –

回答

1

如第688f頁datasheet中所述,該寄存器的已使用位27:24用於設置要在引腳6上使用的備用功能。根據GPIOB->PCTL,配置的引腳爲PB6。

現在您可以在第1351頁上看到表23-5設置了哪個備用功能。在這種情況下,它是T0CCP0,它是基於引腳方向和外設配置的pwm,捕獲或比較結果。

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

GPIOB->PCTL |= 0x07000000;設置引腳6的功能,而不改變其他。