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

📄 mainloop.c

📁 该软件源程序示范了如何在嵌入式系统中实现USB-OTG协议
💻 C
📖 第 1 页 / 共 2 页
字号:
/*
   //*************************************************************************
   //
   //                  P H I L I P S   P R O P R I E T A R Y
   //
   //           COPYRIGHT (c)   2005 BY PHILIPS SINGAPORE.
   //                     --  ALL RIGHTS RESERVED  --
   //
   // Project:		ISP1302 Eva Kit
   // File Name:	MainLoop.C
   // Author:		Guo Yang Bin, Email: guo.yang.bin@philips.com
   // Created:		Nov.20, 2005
   // Revision:		1.0
   //*************************************************************************
*/
#include <stdio.h>
#include <string.h>
#include <conio.h>

#include <bios.h>
#include <dos.h>
#include <malloc.h>
#include "BasicTyp.h"

#include "mainloop.h"

#include "Hal4sys.h"
#include "function.h"
#include "test.h"

/*
//*************************************************************************
//  Public static data
//*************************************************************************
*/


D09FLAGS bD09flags;

extern inten_state,speed;

/*
//*************************************************************************
//  Main Function
//*************************************************************************
*/
void main(void)
{
	BOOL in_loop = TRUE;
	UCHAR key, power;
		clrscr();
	textattr(0x07);
	printf("Paralle Port PC Kit\n");
	printf("ISP1302 IC TEST FIRMWARE REV 1.10\n");
	printf("Philips Electronics Singapore PTE. LTD. APIC\n");
	printf("Getting more info on http://www.philips.com\n");
	printf("or contact wired.support@philips.com\r\n");
	Initialize();
	printf("Waiting for Eva kit Power On......\r\n");
	do{
    power = Hal4Sys_PowerDet();

			if( bioskey(1) )
		{
			key = bioskey(0);
			key &= 0xff;
			if(key==0x1b) /* ESC */
				    	break;
			}
	}while(power==0);
	printf("Eva kit Power On\r\n");
	Main_Menu();
	/* Main program loop */
	while( in_loop )
	{
		if( bioskey(1) )
		{
			key = bioskey(0);
			key &= 0xff;
			switch(key)
			{
				case 0x1b: /* ESC */
				    	in_loop = FALSE;
				    	break;
				case 'M':
				case 'm':
					     Main_Menu();
						break;
				case 'S':
				case 's':bD09flags.bits.bus_state = SPI;
						Hal4Sys_SetSPI_Mode();
					    Main_Menu();
					    printf("Serial_Mode: SPI\n");
						printf("Please select: ");
						break;
				case 'I':bD09flags.bits.bus_state = I2C;
                         bD09flags.bits.adr_state =0;
						Hal4Sys_SetI2C_Mode();
					    Main_Menu();
					    printf("Serial_Mode: I2C, ADR=1 \n");
						printf("Please select: ");
						break;
				case 'i':bD09flags.bits.bus_state = I2C;
					     bD09flags.bits.adr_state =1;
						Hal4Sys_SetI2C_Mode();
					    Main_Menu();
					    printf("Serial_Mode: I2C, ADR=0 \n");
						printf("Please select: ");
						break;
				case 't':
				case 'T':printf("Test mode\n");
                    	Test_mode(); 
						break;
				case 'f':
				case 'F':printf("Functional mode\n");
                    	Functional_mode(); 
						break;
				case 'h':
				case 'H':  bD09flags.value = 0;
                    	Hal4Sys_ResetPCBA(); 
							bD09flags.bits.bus_state = I2C;
    Hal4Sys_SetI2C_Mode();
						Main_Menu();
					    printf("Hard reset ISP1302\n");
                        cprintf("Please select: ");
						break;

				default:
	    				break;
				}
			}
	} // Main Loop
	on_exit();
}
/*
 //*************************************************************************
//  Subroutines
//*************************************************************************
*/

void Initialize( void)
{
	unsigned long privateBuffer, phys;
    bD09flags.value = 0;
    bD09flags.bits.mode_state = USB_DAT_SE0_U;
	privateBuffer = (unsigned char far *)farmalloc(0X0400*2L);
	if(privateBuffer == NULL)
	{
		printf("Error allocation memory!\n");
		exit(1);
	}
	phys = (unsigned long)FP_SEG(privateBuffer)*16 + FP_OFF(privateBuffer);
	Hal4Sys_ControlD09Interrupt(TRUE);
	Hal4Sys_End_Int();
    Hal4Sys_Initial_uP();
    Hal4D09_Initial_1109();
	Hal4Sys_ResetPCBA();
	bD09flags.bits.bus_state = I2C;
    Hal4Sys_SetI2C_Mode();
}

void on_exit(void)
{
	Hal4Sys_ControlD09Interrupt(FALSE);
	Hal4Sys_ReleaseD09();
    Hal4Sys_Release_uP();

}

void Functional_mode(void) 
{
    UCHAR key;
	BOOL in_loop = TRUE;
	F_Main_Menu();
    Hal4D09_Initial_1109();
	while( in_loop )
	{
		key = 0;
		if( bioskey(1) )
		{
		    key = bioskey(0);
			key &= 0xff;
			switch(key)
			{
				case 0x1b: /* ESC */
				    	in_loop = FALSE;
				    	break;
				case 'm':
				case 'M':
					    F_Main_Menu();
						break;
				case 'e':
				case 'E':bD09flags.bits.charge_state = 1;
					    F_Main_Menu();
					    printf("Enable charge pump\n");
                        printf("Please select: ");
                        Hal4D09_Enable_Chargepump();
						break;
				case 'd':
				case 'D':bD09flags.bits.charge_state = 0;
					    F_Main_Menu();
					    printf("Disable charge pump\n");
                        cprintf("Please select: ");
                        Hal4D09_Disable_Chargepump();
						break;
				case '0':bD09flags.bits.service_state = 1;
					    F_Main_Menu();
					    printf("Service Pin Low, 2.8V signaling for UART Mode\n");
                        printf("Please select: ");
                        Hal4Sys_Service_Low();
						break;

				case '1':bD09flags.bits.service_state = 0;
					    F_Main_Menu();
					    printf("Service Pin High, 3.3V signaling \n");
                        cprintf("Please select: ");
                        Hal4Sys_Service_High();
						break;
				case '2': bD09flags.bits.OE_state = 1;
					    F_Main_Menu();
					    printf("OE Pin Low\n");
                        printf("Please select: ");
                        Hal4Sys_OE_Low();
						break;

				case '3': bD09flags.bits.OE_state = 0;
					    F_Main_Menu();
					    printf("OE Pin High\n");
                        cprintf("Please select: ");
                        Hal4Sys_OE_High();
						break;
				case 'l':
				case 'L':bD09flags.bits.low_full_state = LOW;
					    F_Main_Menu();
				    	printf("Go USB LowSpeed\n");
                        cprintf("Please select: ");
                        Hal4D09_USB_LowSpeed();
						break;
				case 'f':
				case 'F':bD09flags.bits.low_full_state = FULL;
					    F_Main_Menu();
					    printf("Go USB FullSpeed\n");
                        cprintf("Please select: ");
                        Hal4D09_USB_FullSpeed();
						break;
				case 's':
				case 'S':bD09flags.bits.suspend_state = SUSPEND;
					    F_Main_Menu();
					    printf("Go USB Suspend mode\n");
						cprintf("Please select: ");
                        Hal4D09_USB_Suspend();
						break;
				case 'a':
				case 'A':bD09flags.bits.suspend_state = ACTIVE;
					    F_Main_Menu();
					    printf("Active from USB suspend mode\n");
                        cprintf("Please select: ");
                        Hal4D09_USB_Active();
						break;
			/*	case 'u':
				case 'U':bD09flags.bits.mode_state = USB_VPVM_U;
					    F_Main_Menu();
					    printf("USB_VPVM_Unidirectional mode\n");
                        cprintf("Please select: ");
                        Hal4D09_USB_VPVM_U();
						break;*/
				case 'v':
				case 'V':bD09flags.bits.mode_state = USB_VPVM_B;
					    F_Main_Menu();
					    printf("USB_VPVM_Bi-directional mode\n");
						cprintf("Please select: ");
                        Hal4D09_USB_VPVM_B();
						break;
			/*	case 'd':
				case 'D':bD09flags.bits.mode_state = USB_DAT_SE0_U;
					    F_Main_Menu();
					    printf("USB_DAT_SE0_Unidirectional mode\n");
                        cprintf("Please select: ");
                        Hal4D09_USB_DAT_SE0_U();
						break;*/
				case 'b':
				case 'B':bD09flags.bits.mode_state = USB_DAT_SE0_B;
					    F_Main_Menu();
					    printf("USB_DAT_SE0_Bi-directional mode\n");
                        cprintf("Please select: ");
                        Hal4D09_USB_DAT_SE0_B();
						break;
				case 'U':
				case 'u':bD09flags.bits.mode_state = UART;
					    F_Main_Menu();
					    printf("Serial UART,  SE0/VM -> D-    D+ -> DAT_VP \n");
                        Hal4D09_UART1();

⌨️ 快捷键说明

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