dsp gpio控制

1.1. GPxMUX寄存器

可以稱爲功能選擇寄存器,使用x代替A、B、D、E、F、G,下同。用於確定IO的功能。

GPxMUX.bit.xx = 0,xx通用數字IO
GPxMUX.bit.xx = 1,xx外圍IO引腳

1.2. GPxDIR寄存器

可以稱爲管腳方向寄存器,如果某管腳已經設置爲通用數字IO,則GPxDIR寄存器確定此IO是輸入還是輸出。

GPxDIR.bit.xx = 0,xx配置爲輸入
GPxDIR.bit.xx = 1,xx配置爲輸出

器件復位後,GPxMUX與GPxDIR寄存器默認值均爲0。

1.3. GPxQUAL寄存器

可以稱爲量化寄存器,設置採樣脈衝。在GPIO配置爲通用IO後,F2812的IO引腳有對輸入過濾噪聲的功能,即對IO輸入電平採樣,在採樣設置的次數後都是一個電平,纔會確定有效。假如設置爲輸入高電平,採樣10次,那麼這10都爲高電平才認爲輸入高有效,GPxDAT寄存器相應位纔會改變。

需要注意的是,F和G組GPIO無此寄存器。

 

2.1. GPxDAT寄存器

可以稱爲IO數據寄存器,當IO配置爲輸出時,對GPxDAT中寫數據就可以決定輸出狀態:

GPxDAT.bit.xx = 0,輸出0
GPxDAT.bit.xx = 1,輸出1

當IO配置爲輸入時,讀取GPxDAT中的數據就可以決定輸入狀態。
注意:當引腳配置爲通用IO時,相應的外設功能必須被屏蔽,否則可能會引發中斷。使用GPxDAT 寄存器更改輸出引腳的電平時,請務必小心不要錯誤地更改另一引腳的電平。例如,如果您打算通過使用讀取- 修改- 寫入指令寫入GPADAT 寄存器第0 位來更改GPIOA0 的輸出鎖定電平。如果另一個I/O 端口A 信號在該指令的讀取和寫入階段之間更改了電平,則可能出現問題。另外可以通過使用GPxSET、GPxCLEAR 和GPxTOGGLE 寄存器載入輸出鎖定來避免這種情況。

2.2. GPxSET寄存器

可以稱爲置位寄存器,每個IO口都有一個置位寄存器,只能寫不能讀,也就是隻能用在輸出上,寫1可以使輸出爲1,寫0沒有變化。

GPxSET.bit.xx = 0,被忽略;
GPxSET.bit.xx = 1,且引腳配置爲輸出,則輸出1

2.3. GPxCLEAR寄存器

可以稱爲復位寄存器,每個IO口都有一個復位寄存器,只能寫不能讀,也就是隻能用在輸出上,寫1可以使輸出爲1,寫0沒有變化。

GPxCLEAR.bit.xx = 0,被忽略;
GPxCLEAR.bit.xx = 1,且引腳配置爲輸出,則輸出0

2.4. GPxTOGGLE寄存器

可以稱爲翻轉寄存器,每個IO口都有一個翻轉寄存器,只能寫不能讀,也就是隻能用在輸出上,寫1可以使輸出翻轉,寫0沒有變化。

GPxTOGGLE.bit.xx = 0,被忽略;
GPxTOGGLE.bit.xx = 1,且引腳配置爲輸出,則輸出翻轉

例子:

void user_gpio_init(void)
{ 
     EALLOW;
     GpioMuxRegs.GPBMUX.bit.PWM7_GPIOB0 = 0;        
     GpioMuxRegs.GPBDIR.bit.GPIOB0 = 1;     // output    
     GpioMuxRegs.GPBQUAL.BIT.QUALPRD = 0x0000;    // Input qualifier disabled   
     EDIS;
}

void user_gpio_set(void)
{
 GpioDataRegs.GPBSET.bit.GPIOB0 = 1;
}

void user_gpio_clear(void)
{
GpioDataRegs.GPBCLEAR.bit.GPIOB0 = 1;
}

使用:

user_gpio_clear();//對gpiob0置0

user_gpio_set();//對gpiob0置1


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章