randyzzy 发表于 2013-7-23 12:41:26

菜鸟请教F2802程序

说出来实在丢人,做单片机7年了,现在想学DSP,刚好手头上有F2802这个芯片,就写点程序来驱动玩玩,可是搞了两天尽然连GPIO都未能驱动(硬件是正常的,晶振、复位、电源都正常,别人的程序能跑),望玩过2802的XD指点一下。不胜感激!
程序如下:
void main(void)
{

        //初始化系统HSPCLK = SYSCLKOUT/2LSPCLK = 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 PIEClear 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;               
       

}               

randyzzy 发表于 2013-7-23 12:43:47

个人理解:在控制DSP时,配置好时钟后不就可以直接驱动IO口了吗?也没看到IO口也需要时钟啊(像STM32),怎么芯片就是没动起来了?不知是不是我还有地方没有配置好,望知道的XD给指点一下。谢谢!

电子小生 发表于 2013-7-23 12:56:14

GpioDataRegs.GPASET.bit.GPIO26                 = 1 //置1
GpioDataRegs.GPACLEAR.bit.GPIO26         = 1//清零

sleet1986 发表于 2013-7-23 14:19:44

看不出什么问题,时钟配置好,IO口配置好,就没什么了。
TI都有例子的,LZ没运行一下吗?

randyzzy 发表于 2013-7-23 20:33:22

电子小生 发表于 2013-7-23 12:56 static/image/common/back.gif
GpioDataRegs.GPASET.bit.GPIO26                 = 1 //置1
GpioDataRegs.GPACLEAR.bit.GPIO26         = 1//清零

我首先用的就是这个方法,没成功所有改了。我再查看了资料,没发现设置问题,嗨,惭愧啊!

randyzzy 发表于 2013-7-23 20:34:23

sleet1986 发表于 2013-7-23 14:19 static/image/common/back.gif
看不出什么问题,时钟配置好,IO口配置好,就没什么了。
TI都有例子的,LZ没运行一下吗? ...

我没有找到2802的例子,不知道再哪能找到,能否提供一下网址?谢谢!

sleet1986 发表于 2013-7-24 08:27:36

randyzzy 发表于 2013-7-23 20:34 static/image/common/back.gif
我没有找到2802的例子,不知道再哪能找到,能否提供一下网址?谢谢!




这个附件是TI280x 系列的的库和实例的安装文件,下面的是网址。
http://www.ti.com.cn/tool/cn/SPRC191

zmh169 发表于 2014-8-25 17:19:56

正在学习使用28015,希望会不会和楼主一样跑不起例程。

steaven2000 发表于 2014-8-25 18:35:25

本帖最后由 steaven2000 于 2014-8-25 18:38 编辑

你把Init_GPIO屏蔽了?这个不能屏蔽,因为DIR寄存器GPIO26需设置为输出(1)。

上面有人提到SET/CLEAR寄存器,这里LED驱动不了不是这个原因,楼主中间已经有delay了。

还有,楼主要注意查看一下你的delay到底是多长时间,太短的话看不到LED闪的。

sunrosewang 发表于 2014-9-9 17:00:51

GpioDataRegs.GPADAT.bit.GPIO26 = 1;
这个改为 GpioDataRegs.GPASET.bit.GPIO26 = 1;
GpioDataRegs.GPADAT.bit.GPIO26 = 0;
这个改为GpioDataRegs.GPACLEAR.bit.GPIO26 = 1;
试试

另外你确定你的GPIO的时钟打开了吗?



页: [1]
查看完整版本: 菜鸟请教F2802程序