网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61IC中国电子在线 >> DSP >> 代码示例 >> TI DSP代码示例 >> C2000 >> 文章正文
  TMS320F2812配置的初始化程序         ★★★ 【字体:
TMS320F2812配置的初始化程序
作者:61IC    文章来源:本站原创    点击数:    更新时间:2007-1-17    

TMS320F2812配置的初始化程序,已经通过实际产品的测试并应用


#include "DSP28_Device.h"
#include "DSP28_Globalprototypes.h"


Uint16 Error_flag;
Uint16 Pass_flag;

//===========================================================================
// followed routines to  init some data memory and variables
//===========================================================================
void DataInit(void)
{
 Uint32 para1,para2;

 TaskReg.tsk.all=0;
 TaskReg.tsk.bit.Taskp8=1; 
 
 Error_flag = 0;
 Pass_flag = 0;

 SciaRxPC=0;
 ScibRxPC=0;
 SciaTxPC=0;
 ScibTxPC=0;
 
 StatusMark.Common.all=0x0081;
 
 SciaMark.all=0;
 ScibMark.all=0;
 FiberMark.all=0;
 CanMark.all=0;
 
 YX.Status1.all=0;
 YX.Status2.all=0;
 YX.Status3.all=0;
 YC.Mark1.all=0;
 YC.Mark2.all=0;
 
 Protect_SD_Start=0;
 Protect_SD_Start_PC=0;
 
    CanRTx_PC=0;
    CanRTx_PC1=0;
    CanBOPC=0;
    CanBOPC1=0;
    CanRTx_Start=0;
 
 SoeSendPC=0;
 LED.all=0; 
 
 para1=0x0080000;
 para2=0x001f800;
    Mem_clear(para1,para2);
 
 if((EE_EventMark!=0x55aa)||(EE_EventRecordPC>31)||(SciaSoeSendPC>31))
 {
  para1=0x009f800;
  para2=0x0000700;
     Mem_clear(para1,para2); 
  EE_EventMark=0x55aa;     
  EE_EventRecordPC=0;
  SciaSoeSendPC=EE_EventRecordPC;
 }

 SciaSoeSendPC=EE_EventRecordPC;
 EventRecordPC=0;

 if(NV_Mark!=0x5A5A)
 {
  NV_Mark=0x5A5A;
  P1_pulse=0;
  Q1_pulse=0;
  P1_pulse_Bak=0;
  Q1_pulse_Bak=0;
  P2_pulse=0;
  Q2_pulse=0;
  P2_pulse_Bak=0;
  Q2_pulse_Bak=0;
  
  P1_sum=0;
  Q1_sum=0;
  P1_sum_Bak=0;
  Q1_sum_Bak=0;
  P2_sum=0;
  Q2_sum=0;
  P2_sum_Bak=0;
  Q2_sum_Bak=0;
    

 }

 P1_sum_Tmp=0;
 Q1_sum_Tmp=0;
 P2_sum_Tmp=0;
 Q2_sum_Tmp=0;  
 
 TaskReg.input.all=ReadBinary();
 YX.Status1.all=TaskReg.input.all;
 
 TaskReg.err.all = 0;
 TaskReg.event1.all = 0;
 TaskReg.event2.all = 0; 
 TaskReg.run.all = 0;
 TaskReg.output.all = 0;
 Protect_start = 0;
 AlarmMark.A1.all = 0;
 AlarmMark.A2.all = 0;
    MmiMark.all = 0;
   
    GLHJSMark=0;
    CHZHJSQD=0;
    LXGLHJSMark=0;
    BHQDCHZ=0;
    YK_Trip_signal=0;
    ChargeMark=0;
    Chargerun=0;
    run_charge=1;
    CHZ_Return=0;
    CHZ_Return_signl=0;
   
    GLHJS_signl=0;
    LXGLHJS_signl=0;
   
    Time_same_counter=0;
    SH_Close_signal=0;
    Angle_PC=0;
    Angle_Counter=0;
    Times_Angle_PC=0;
    Time_Angle=0;
    CHZ_UL_Um=0;
    Sign_Angle=0;
 consult_angle_flag=0;
// DA_flag=0;
   
    Mark_U2OrUnder=0;
    Mark_U0Check=0;
    I0_DirMark=0;
   
    Freq_PC=0;
    dfdt_signl=0;
    dfdt_rst_PC=0;
    Freq_Counter=0;  
    dfdt_Counter=0;
    Freq_Start=0;
   
    RelayAllSignalPc=0;
    RelayAllWarnPc=0;
     
 Spi_DA1=0000;
 Spi_DA2=0000;
 DA_flag=0;
 
 TaskReg.run.bit.BinChange=1; //power on start YX message to display CPU
 
/* LEDStatus=0xff;  //状态指示灯状态
 UnitLEDStatus=0xff;
 Number=0;
 KEY=0;
*/
 UnitLED_Fresh(0x00);
 StatusLED_OFF(0xff);
 
 Bak_Second=second();
}

//===========================================================================
// followed routines to  kick external watchdog
//===========================================================================
void Dog_f(void)
{
 static int ExternDogMark=0x01;
 
 ExternDogMark=ExternDogMark^0x01;
 if(ExternDogMark) GpioDataRegs.GPASET.bit.GPIOA14=0x01;
 else GpioDataRegs.GPACLEAR.bit.GPIOA14=0x01;
 
}

//===========================================================================
// followed routines to  read frequences from CPLD
//===========================================================================

//###########################################################################
//
void delay_loop(void)
{
    long      i;
    for (i = 0; i < 20000; i++) {}
}


//===========================================================================
// followed routines to  data Memory
//===========================================================================
void Mem_selfchk(Uint32 start_address, Uint32 length)
{
    Uint16 * MEM_ADDR;
    Uint32 k,var;
 MEM_ADDR=(Uint16 *)start_address;
 for (k=0;k<length;k++)
   {
     *MEM_ADDR = 0xAAAA;
     var = *MEM_ADDR;
     if(var != 0xAAAA)
  Error_flag = Error_flag|0x0002;
     else
     *MEM_ADDR = 0x5555;
     var = *MEM_ADDR;
     if(var != 0x5555)
  Error_flag = Error_flag|0x0001;
  else
     MEM_ADDR++;
    }
}

void Mem_clear(Uint32 start_address, Uint32 length)
{
 Uint16 * MEM_ADDR;
 Uint32 k;
 MEM_ADDR=(Uint16 *)start_address;
 for (k=0;k<length;k++)
   {
     *MEM_ADDR++ = 0 ;
   }  
}


//===========================================================================
// No more.
//===========================================================================

               欢迎点击进入:TI德州中文网   (国内唯一针对TI应用的中文技术网站)    文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    TMS320F2812的SPWM原程序
    基于LabVIEW和TMS320F2812的…
    TMS320F2812的CAN调试成功经…
    基于TMS320F2812和μC/OS II…
    TMS320F2812 全局汇编函数
    TMS320F2812 CMD 文件各段含…
    基于TMS320F2812集中供电系统…
    TMS320F2812的CMD文件配置详…
    基于TMS320F2812的多轴伺服控…
    利用TMS320F2812 DSP&DRV592…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号