加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

DSP28335 调试,在RAM中能运行,在Flash中无法运行

(2017-02-23 10:53:28)
分类: DSP28335调试

调试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;       // 设置为连续运行

 }

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有