打印

TMS320F28035调试时DELAY_US(ADC_usDELAY)执行后出错,怎么解决?

[复制链接]
4880|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
rcengtian|  楼主 | 2013-9-25 10:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
是这样,我用TMS320F28035调试例程Example_2803xClaAdcFirFlash,其中InitAdc(),调用了DELAY_US(ADC_usDELAY); ,运行后出错。怎么回事?

直接调用TI现成的函数DSLAY_US(A),但是发现程序一直停在DSLAY_US(A),不动,不知道什么原因,我想请问怎么调这个函数用。提示如下:No source available for "0x8046" 。



相关帖子

沙发
abu315| | 2013-9-25 16:02 | 只看该作者
添加文件“DSP2803x_usDelay.asm”,将DELAY_US(A)改为DSP28x_usDelay(5000)
试一试!

使用特权

评论回复
板凳
zhangmangui| | 2013-9-25 22:06 | 只看该作者
你是将程序跑在RAM中还是flash中    如果是跑在FLASH里,是否有调用memcpy?
还有  看看你的CMD   这一句 .stack              : > FLASHE       PAGE = 1
是flash还是RAM     堆栈要放到RAM中  .stack              : >  RAMM0       PAGE = 1
如果还不行  在软件设置中  将堆栈设大点

使用特权

评论回复
地板
zchong| | 2013-12-2 22:23 | 只看该作者
兄台,这个到底是什么问题,这个函数没有源码,哪来的?

使用特权

评论回复
5
rcengtian|  楼主 | 2014-1-13 23:54 | 只看该作者
现在我没有用这个函数。因为DSLAY_US(A)要跑在内存里,所以调用时要将DSLAY_US(A)从FLASH拷到内存。使用COPY不对,所以出错呀。

使用特权

评论回复
6
我是一个小毛驴| | 2016-8-27 12:44 | 只看该作者
rcengtian 发表于 2014-1-13 23:54
现在我没有用这个函数。因为DSLAY_US(A)要跑在内存里,所以调用时要将DSLAY_US(A)从FLASH拷到内存。使用COP ...

我也是在使用外部晶振的时候,发现系统里面有DELAY_US(1000L); FLASH调试的时候,总是无法运行,将它屏蔽就可以了
void XtalOscSel (void)  {
     EALLOW;
     SysCtrlRegs.CLKCTL.bit.XTALOSCOFF = 0;     // Turn on XTALOSC

    DELAY_US(1000L);                           // 1mS delay to ensure crystal
                                                // oscillator is up and running.
                                                // Adjust as needed.
     SysCtrlRegs.CLKCTL.bit.XCLKINOFF = 1;      // Turn off XCLKIN
     SysCtrlRegs.CLKCTL.bit.OSCCLKSRC2SEL = 0;  // Switch to external clock
     SysCtrlRegs.CLKCTL.bit.OSCCLKSRCSEL = 1;   // Switch from INTOSC1 to INTOSC2/ext clk
     SysCtrlRegs.CLKCTL.bit.WDCLKSRCSEL = 0;    // Clock Watchdog off of INTOSC1
     SysCtrlRegs.CLKCTL.bit.INTOSC2OFF = 1;     // Turn off INTOSC2
     SysCtrlRegs.CLKCTL.bit.INTOSC1OFF = 0;    // Leave INTOSC1 on
     EDIS;
}

谁能知道怎么样,让它在FLASH里可以运行呀

使用特权

评论回复
7
我是一个小毛驴| | 2016-8-27 13:30 | 只看该作者
我是一个小毛驴 发表于 2016-8-27 12:44
我也是在使用外部晶振的时候,发现系统里面有DELAY_US(1000L); FLASH调试的时候,总是无法运行,将它屏 ...

DELAY_US(A)  函数放在RAM中运行,所以我将InitSysCtrl函数放在 MemCopy函数之后就可以了

#ifdef FLASH
        // Copy time critical code and Flash setup code to RAM
        // The  RamfuncsLoadStart, RamfuncsLoadEnd, and RamfuncsRunStart
        // symbols are created by the linker. Refer to the linker files.
        MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);
#endif

        // Step 1. Initialize System C-ontrol:
        // PLL, WatchDog, enable Peripheral Clocks
        // This example function is found in the DSP2803x_SysCtrl.c file.
           //InitSysCtrl();
        InitSysCtrl();

#ifdef FLASH
        // Call Flash Initialization to setup flash waitstates
        // This function must reside in RAM
        InitFlash();        // Call the flash wrapper init function
#endif //(FLASH)

使用特权

评论回复
8
rcengtian|  楼主 | 2016-9-21 16:20 | 只看该作者
将DSLAY_US(A)从FLASH拷到内存,正确使用COPY即可。仿真查看COPY的是否正确。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:每天努力一点点。

11

主题

176

帖子

1

粉丝