📄 initprogram.c
字号:
//UART COMMUNICATION
#include "InitProgram.h"
#include "DSP281x_Device.h"
volatile unsigned int CODE_AddrH=0,CODE_AddrL=0;
volatile unsigned int Length=0;
volatile unsigned long CODE_Addr;
volatile unsigned int *P;
volatile unsigned int *P_D;
#pragma CODE_SECTION(InitProgram,"InitProgram")
int InitProgram()
{
unsigned int i=0,j;
if(GpioDataRegs.GPBDAT.bit.GPIOB8)
{ while(GpioDataRegs.GPBDAT.bit.GPIOB8)
Data_Buff[i++]=*USB_EP2;
if((Data_Buff[0]=='C')&&(Data_Buff[1]=='O')&&(Data_Buff[2]=='D')&&(Data_Buff[3]=='E')&&(Data_Buff[4]=='S')&&(Data_Buff[5]=='T')&&(Data_Buff[6]=='A')&&(Data_Buff[7]=='R')&&(Data_Buff[8]=='T'))
{
for(j=0;j<11;j++)
*USB_EP6=str1[j];
j=*USB_EP6;
if(Receive_Code())
{
P=Data_Buff;
while(1)
{
if((*P=='$') && (*(P+1)=='A'))
break;
else
P++;
}
P+=2;
DownProgram(P);
while(1)
{
if((*P=='V')&&(*(P+1)=='E')&&(*(P+2)=='C')&&(*(P+3)=='T')&&(*(P+4)=='O')&&(*(P+5)=='R'))
break;
else
P++;
}
while(1)
{
if((*P=='$') && (*(P+1)=='A'))
break;
else
P++;
}
P+=2;
Init_Vector(P);
return 1;
}
else
{
for(i=0;i<14;i++)
*USB_EP6=str3[i];
i=*USB_EP6;
return 0;
}
}
else
{for(i=0;i<14;i++)
*USB_EP6=str2[i];
i=*USB_EP6;
return 0;
}
}
else return 0;
}
///////////////////////////////////////////////////////
// volatile unsigned int *P=Data_Buff;
//#pragma CODE_SECTION(Receive_Code,"InitProgram")
int Receive_Code()
{
unsigned int i,j;
P=Data_Buff;
while(1)
{
if(GpioDataRegs.GPBDAT.bit.GPIOB8)
{
i= *USB_EP2;
j=i & 0xff00;
i=i & 0x00ff;
i=(i<<8) & 0xff00;
j=(j>>8) & 0x00ff;
*(P++)= j+i;
}
else if((*(P-7)=='C')&&(*(P-6)=='O')&&(*(P-5)=='D')&&(*(P-4)=='E')&&(*(P-3)=='E')&&(*(P-2)=='N')&&(*(P-1)=='D'))
return 1;
else continue;
}
}
//////////////////////////////////////////////////////////
//#pragma CODE_SECTION(DownProgram,"Init_Program")
void DownProgram(volatile unsigned int *P)
{
//P_D=CODE_Point;
unsigned long temp;
unsigned int i;
temp=0x00000000;
while(1)
{
if(*P==0x002c)
break;
else
temp=temp*0x10000+*(P++);
}
P_D=(volatile unsigned int *)temp;
P+=1;
while(1)
{
if((*P=='V')&&(*(P+1)=='E')&&(*(P+2)=='C')&&(*(P+3)=='T')&&(*(P+4)=='O')&&(*(P+5)=='R'))
break;
else *(P_D++)=*(P++);
}
}
/////////////////////////////////////////////////////////
//#pragma CODE_SECTION(Init_Vector,"Init_Progmram")
void Init_Vector(volatile unsigned int *P)
{
unsigned long temp;
temp=0x00000000;
//P_D=VECTOR_Point;
while(1)
{
if(*P==0x002c)
break;
else
temp=temp*0x10000+*(P++);
}
P_D=(volatile unsigned int *)temp;
P+=1;
while(1)
{if((*P=='C')&&(*(P+1)=='O')&&(*(P+2)=='D')&&(*(P+3)=='E')&&(*(P+4)=='E')&&(*(P+5)=='N')&&(*(P+6)=='D'))
break;
else
*(P_D++)=*(P++);
}
}
/////////////////////////////////////////////////////////
//#pragma CODE_SECTION(InitProgram,"InitProgram")
void Delayms(unsigned int k)
{
k*=255;
while(k--);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -