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

📄 fct.c

📁 这个是单片机4200的ui程序
💻 C
📖 第 1 页 / 共 4 页
字号:
#include "fct.h"             
#include "Iomacros.h"
#include "ts.h"
#include  "standard.h"
#include "icu.h"
#include "syt.h"
#include "speaker.h"  //add by sky for test speaker

static Uint32 FCT_TASK_STACK[FCT_TASK_STACK_SIZE];
static tsTaskID FCT_TASK_ID=INVALIDTASK;
Sint32   VendorRequestQueue_id = INVALIDMSGQ;
Boolean Have_Panel_key_press = FALSE;
Boolean Turn_ON_USB11_test = FALSE;

unsigned char FCTMode;
unsigned char PanleState;
Bool_flag	Timer4InitAlready; 
Uint8 PinGroupForTimer4;    //differ adf continue or adf run  pluscounter setp or fb continue or adf fb  pluscounter setp
Uint8 RespondData[14];
static Uint8 phase;                 //use to generate signal to driver step motor
Uint32 PlusCounter;             //step motor run pluscounter setp,then stop
extern void PrinterDMATest(void);


void  ChangePinOveylay(Uint8 GPIOPinNumber)
{	
		Uint32 TempVar1;
		Uint32  TempVar2;
		Uint32 TempVar3;
		

		
		TempVar2=(GPIOPinNumber)/0x08;
		TempVar3=GPIOPinNumber-TempVar2*0x08;	
		TempVar1=IO_READ32(PinOveylayRegAddressBase+TempVar2*0x04);
				
		switch  (TempVar3)
		{
				case 0x00:
					TempVar1= TempVar1 & 0XFFFFFFF0;break;
				case 0x01:
					TempVar1= TempVar1 & 0XFFFFFF0f;break;
				case 0x02:
					TempVar1= TempVar1 & 0XFFFFF0ff;break;
				case 0x03:
					TempVar1= TempVar1 & 0XFFFF0Fff;break;
				case 0x04:
					TempVar1= TempVar1 & 0XFFF0FFff;break;
				case 0x05:
					TempVar1= TempVar1 & 0XFF0FFFff;break;
				case 0x06:
					TempVar1= TempVar1 & 0XF0FfFFff;break;
				case 0x07:
					TempVar1= TempVar1 & 0X0FFfFFff;break;
				default: ;					
		}
		
		IO_WRITE32(PinOveylayRegAddressBase+TempVar2*0x04, TempVar1);
}

void  OveylayRecoverTOScap(Uint8 GPIOPinNumber)
{	
		Uint32 TempVar1;
		Uint32  TempVar2;
		Uint32 TempVar3;
		

		
		TempVar2=(GPIOPinNumber)/0x08;
		TempVar3=GPIOPinNumber-TempVar2*0x08;	
		TempVar1=IO_READ32(PinOveylayRegAddressBase+TempVar2*0x04);
				
		switch  (TempVar3)
		{
				case 0x00:
					TempVar1= TempVar1 | 0X00000001;break;
				case 0x01:
					TempVar1= TempVar1 | 0X00000010;break;
				case 0x02:
					TempVar1= TempVar1 | 0X00000100;break;
				case 0x03:
					TempVar1= TempVar1 | 0X00001000;break;
				case 0x04:
					TempVar1= TempVar1 | 0X00010000;break;
				case 0x05:
					TempVar1= TempVar1 | 0X00100000;break;
				case 0x06:
					TempVar1= TempVar1 | 0X01000000;break;
				case 0x07:
					TempVar1= TempVar1 | 0X10000000;break;
				default: ;					
		}
		
		IO_WRITE32(PinOveylayRegAddressBase+TempVar2*0x04, TempVar1);
}

/****************************************************************
*DIR:=1,gpio input mode,mask=0;  dir=0,gpio output mode,mask=1; 
*
****************************************************************/

void ChangeDir_Mask(Uint8 GPIOPinNumber,Uint8 Dir)
{
	Uint32 TempVar1;
	Uint32 TempVar2;
	Uint32 TempVar3;

	
	TempVar1=GPIOPinNumber/32;
	TempVar2=GPIOPinNumber-TempVar1*32;
	TempVar3=0X00000001;
	TempVar2=TempVar3<<TempVar2;
	
	if (Dir)
	{//input
		
		//change pin dirmode to input
		TempVar3=IO_READ32(PinDirRegAddressBase+TempVar1*0x04);
		TempVar3=TempVar3 |  TempVar2;
		IO_WRITE32(PinDirRegAddressBase+TempVar1*0x04,TempVar3);
            
		//change mask
		TempVar3=IO_READ32(PinMaskRegAddressBase+TempVar1*0x04);

		TempVar3=TempVar3 | TempVar2;        
		IO_WRITE32(PinMaskRegAddressBase+TempVar1*0x04, TempVar3);
			
	}
	else
	{//output
		
		//change mask
		TempVar3=IO_READ32(PinMaskRegAddressBase+TempVar1*0x04);
		TempVar3=TempVar3 | TempVar2;
		IO_WRITE32(PinMaskRegAddressBase+TempVar1*0x04, TempVar3);
	
		//change pin dirmode to output
		TempVar3=IO_READ32(PinDirRegAddressBase+TempVar1*0x04);
		TempVar2=~TempVar2;
		TempVar3=TempVar3 &  TempVar2;
		IO_WRITE32(PinDirRegAddressBase+TempVar1*0x04,TempVar3);
	}
}

void SetGpio_0(Uint8 GPIOPinNumber)
{
	Uint32 TempVar1;
	Uint32 TempVar2;
	Uint32 TempVar3;
       Uint32  TempVar4;
	
	TempVar1=GPIOPinNumber/32;
	TempVar2=GPIOPinNumber-TempVar1*32;
	TempVar3=0X00000001;
	TempVar2=TempVar3<<TempVar2;

	
	TempVar3=IO_READ32(PinDataRegAddressBase+TempVar1*0x04);
       TempVar4=IO_READ32(InvctlxRegisterAddressBase+TempVar1*0x04);
       if (TempVar4 & TempVar2)
       {
       	TempVar3=TempVar3 | TempVar2;
		IO_WRITE32(PinDataRegAddressBase+TempVar1*0x04, TempVar3);
       }
	 else
	 {
		TempVar2=~TempVar2;
		TempVar3=TempVar3 & TempVar2;
		IO_WRITE32(PinDataRegAddressBase+TempVar1*0x04, TempVar3);
	 }
	
	
	
}

void SetGpio_1(Uint8 GPIOPinNumber)
{
	Uint32 TempVar1;
	Uint32 TempVar2;
	Uint32 TempVar3;
	Uint32  TempVar4;

	
	TempVar1=GPIOPinNumber/32;
	TempVar2=GPIOPinNumber-TempVar1*32;
	TempVar3=0X00000001;
	TempVar2=TempVar3<<TempVar2;
	
	TempVar3=IO_READ32(PinDataRegAddressBase+TempVar1*0x04);       
	TempVar4=IO_READ32(InvctlxRegisterAddressBase+TempVar1*0x04);
       if (TempVar4 & TempVar2)
       {
		TempVar2=~TempVar2;
		TempVar3=TempVar3 & TempVar2;
		IO_WRITE32(PinDataRegAddressBase+TempVar1*0x04, TempVar3);
       }
	else
	{
	 	TempVar3=TempVar3 | TempVar2;
		IO_WRITE32(PinDataRegAddressBase+TempVar1*0x04, TempVar3);
	 }
	
	
}


Bool_flag ReadPinValue(Uint8 GPIOPinNumber)
{
	Bool_flag PinValue;
	Uint32 TempVar1;
	Uint32 TempVar2;
	Uint32 TempVar3;
	Uint32 TempVar4;
	
	
	TempVar1=GPIOPinNumber/32;
	TempVar2=GPIOPinNumber-TempVar1*32;
	TempVar3=0X00000001;
	TempVar2=TempVar3<<TempVar2;
	
	TempVar3=IO_READ32(PinDataRegAddressBase+TempVar1*0x04);
	TempVar4=IO_READ32(InvctlxRegisterAddressBase+TempVar1*0x04);
       if (TempVar4 & TempVar2)
       {
       	if (TempVar3 & TempVar2)
		{
			PinValue=Value_0;
		}
		else
		{
			PinValue=Value_1;
		}
       }
	else
	{
		if (TempVar3 & TempVar2)
		{
			PinValue=Value_1;
		}
		else
		{
			PinValue=Value_0;
		}
	}
	return PinValue;

}


void FCTAction(void)
{
	Msg VendorMsg;
	SOUND_PROFILE  *sound_parameter=(SOUND_PROFILE *)malloc(sizeof(sound_parameter));

	while (1)
	{
		
	TASKMSGWAIT(VendorRequestQueue_id,&VendorMsg);

	switch (VendorMsg.msg1)
	{
	
		
		case 0x01:
		{	
				ChangePinOveylay(ADF_I01);
				ChangePinOveylay(ADF_I02);
				ChangePinOveylay(ADF_PH1);
				ChangeDir_Mask(ADF_I01, PinDirOutput);
				ChangeDir_Mask(ADF_I02, PinDirOutput);
				ChangeDir_Mask(ADF_PH1,PinDirOutput);
					
				ChangePinOveylay(ADF_I11);
				ChangePinOveylay(ADF_I12);
				ChangePinOveylay(ADF_PH2);
				ChangeDir_Mask(ADF_I11, PinDirOutput);
				ChangeDir_Mask(ADF_I12, PinDirOutput);
				ChangeDir_Mask(ADF_PH2,PinDirOutput);

				ChangePinOveylay(FB_OR_ADF_CS); 
				ChangeDir_Mask(FB_OR_ADF_CS,PinDirOutput);
				SetGpio_0(FB_OR_ADF_CS);

				SetGpio_1(ADF_I11);
				SetGpio_1(ADF_I01);
				SetGpio_1(ADF_I02);
				SetGpio_1(ADF_I12);
					
				IO_WRITE32(SYTCNT4, 0x20d44);                       //init the counter for restarting  the timer4
				IO_WRITE32(SYTTC4, 0x20d44); 
				if (Timer4InitAlready)
				{
					IO_WRITE32(SYTCTL4, 0x00000007);		
				}
				else
				{
					SYT_Init(SYT_Timer4, 0x20d44, OS_Timer4LISR);  
					Timer4InitAlready=Value_1;

				}
				PinGroupForTimer4=0X03;
				phase=0;						
						
		}break;
		case 0x02:
		{
				IO_WRITE32(SYTCTL4, 0x00000005);
				PinGroupForTimer4=0;
				SetGpio_1(ADF_I01);	
				SetGpio_1(ADF_I02);	
				SetGpio_1(ADF_I11);	
				SetGpio_1(ADF_I12);			
						
				OveylayRecoverTOScap(ADF_I01);
				OveylayRecoverTOScap(ADF_I02);
				OveylayRecoverTOScap(ADF_I11);
				OveylayRecoverTOScap(ADF_I12);						
				OveylayRecoverTOScap(ADF_PH1);
				OveylayRecoverTOScap(ADF_PH2);	
						
		}break;
		case 0x03:
		{
				ChangePinOveylay(ADF_I01);
				ChangePinOveylay(ADF_I02);
				ChangePinOveylay(ADF_PH1);
				ChangeDir_Mask(ADF_I01, PinDirOutput);
				ChangeDir_Mask(ADF_I02, PinDirOutput);
				ChangeDir_Mask(ADF_PH1,PinDirOutput);
					
				ChangePinOveylay(ADF_I11);
				ChangePinOveylay(ADF_I12);
				ChangePinOveylay(ADF_PH2);
				ChangeDir_Mask(ADF_I11, PinDirOutput);
				ChangeDir_Mask(ADF_I12, PinDirOutput);
				ChangeDir_Mask(ADF_PH2,PinDirOutput);

				ChangePinOveylay(FB_OR_ADF_CS); 
				ChangeDir_Mask(FB_OR_ADF_CS,PinDirOutput);
				SetGpio_0(FB_OR_ADF_CS);
				SetGpio_1(ADF_I01);	
				SetGpio_1(ADF_I02);	
				SetGpio_1(ADF_I11);	
				SetGpio_1(ADF_I12);	

				
					
				IO_WRITE32(SYTCNT4, 0x20d44);                       //init the counter for restarting  the timer4
				IO_WRITE32(SYTTC4, 0x20d44); 
				if (Timer4InitAlready)
				{
					IO_WRITE32(SYTCTL4, 0x00000007);		
				}
				else
				{
					SYT_Init(SYT_Timer4, 0x20d44, OS_Timer4LISR); 
					Timer4InitAlready=Value_1;

				}
				PinGroupForTimer4=0X04;
				PlusCounter=0x00;
				phase=0;						
							
		}break;
		case 0x04:
		{
			ChangePinOveylay(FB_I01);
			ChangePinOveylay(FB_I02);
			ChangePinOveylay(FB_PH1);
			ChangeDir_Mask(FB_I01, PinDirOutput);
			ChangeDir_Mask(FB_I02, PinDirOutput);
			ChangeDir_Mask(FB_PH1,PinDirOutput);
					
			ChangePinOveylay(FB_I11);
			ChangePinOveylay(FB_I12);
			ChangePinOveylay(FB_PH2);
			ChangeDir_Mask(FB_I11, PinDirOutput);
			ChangeDir_Mask(FB_I12, PinDirOutput);
			ChangeDir_Mask(FB_PH2,PinDirOutput);
					
			ChangePinOveylay(FB_OR_ADF_CS); 
			ChangeDir_Mask(FB_OR_ADF_CS,PinDirOutput);
			SetGpio_1(FB_OR_ADF_CS);
			SetGpio_1(FB_I11);
			SetGpio_1(FB_I01);
			SetGpio_1(FB_I02);
			SetGpio_1(FB_I12);

					
			IO_WRITE32(SYTCNT4, 0x20d44);                       //init the counter for restarting  the timer4
			IO_WRITE32(SYTTC4, 0x20d44); 
			if (Timer4InitAlready)
			{
				IO_WRITE32(SYTCTL4, 0x00000007);		
			}
			else
			{
				SYT_Init(SYT_Timer4, 0x20d44, OS_Timer4LISR);   
				Timer4InitAlready=Value_1;

			}
			PinGroupForTimer4=1;
			phase=0;
			
		}break;
		case 0x05:
		{
			IO_WRITE32(SYTCTL4, 0x00000005);
			PinGroupForTimer4=0;
			SetGpio_1(FB_I01);	
			SetGpio_1(FB_I02);	
			SetGpio_1(FB_I11);	
			SetGpio_1(FB_I12);	
			OveylayRecoverTOScap(FB_I01);
			OveylayRecoverTOScap(FB_I02);
			OveylayRecoverTOScap(FB_I11);
			OveylayRecoverTOScap(FB_I12);
			OveylayRecoverTOScap(FB_PH1);
			OveylayRecoverTOScap(FB_PH2);	
		}break;
		case 0x06:
		{
			ChangePinOveylay(FB_I01);
			ChangePinOveylay(FB_I02);
			ChangePinOveylay(FB_PH1);
			ChangeDir_Mask(FB_I01, PinDirOutput);
			ChangeDir_Mask(FB_I02, PinDirOutput);
			ChangeDir_Mask(FB_PH1,PinDirOutput);
		
			ChangePinOveylay(FB_I11);
			ChangePinOveylay(FB_I12);
			ChangePinOveylay(FB_PH2);
			ChangeDir_Mask(FB_I11, PinDirOutput);
			ChangeDir_Mask(FB_I12, PinDirOutput);
			ChangeDir_Mask(FB_PH2,PinDirOutput);

			ChangePinOveylay(FB_OR_ADF_CS); 
			ChangeDir_Mask(FB_OR_ADF_CS,PinDirOutput);
			SetGpio_1(FB_OR_ADF_CS);
		  	SetGpio_1(FB_I11);
			SetGpio_1(FB_I01);
			SetGpio_1(FB_I02);
			SetGpio_1(FB_I12);


					
			IO_WRITE32(SYTCNT4, 0x20d44);                       //init the counter for restarting  the timer4
			IO_WRITE32(SYTTC4, 0x20d44); 
			if (Timer4InitAlready)
			{
				IO_WRITE32(SYTCTL4, 0x00000007);		
			}
			else
			{
				SYT_Init(SYT_Timer4,0x20d44, OS_Timer4LISR);   
				Timer4InitAlready=Value_1;

			}
			PinGroupForTimer4=0x02;	
			PlusCounter=0x00;
			phase=0;				
						
		}break;
		case 0x07:
		{
			ChangePinOveylay(ADF_DES);
			ChangeDir_Mask(ADF_DES,PinDirInput);
			ChangePinOveylay(ADF_DES);
			ChangeDir_Mask(ADF_DS,PinDirInput);
			ChangePinOveylay(HOME_SENSOR);
			ChangeDir_Mask(HOME_SENSOR,PinDirInput);			
			ChangePinOveylay(TONER);
			ChangeDir_Mask(TONER,PinDirInput);
			
		}break;
		case 0x09:
		{
			ChangePinOveylay(HSYNC_ENG);
			ChangeDir_Mask(HSYNC_ENG,PinDirInput);
			
			ChangePinOveylay(EPRDY_ENG);
			ChangeDir_Mask(EPRDY_ENG,PinDirInput);
			
			ChangePinOveylay(PRRDY_ENG);
			ChangeDir_Mask(PRRDY_ENG,PinDirInput);
			
			ChangePinOveylay(TOD_ENG);
			ChangeDir_Mask(TOD_ENG,PinDirInput);
			
			ChangePinOveylay(ETBSY_ENG);
			ChangeDir_Mask(ETBSY_ENG,PinDirInput);
			
			ChangePinOveylay(STS_ENG);
			ChangeDir_Mask(STS_ENG,PinDirInput);
			
			ChangePinOveylay(WR_ENG);
			ChangeDir_Mask(WR_ENG,PinDirInput);

			ChangePinOveylay(COVEROPEN_ENG);
			ChangeDir_Mask(COVEROPEN_ENG,PinDirInput);
			
		} break;  
		case 0x0b:
		{
			ChangePinOveylay(CTBSY_ENG);
			ChangeDir_Mask(CTBSY_ENG,PinDirOutput);

			ChangePinOveylay(CPRDY_ENG);
			ChangeDir_Mask(CPRDY_ENG,PinDirOutput);
			
			ChangePinOveylay(CMD_ENG);
			ChangeDir_Mask(CMD_ENG,PinDirOutput);
			
			ChangePinOveylay(VIDEO_ENG);
			ChangeDir_Mask(VIDEO_ENG,PinDirOutput);

			ChangePinOveylay(SPCLK_ENG);
			ChangeDir_Mask(SPCLK_ENG,PinDirOutput);

			ChangePinOveylay(RESET_ENG);
			ChangeDir_Mask(RESET_ENG,PinDirOutput);

			SetGpio_1(CTBSY_ENG);
			SetGpio_1(CPRDY_ENG);
			SetGpio_1(CMD_ENG);
			SetGpio_1(VIDEO_ENG);
			SetGpio_1(SPCLK_ENG);
			SetGpio_0(RESET_ENG);
		
		}break;

		case 0x0C:
		{
			ChangePinOveylay(CTBSY_ENG);
			ChangeDir_Mask(CTBSY_ENG,PinDirOutput);

			ChangePinOveylay(CPRDY_ENG);
			ChangeDir_Mask(CPRDY_ENG,PinDirOutput);
			
			ChangePinOveylay(CMD_ENG);
			ChangeDir_Mask(CMD_ENG,PinDirOutput);
			
			ChangePinOveylay(VIDEO_ENG);
			ChangeDir_Mask(VIDEO_ENG,PinDirOutput);

			ChangePinOveylay(SPCLK_ENG);
			ChangeDir_Mask(SPCLK_ENG,PinDirOutput);

			ChangePinOveylay(RESET_ENG);
			ChangeDir_Mask(RESET_ENG,PinDirOutput);

			SetGpio_1(CTBSY_ENG);
			SetGpio_1(CPRDY_ENG);
			SetGpio_1(CMD_ENG);
			SetGpio_1(VIDEO_ENG);
			SetGpio_0(SPCLK_ENG);
			SetGpio_1(RESET_ENG);
		

⌨️ 快捷键说明

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