[资料分享] DSP实现流水灯样式的源码

fish001   2018-9-22 20:50 楼主
  • /*
  • * main.c
  • *
  • *  Created on: 2018年8月18日
  • *      Author: LYJCD
  • */

  • //###########################################################################
  • //
  • // FILE:    Example1_2833xGpioLED.c
  • //
  • // TITLE:   用DSP点亮发光二极管实验
  • //
  • //
  • //    根据在RAM中调试的需要,这个项目配置成"boot to SARAM".2833x引导模式
  • //    表如下显示. 常用的还有"boot to Flash"模式,当程序在RAM调试完善后就
  • //    可以将代码烧进Flash中并使用"boot to Flash"引导模式.
  • //
  • //       $Boot_Table:
  • //
  • //         GPIO87   GPIO86     GPIO85   GPIO84
  • //          XA15     XA14       XA13     XA12
  • //           PU       PU         PU       PU
  • //        ==========================================
  • //            1        1          1        1    Jump to Flash
  • //            1        1          1        0    SCI-A boot
  • //            1        1          0        1    SPI-A boot
  • //            1        1          0        0    I2C-A boot
  • //            1        0          1        1    eCAN-A boot
  • //            1        0          1        0    McBSP-A boot
  • //            1        0          0        1    Jump to XINTF x16
  • //            1        0          0        0    Jump to XINTF x32
  • //            0        1          1        1    Jump to OTP
  • //            0        1          1        0    Parallel GPIO I/O boot
  • //            0        1          0        1    Parallel XINTF boot
  • //            0        1          0        0    Jump to SARAM            <- "boot to SARAM"
  • //            0        0          1        1    Branch to check boot mode
  • //            0        0          1        0    Boot to flash, bypass ADC cal
  • //            0        0          0        1    Boot to SARAM, bypass ADC cal
  • //            0        0          0        0    Boot to SCI-A, bypass ADC cal
  • //                                              Boot_Table_End$
  • //
  • // 功能描述:
  • //
  • //   程序编译下载成功后,运行程序时LED灯组会一直闪烁
  • //
  • //
  • //###########################################################################
  • // 释放日期: 2013.11.11
  • //###########################################################################

  • #include "DSP2833x_Device.h"     // DSP2833x 头文件
  • #include "DSP2833x_Examples.h"   // DSP2833x 例子相关头文件


  • #define D8 GpioCtrlRegs.GPBDAT.bit.GPIO60  //D8代表GPIO60
  • #define D9 GpioCtrlRegs.GPBDAT.bit.GPIO61  //D9代表GPIO61
  • #define D10 GpioCtrlRegs.GPCDAT.bit.GPIO64  //D10代表GPIO64
  • #define D11 GpioCtrlRegs.GPCDAT.bit.GPIO65 //D11代表GPIO65
  • #define D12 GpioCtrlRegs.GPCDAT.bit.GPIO66  //D12代表GPIO66
  • #define D13 GpioCtrlRegs.GPCBAT.bit.GPIO67  //D13代表GPIO67
  • #define D14 GpioCtrlRegs.GPCDAT.bit.GPIO68  //D14代表GPIO68




  • // 使用前,声明本文件中的相关函数;
  • void delay_loop(void);
  • void Gpio_select(void);

  • void main(void)
  • {

  • // 步骤 1. 初始化系统控制:
  • // 设置PLL, WatchDog, 使能外设时钟
  • // 下面这个函数可以从DSP2833x_SysCtrl.c文件中找到..
  •    InitSysCtrl();

  • // 步骤 2. 初始化通用输入输出多路复用器GPIO:
  • // 这个函数在DSP2833x_Gpio.c源文件中被定义了
  • // 这个函数使GPIO控制类寄存器初始化到默认状态
  • // InitGpio();  // 本例不用此子函数

  • // 本例使用下面的GPIO配置
  •    Gpio_select();

  • // 步骤 3. 清除所有中断初始化中断向量表:
  • // 禁止CPU全局中断
  •    DINT;

  • // 初始化PIE控制寄存器到他们的默认状态.
  • // 这个默认状态就是禁止PIE中断及清除所有PIE中断标志
  • // 这个函数放在DSP2833x_PieCtrl.c源文件里
  •    InitPieCtrl();

  • // 禁止CPU中断和清除所有CPU中断标志
  •    IER = 0x0000;
  •    IFR = 0x0000;


  • //初始化PIE中断向量表,并使其指向中断服务子程序(ISR)
  • // 这些中断服务子程序被放在了DSP280x_DefaultIsr.c源文件中
  • // 这个函数放在了DSP2833x_PieVect.c源文件里面.
  •    InitPieVectTable();


  • // 步骤 4. 初始化片内外设:
  • // 这个函数可以在DSP280x_CpuTimers.c源文件中找到
  • //   InitCpuTimers();   // 这个例子仅初始化了Cpu定时器

  • // 步骤 5. 用户特定的代码



  •    for(;;)
  •    {
  •            //*******让灯先从D8到D14逐一亮******//
  •            GpioDataRegs.GPBDAT.bit.GPIO60=0;
  •            delay_loop();
  •            GpioDataRegs.GPBSET.bit.GPIO60=1;
  •            delay_loop();
  •            GpioDataRegs.GPBDAT.bit.GPIO61=0;
  •            delay_loop();
  •            GpioDataRegs.GPBSET.bit.GPIO61=1;
  •            delay_loop();
  •            GpioDataRegs.GPCDAT.bit.GPIO64=0;
  •            delay_loop();
  •            GpioDataRegs.GPCSET.bit.GPIO64=1;
  •            delay_loop();
  •            GpioDataRegs.GPCDAT.bit.GPIO65=0;
  •            delay_loop();
  •            GpioDataRegs.GPCSET.bit.GPIO65=1;
  •            delay_loop();
  •            GpioDataRegs.GPCDAT.bit.GPIO66=0;
  •            delay_loop();
  •            GpioDataRegs.GPCSET.bit.GPIO66=1;
  •            delay_loop();
  •            GpioDataRegs.GPCDAT.bit.GPIO67=0;
  •            delay_loop();
  •            GpioDataRegs.GPCSET.bit.GPIO67=1;
  •           delay_loop();
  •            GpioDataRegs.GPCDAT.bit.GPIO68=0;
  •            delay_loop();
  •            GpioDataRegs.GPCSET.bit.GPIO68=1;


  •       /******让灯从D14到D8返回*****///
  •            GpioDataRegs.GPCDAT.bit.GPIO68=0;
  •            delay_loop();
  •            GpioDataRegs.GPCSET.bit.GPIO68=1;
  •            delay_loop();
  •            GpioDataRegs.GPCDAT.bit.GPIO67=0;
  •            delay_loop();
  •            GpioDataRegs.GPCSET.bit.GPIO67=1;
  •            delay_loop();
  •            GpioDataRegs.GPCDAT.bit.GPIO66=0;
  •            delay_loop();
  •            GpioDataRegs.GPCSET.bit.GPIO66=1;
  •            delay_loop();
  •            GpioDataRegs.GPCDAT.bit.GPIO65=0;
  •            delay_loop();
  •            GpioDataRegs.GPCSET.bit.GPIO65=1;
  •            delay_loop();
  •            GpioDataRegs.GPCDAT.bit.GPIO64=0;
  •            delay_loop();
  •            GpioDataRegs.GPCSET.bit.GPIO64=1;
  •            delay_loop();
  •            GpioDataRegs.GPBDAT.bit.GPIO61=0;
  •            delay_loop();
  •            GpioDataRegs.GPBSET.bit.GPIO61=1;
  •            delay_loop();
  •            GpioDataRegs.GPBDAT.bit.GPIO60=0;
  •            delay_loop();
  •            GpioDataRegs.GPBSET.bit.GPIO60=1;
  •            delay_loop();
  •            /******GPCSET(设置寄存器)是GpioData(数据寄存器)下的一个小寄存器
  •            GpioDataRegs.GPBDAT.bit.GPIO60=0;
  •            delay_loop();
  •            GpioDataRegs.GPBSET.bit.GPIO60=1; 这两个数是要配套使用不然起不到流水灯流水作用,
  •            delay_loop();**/
  • /*  D8=0;
  •    D9=1;
  •    D10=0;
  •    D11=1;
  •    D12=0;
  •    D13=1;
  •    D14=0;*/

  •     }




  • }
  • //延迟子函数
  • void delay_loop()
  • {
  •     Uint32      i;
  •         Uint32      j;
  •         for(i=0;i<32;i++)
  •     for (j = 0; j < 100000; j++) {}
  • }
  • //GPIO初始化函数
  • void Gpio_select(void)
  • {


  •     EALLOW;
  •         GpioCtrlRegs.GPBMUX2.bit.GPIO60=0;  // GPIO0 = GPIO0 通用的I/0  GPIO48到GPIO口63是要选择GPIOB选择寄存器2
  •         GpioCtrlRegs.GPBDIR.bit.GPIO60=1;  // GPIO0配置为输出口
  •         GpioCtrlRegs.GPBMUX2.bit.GPIO61=0;  // GPIO0 = GPIO0 通用的I/0
  •         GpioCtrlRegs.GPBDIR.bit.GPIO61=1;  // GPIO0配置为输出口
  •         GpioCtrlRegs.GPCMUX1.bit.GPIO64=0;  // GPIO0 = GPIO0 通用的I/0   GPIO64到GPIO79是要选择GPIOC选择寄存器1
  •         GpioCtrlRegs.GPCDIR.bit.GPIO64=1;  // GPIO0配置为输出口
  •         GpioCtrlRegs.GPCMUX1.bit.GPIO65=0;  // GPIO0 = GPIO0 通用的I/0
  •         GpioCtrlRegs.GPCDIR.bit.GPIO65=1;  // GPIO0配置为输出口
  •         GpioCtrlRegs.GPCMUX1.bit.GPIO66=0;  // GPIO0 = GPIO0 通用的I/0
  •         GpioCtrlRegs.GPCDIR.bit.GPIO66=1;  // GPIO0配置为输出口
  •         GpioCtrlRegs.GPCMUX1.bit.GPIO67=0;  // GPIO0 = GPIO0 通用的I/0
  •         GpioCtrlRegs.GPCDIR.bit.GPIO67=1;  // GPIO0配置为输出口
  •         GpioCtrlRegs.GPCMUX1.bit.GPIO68=0;  // GPIO0 = GPIO0 通用的I/0
  •         GpioCtrlRegs.GPCDIR.bit.GPIO68=1;  // GPIO0配置为输出口





  •     EDIS;

  • }
  • //===========================================================================
  • // No more.
  • //===========================================================================

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复