|
说出来实在丢人,做单片机7年了,现在想学DSP,刚好手头上有F2802这个芯片,就写点程序来驱动玩玩,可是搞了两天尽然连GPIO都未能驱动(硬件是正常的,晶振、复位、电源都正常,别人的程序能跑),望玩过2802的XD指点一下。不胜感激!
程序如下:
void main(void)
{
//初始化系统 HSPCLK = SYSCLKOUT/2 LSPCLK = SYSCLKOUT/4
int temp=5000;
EALLOW;
SysCtrlRegs.WDCR= 0x0068;
SysCtrlRegs.PLLCR.bit.DIV = 0x06;
SysCtrlRegs.PLLSTS.bit.CLKINDIV = 0;
while(temp--);
SysCtrlRegs.HISPCP.all = 0x0001; // HSPCLK = SYSCLKOUT/2
SysCtrlRegs.LOSPCP.all = 0x0002; // LSPCLK = SYSCLKOUT/4
EDIS;
/*关中断*/
DINT;
IER = 0x0000;
IFR = 0x0000;
/*初始化PIE中断*/
InitPieCtrl(); //这个就不写了, Disable the PIE Clear all PIEIER registers:
/*初始化PIE中断矢量表*/
InitPieVectTable();
//
InitGpio();
while(1)
{
GpioDataRegs.GPADAT.bit.GPIO26 = 1;
delay();
GpioDataRegs.GPADAT.bit.GPIO26 = 0;
delay();
}
}
void InitPieVectTable(void)
{
int16 i;
Uint32 *Source = (void *) &PieVectTableInit;
Uint32 *Dest = (void *) &PieVectTable;
EALLOW;
for(i=0; i < 128; i++)
*Dest++ = *Source++;
EDIS;
// Enable the PIE Vector Table
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
}
void InitGpio(void)
{
EALLOW;
// Each GPIO pin can be:
// a) a GPIO input/output
// b) peripheral function 1
// c) peripheral function 2
// d) peripheral function 3
// By default, all are GPIO Inputs
GpioCtrlRegs.GPAMUX1.all = 0x0000; // GPIO functionality GPIO0-GPIO15
GpioCtrlRegs.GPAMUX2.all = 0x0000; // GPIO functionality GPIO16-GPIO31
GpioCtrlRegs.GPBMUX1.all = 0x0000; // GPIO functionality GPIO32-GPIO34
GpioCtrlRegs.GPADIR.all = 0x0000; // GPIO0-GPIO31 are GP inputs
GpioCtrlRegs.GPBDIR.all = 0x0000; // GPIO32-GPIO34 are inputs
// Each input can have different qualification
// a) input synchronized to SYSCLKOUT
// b) input qualified by a sampling window
// c) input sent asynchronously (valid for peripheral inputs only)
GpioCtrlRegs.GPAQSEL1.all = 0x0000; // GPIO0-GPIO15 Synch to SYSCLKOUT
GpioCtrlRegs.GPAQSEL2.all = 0x0000; // GPIO16-GPIO31 Synch to SYSCLKOUT
GpioCtrlRegs.GPBQSEL1.all = 0x0000; // GPIO32-GPIO34 Synch to SYSCLKOUT
// Pull-ups can be enabled or disabled.
GpioCtrlRegs.GPAPUD.all = 0x0000; // Pullup's enabled GPIO0-GPIO31
GpioCtrlRegs.GPBPUD.all = 0x0000; // Pullup's enabled GPIO32-GPIO34
//GpioCtrlRegs.GPAPUD.all = 0xFFFF; // Pullup's disabled GPIO0-GPIO31
//GpioCtrlRegs.GPBPUD.all = 0xFFFF; // Pullup's disabled GPIO32-GPIO34
GpioCtrlRegs.GPADIR.bit.GPIO26=1; //Output BUZZER
EDIS;
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|