📄 main.c
字号:
#include "dc_struct.h"
#include "function.h"
#include "reg_bit.h"
#include "dev_reg.h"
#include "packet.h"
#include <stdio.h>
/* dsp5410 */
extern unsigned int *pmem=0;
extern unsigned char StdConfigDescAll[TOTALLENGTH/2];
#define IMR *(pmem+0x0000)
#define IFR *(pmem+0x0001)
#define PRD0 *(pmem+0x0025) /* timer0 period register */
#define TCR0 *(pmem+0x0026) /* timer0 control register */
#define PMST *(pmem+0x001D)
#define SWCR *(pmem+0x002B)
#define SWWSR *(pmem+0x0028)
#define BSCR *(pmem+0x0029)
#define CLKMD *(pmem+0x0058)
#define PMST_VAL 0x00A0 //interupt vectors from ox80
#define SWWSR_VAL 0x7fff
#define SWCR_VAL 0x0001
#define BSCR_VAL 0x8802
#define CLKMD_VAL 0x9807
unsigned char checksum=0;
int k,j=0,counter=0,addr_flag=0,flag1=0,flag2=0;
unsigned long int_ifr=0;
extern long int_flag;
extern unsigned char addr_1362;
int data[1]={0x5555};
int data1[1];
void dsp_init()
{
CLKMD=0;
while((CLKMD&1)==1);
CLKMD=0x37ef;
while((CLKMD&1)==0);/**/ //MULTIPLY (4+1),CLK IS 100m
PMST&=0X00fF; //INTERRUPT VECTOR IS REMAPPED TO 0X0080
PMST|=0X0080|0X0020/**/|0X0040|0X0008/**/; //SET OVLY=1 ,MP/MC=1,DROM=1.RAM IS IN DATA AND PROGRAM SPACE
// SWWSR =0X7738;
SWWSR=0Xf737;
// PMST&=~0X0008;
// PMST|=0X0020;
}
void dspInt_init()
{
asm(" ssbx intm");
// PMST=0x3FA0;
// SWWSR=0x7fff;
// SWCR=0x0000;
// IMR&=0x0004;
// IMR=IMR|0x0004;//enable int2
IMR=0X0004;
IFR=IFR;
// printf("test1\n");
asm(" rsbx intm");
// printf("test2");
}
void main()
{
unsigned short tempvalue,temp,i=1;
unsigned long templong=0x15235647;
asm(" ssbx intm");
// asm(" ssbx xf");
asm(" rsbx xf");
dsp_init();
// ReadChipId();
// InitPLL();
Isp1362_init();
// dsp_init();
i = read_ID();
printf("The flash ID is: 0x%4x \n",i);
/* erase_flash();
delay(1000);
for(i=0;i<0x8000;i++)
{// flash_page_prog(0x80000+i,(int *)&data,1);
flash_page_read(0x80000+i,(int *)data1,1);
}
*/
struct_init((unsigned char*)BUFF_ADDR);
dspInt_init();
softconnect(0);
delay(5000);
softconnect(1);
unlock();
while(1)
{
/* if(InfoFlags.bits.ep1_rxflag==1)
{
ep1_rxdone();
InfoFlags.bits.ep1_rxflag=0;
}
if(InfoFlags.bits.ep2_rxdone==1)
{
ep2_txdone();
InfoFlags.bits.ep2_rxdone=0;
}
*/
#ifdef 0
if ((InfoFlags.bits.bus_reset)&&(k==0))
{ InfoFlags.bits.bus_reset=0;
k=1;
printf("device is connect to a host,bus reset\n");
}
if (InfoFlags.bits.resume)
{
InfoFlags.bits.resume=0;
printf("bus suspend resume\n");
if (!InfoFlags.bits.busstatus) //if bus state is awake,continue,else abort.
{
unlock();
}
}
if ((InfoFlags.bits.suspend)&&(k==0))
{
InfoFlags.bits.suspend=0;k=1;
// printf("bus suspend\n");
/* if (InfoFlags.bits.busstatus)*/ //if bus state is suspend,process next,else abort.
/* if((int_flag&0x80)!=0)//
{
// usb_wake=0;
//clear CLKRUN
tempvalue=read_reg16(Com16_DcHardConfig_R);
tempvalue&=~CLKRUN;
write_reg16(Com16_DcHardConfig_W,tempvalue);
//write gosup 1 followed 0 to active suspend mode
tempvalue=read_reg8(Com8_DcModeConfig_R);
tempvalue|=GOSUSP;
write_reg8(Com8_DcModeConfig_W,tempvalue);
tempvalue&=~GOSUSP;
write_reg8(Com8_DcModeConfig_W,tempvalue);
// usb_wake=0x0004;
delay(5000);
}*/
}
/* if (InfoFlags.bits.setup_packet)
{
InfoFlags.bits.setup_packet=0;
protocol_process();
}*/
if ((InfoFlags.bits.busstatus)&&(k==0))
{printf("bus status is suspend\n");k=1;
InfoFlags.bits.busstatus=0;}
/* if (InfoFlags.bits.busstatus==0&&(k==0))
{printf("bus status is awake\n");k=1;}
if ((InfoFlags.bits.psof)&&(k==0))
{printf("psof interrupt\n");
InfoFlags.bits.psof=0;k=1;}
*/
#endif
// for(;;);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -