This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

请问ccs5仿真的时候如何显示时间?



请问ccs5仿真的时候如何显示时间?

  • 好好看看ccs5的userguider,应该会讲解的,430的前辈大都用iar,后来的人采用ccs。

  • bei zhang, 有两种方法可以来测试程序执行的CPU  cycle数,之后可根据MCLK来计算。

    方法一:

    download 程序后,Run->Clock->Enable,具体操作参考:

    http://processors.wiki.ti.com/index.php/Profile_clock_in_CCS

    方法二:

    可以看每个函数的执行cycle,功能较强大,你可以试试,参考链接如下:

    http://processors.wiki.ti.com/index.php/Profiler

    希望对你有帮助!

  • Lina Lian 谢谢您的解答,我还有几个问题想请教一下:

    1)我刚刚在学校430的时钟系统,我看的TI公司提供的例程上面有一个函数

    while(1)
    {
    P1OUT ^= BIT1;      //LED
    __delay_cycles(60000); // Delay
    }

    __delay_cycles(60000); // Delay请问这个在CCS里面有吗?我调试的时候CCS没有报错但是没法看到LED的闪烁,是因为我的MCLK是1M,那这个函数的时间就是1us*60000=0.06S时间太短还是,ccs里面没有这个函数?

    2)因为__delay_cycles(60000); 无法实现我使用for循环来实现延时

    for(i=50000;i>0;i--);                   // Delay

    但是我不太清楚这一个for循环需要多少时间,我根据实际下载到板子里的现象大约是0.5-1S,不知道能不能通过具体的计算得知稍微精确的时间?

  • __delay_cycles是一个本征函数,是延迟n个机器周期的。

    使用延迟你可以用while,for,__delay_cycles或者timer都可以做到。使用timer的延迟精度较高

  • bei zhang,

    如Peter所说,__delay_cycles()是本征函数,是确定有这个函数的。如果主频为1MHz, __delay_cycles(500000)试试这个,0.5s LED状态翻转一次,可以很清楚的看到LED闪灯。

    其实还是推荐你使用timer来进行此类定时,一方面可以进入低功耗模式,降低功耗,另一方面,timer的定时精度更高。

    此外虽然 while, for也可用来延时,但是精度不高。且随着complier的优化等级,版本等的不同,可能会导致相同的程序但是延时不同。故相较while, for还是推荐用__delay_cycles()。

    关于__delay_cycles()以及其他本征函数的具体介绍可以参考下面文档:MSP430 Optimizing C/C++ Compiler v 4.1 User's Guide中的section 6.7

    http://www.ti.com/lit/ug/slau132g/slau132g.pdf

    希望对你有帮助!O(∩_∩)O~


  • 谢谢您细致的回复