调试28335,写了个ADC检测程序,外加串口控制。
在连接仿真器的时候,串口能控制下位机运行,在写入Flash后,控制无反应
解决方法:把adcInit()函数放到Menorycopy后面,即可运行。原因是adcInit()需要调用delayus()函数,此函数只能在RAM中运行,如果需要在Flash中运行,需要先初始化Memorycopy函数
文库解决方法文档:http://wenku.baidu.com/view/6a45c7fc04a1b0717fd5dda9.html
void Init()
{
InitSysCtrl();
DINT;
IER = 0x0000;
IFR = 0x0000;
InitGpio();
InitPieCtrl();
InitPieVectTable();
MemCopy(&RamfuncsLoadStart,&RamfuncsLoadEnd,&RamfuncsRunStart);
InitFlash();
InitAdc();//此函数需要调用DELAY_US,在Flash中运行的时候,DELAY_US需要先初始化MemCopy函数,所以必须写在它之后!!!
InitXintf32Gpio();
EnableInterrupts();
InitScibGpio();
sci_init();
EALLOW;
PieVectTable.SCIRXINTB = &uartIsr;
PieVectTable.SCITXINTB = &uart_send;
EDIS;
PieCtrlRegs.PIECTRL.bit.ENPIE=1;
PieCtrlRegs.PIEIER9.bit.INTx3=1;
PieCtrlRegs.PIEIER9.bit.INTx4=1;
IER|=M_INT9;
EINT;
ERTM;
EALLOW;
SysCtrlRegs.HISPCP.all=ADC_MODCLK;
EDIS;
AdcRegs.ADCTRL1.bit.ACQ_PS
= ADC_SHCLK;//设置采样窗口时间:(15+1)*ADCCLK
AdcRegs.ADCTRL3.bit.ADCCLKPS =
ADC_CKPS;//ADC内核时钟分频:HSPCLK/2=6.25MHZ
AdcRegs.ADCTRL1.bit.SEQ_CASC =
1;
// 1选择级联模式
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0;
//通道选择ADCAIN0
AdcRegs.ADCTRL1.bit.CONT_RUN =
1;
// 设置为连续运行
}
加载中,请稍候......