⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 func_f2812.c

📁 2812配置的初始化程序
💻 C
字号:

#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.
//===========================================================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -