📄 main.c.bak
字号:
#include "44B0X.H"
#include "datatype.h"
#include "console.h"
#include "host_811.h"
#include "FileSys.h"
#include "FAT.h"
#include "string.h"
extern U32 MCLK;
extern Control USB_Control;
volatile char which_int=0;
TIME_STRUC SysTime;
char *WeekDay[7] = {"SUN","MON", "TUES", "WED", "THURS","FRI", "SAT"};
U32 SERIAL_BAUD = 115200;
char table_begin[ 70 ] = "/***************************************************************/\n0";
//---------------------------------------------------------------------------------//
//4,5,6,7中断函数初始化
//测试中断所使用定义
//#define BIT_GLOBAL (0x1<<26)
//#define BIT_EXINT4567 (0X1<<20)
char flag;
void __irq Eint4567Isr(void)
{
which_int = rEXTINTPND;
rEXTINTPND = 0xf; //clear EXTINTPND reg.
rI_ISPC = BIT_EINT4567; //clear pending_bit
// Beep(500); //延时若干个100us,消除抖动
rPCONG = 0x0000;//剥夺按键中断,其只作为输入
if( (rPDATG&0xf0) != 0xf0)
{
switch(which_int)
{
case 1:
{
Led_Display(0,1);
}
break;
case 2:
{
Led_Display(1,1);
}
break;
case 4:
{
Led_Display(2,1);
}
break;
case 8:
{
//rPDATE=rPDATE&0x17f;
}
break;
default :
break;
}
}
while((rPDATG&0xf0) != 0xf0); //按键没有松开就一直等待
rPCONG = rPCONG | 0xff00; //GPG4、5、6、7设为中断引脚
}
void Isr_Init(void)
{
rINTCON = 0x1; //中断控制寄存器设置
rINTMOD=0x0; // All=IRQ mode
pISR_EINT4567 = (int)Eint4567Isr;
rINTMSK&=~(BIT_EINT4567); //按键中断有效
rPCONG = rPCONG | 0xff00; //GPG4、5、6、7设为中断引脚
rPUPG = rPUPG & 0x0f; //GPG4、5、6、7上拉电阻有效
rEXTINT=0x02220000; //上升沿触发
rINTMSK&=~(BIT_GLOBAL); //全局中断有效
}
void ShowSysClock(int argc, char *argv[])
{
printf("----------ARM System is running @%dHz\n", MCLK);
}
//---------------------------------------------------------------------------------//
int GetParameter(char *str, int cnt)
{
int i, key;
i = 0;
while(1)
{
if(kbhit())
{
key = getkey();
if(key==BACK_KEY)
i -= i?1:0;
else
if(key==ENTER_KEY)
{
str[i] = 0;
return i;
}
else
if(i<cnt)
{
putch(key);
str[i++] = key;
}
}
}
}
//---------------------------------------------------------------------------------//
int GetDate(int argc, char *argv[])
{
int i, error = 0;
char tmp[8];
char *str;
U32 year, month, day;
RtcGetTime(&SysTime);
printf("Current date is %d-%x-%x %s\n", SysTime.year, SysTime.month, SysTime.day, WeekDay[SysTime.weekday]);
if(argc<2)
return 0;
str = argv[1];
for(i=0; i<5; i++)
tmp[i] = str[i];
if(tmp[4]!='-')
error = 1;
year = strtodec(str, 4);
if(year<2000||error)
{
puts("year error!\n");
return 0;
}
str += 5;
i = 0;
if(str[++i]!='-')
if(str[++i]!='-')
error = 1;
str[i] = 0;
month = strtobcd(str);
if((month-1)>0x11||error)
{
puts("month error!\n");
return 0;
}
str += i+1;
i = 0;
if(str[++i]!=0)
if(str[++i]!=0)
error = 1;
str[i] = 0;
day = strtobcd(str);
if((day-1)>0x30||error)
{
puts("day error!\n");
return 0;
}
SysTime.year = year-2000;
SysTime.month = month;
SysTime.day = day;
RtcSetDay(&SysTime);
printf("Set date %d-%x-%x %s\n", year, month, day, WeekDay[SysTime.weekday]);
return 1;
}
//---------------------------------------------------------------------------------//
int GetTime(int argc, char *argv[])
{
int i, error = 0;
char *str;
U32 hour, min, sec;
RtcGetTime(&SysTime);
printf("Current time is %x:%x:%x\n", SysTime.hour, SysTime.min, SysTime.sec);
if(argc>1)
{
str = argv[1];
i = 0;
if(str[++i]!=':')
if(str[++i]!=':')
error = 1;
str[i] = 0;
hour = strtobcd(str);
if(hour>0x23||error)
{
puts("hour error!\n");
return error;
}
str += i+1;
i = 0;
if(str[++i]!=':')
if(str[++i]!=':')
error = 1;
str[i] = 0;
min = strtobcd(str);
if(min>0x59||error)
{
puts("minute error!\n");
return error;
}
str += i+1;
i = 0;
if(str[++i]!=0)
if(str[++i]!=0)
error = 1;
str[i] = 0;
sec = strtobcd(str);
if(sec>0x59||error)
{
puts("second error!\n");
return error;
}
SysTime.hour = hour;
SysTime.min = min;
SysTime.sec = sec;
RtcSetTime(&SysTime);
printf("Set time %x:%x:%x\n", hour, min, sec);
}
return error;
}
//---------------------------------------------------------------------------------//
U16 CalTimePara4FAT(U8 hour,U8 minute,U8 second)
{
U16 result;
result=hour*2048+minute*32+second+2;
return result;
}
U16 CalDatePara4FAT(U16 year,U8 month,U8 day)
{
U16 result;
result=(year-1980)*512+month*32+day;
return result;
}
//////////////////////////////////////////////////////////////////////////////////
int Fun_createfile(int argc,char *argv[])
{
char p[256],i;//,Status=0
U8 length;
if (!USB_Control.UDiskOK)
{
printf("请先插入移动盘\n");
return 0;
}
if(argc!=2)
{
printf("Bad Command.\n");
return 0;
}
////////////////////////////////////////////////////////
length=strlen(argv[1]);
if(length<13)
{
if(!GetShorFileForm(argv[1],p))
{
printf("文件字符格式错误\n");
return FALSE;
}
}else
{
memcpy(p,argv[1],length);
for(i=0;i<length;i++)
{
if((p[i]>=97)&&(p[i]<=122))
{
p[i]=p[i]-32;
}
}
p[length]='\0';
}
///////////////////////////////////////
if(OpenFile(p))
{
printf("文件已经存在,并打开了\n");
return FALSE;
}
////////////////////////////////////////
if(length<13)
{
if(!CreateFile(p))
{
printf("创建短文件失败\n");
return FALSE;
}
}
printf("文件创建成功\n");
return TRUE;
}
///////////////////////////////////////////////////////////////////
int Fun_createdir(int argc,char *argv[])
{
char blength,p[256],i;
if (!USB_Control.UDiskOK)
{
printf("请先插入移动盘\n");
return 0;
}
if(argc!=2)
{
return FALSE;
}
blength=strlen(argv[1]);
memcpy(p,argv[1],blength);
if(blength>=9)
{
for(i=0;i<blength;i++)
{
if((p[i]>=97)&&(p[i]<=122))
{
p[i]-=32;
}
}
}
p[blength]='\0';
if(OpenDir(p))
{
printf("该目录已经存在\n");
ExitDir();
return FALSE;
}
if(!CreateDir(argv[1]))
{
return FALSE;
}
printf("目录创建成功\n");
return TRUE;
}
int Fun_opendir(int argc,char *argv[])
{
U8 i,blength;
if (!USB_Control.UDiskOK)
{
printf("请先插入移动盘\n");
return 0;
}
if(argc!=2)
{
printf("Bad Command.\n");
return 0;
}
blength=strlen(argv[1]);
if(blength>9)
{
for(i=0;i<blength;i++)
{
if((*(argv[1]+i)>=97)&&(*(argv[1]+i)<=122))
{
*(*(argv+1)+i)-=32;
}
}
}
if(!OpenDir(argv[1]))
{
printf("目录打开失败\n");
return FALSE;
}
printf("目录打开成功\n");
return TRUE;
}
int Fun_listdir(int argc,char *argv[])
{
U8 status,BUF[4096],j;
U16 count,i,length;
////////////////////////////////////////
if (!USB_Control.UDiskOK)
{
printf("请先插入移动盘\n");
return 0;
}
status=List(&count,BUF);
if(!status)
{
printf("列举文件失败\n");
return FALSE;
}
printf("列举文件成功,有%d个文件或则目录在当前目录下:\n",count);
for(i=0;i<count;i++)
{
for(j=0;j<11;j++)
{
printf("%c",BUF[i*32+j]);
}
if(BUF[i*32+11]==0x10)
{
printf("\t文件夹\n");
}else{
length=MakeU32(BUF[i*32+31],BUF[i*32+30],BUF[i*32+29],BUF[i*32+28]);
printf("\t文件\t大小:%d字节\n",length);
}
}
return TRUE;
///////////////////////////////////////////////////////
}
int Fun_updir(int argc,char *argv[])
{
U8 status;
if (!USB_Control.UDiskOK)
{
printf("请先插入移动盘\n");
return 0;
}
status=ExitDir();
if(status==1)
{
printf("返回上级目录成功!\n");
}else {
printf("已经在根目录下了!\n");
}
return status;
}
int Fun_rootdir(int argc,char *argv[])
{
U8 status;
if (!USB_Control.UDiskOK)
{
printf("请先插入移动盘\n");
return 0;
}
status=Rootdir();
if(status==1)
{
printf("返回到根目录成功!\n");
}
else{
printf("返回到根目录失败!\n");
}
return status;
}
int Fun_getcap(int argc,char *argv[])
{
U32 Total,Free;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -