明白DSP編程的基本流程,熟悉DSP28035的GPIO的使用。
代碼執行流程:
首先是系統時鍾的選擇。
其次是PIE中斷向量表的初始化。
一些外設的初始化操作
While(){}
根據EXPERIMENTER’S KIT板上兩個發光二極管對DSP的GPIO進行操作。
GPIO31和GPIO34兩個IO口進行操作
宏定義操作:
#define LED_ON (GpioDataRegs.GPADAT.bit.GPIO31 = 0;) //GPIO31輸出低電平
#define LED_OFF (GpioDataRegs.GPADAT.bit.GPIO31 = 1;) //GPIO31輸出高電平
#define LED_TOGGLE (GpioDataRegs.GPATOGGLE.bit.GPIO31 = 1) //GPIO31輸出翻轉電平
輸入的宏定義操作:
#define IsK3_L (GpioDataRegs.GPBDAT.bit.GPIO32 == 0) //GPIO32輸入低電平
#define IsK3_H (GpioDataRegs.GPBDAT.bit.GPIO32 == 1) //GPIO32輸入高電平
void Init_GPIO()
{
EALLOW; //GPIO寄存器受保護
GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 0; //GPIO31作為普通IO
GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 1; //GPIO31作為CAN_TXD
GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0; //GPIO34作為普通IO
GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 1; //GPIO34作為特殊功能口
GpioCtrlRegs.GPADIR.bit.GPIO31 = 1; //GPIO31方向為輸出
GpioCtrlRegs.GPADIR.bit.GPIO31 = 0; //GPIO31方向為輸入
GpioCtrlRegs.GPBDIR.bit.GPIO34 = 1; //GPIO34方向為輸出
GpioCtrlRegs.GPADIR.bit.GPIO34 = 1; //GPIO34方向為輸入
EDIS;
}
輸入操作:
EALLOW; //GPIO寄存器受保護
GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 0; //GPIO32作為普通IO
GpioCtrlRegs.GPBDIR.bit.GPIO32 = 0; //GPIO32方向為輸入
GpioCtrlRegs.GPBPUD.bit.GPIO32 = 0; //開啟內部上拉
EDIS;
輸出IO口輸出高低電平的配置操作方式:
Eg1:
GpioDataRegs.GPADAT.bit.GPIO31 = 1; //GPIO31輸出高電平
GpioDataRegs.GPBDAT.bit.GPIO34 = 1; //GPIO34輸出高電平
GpioDataRegs.GPADAT.bit.GPIO31 = 0; //GPIO31輸出低電平
GpioDataRegs.GPBDAT.bit.GPIO34 = 0; //GPIO34輸出低電平
Eg2:
GpioDataRegs.GPASET.bit.GPIO31 = 1; //Set置位則輸出高電平
GpioDataRegs.GPBSET.bit.GPIO34 = 1;
GpioDataRegs.GPACLEAR.bit.GPIO31 = 1; //CLEAR置位則輸出低電平
GpioDataRegs.GPBCLEAR.bit.GPIO34 = 1;
Eg3:
GpioDataRegs.GPATOGGLE.bit.GPIO31 = 1; //GPIO31端口電平翻轉一次
GpioDataRegs.GPBTOGGLE.bit.GPIO34 = 1; //GPIO34端口電平翻轉一次
檢測DSP的IO輸入操作:
GPIO的輸入操作配置;
if( GpioDataRegs.GPBDAT.bit.GPIO32 == 0) //if(IsK3_L)
{
GpioDataRegs.GPBDAT.bit.GPIO40 = 0;
}
else
{
GpioDataRegs.GPBDAT.bit.GPIO40 = 1;
}
上面的語句就可以作為檢測的輸入端口了。這樣關於DSP的IO口的配置已經完成了。根據相應的結構體可以查看寄存器。注意學會使用聯想功能。