打印
[牛人杂谈]

新唐Cortex—M0学习之PC编程与嵌入式编程的差别 .

[复制链接]
1590|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
骗子的片子|  楼主 | 2013-12-20 21:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 骗子的片子 于 2013-12-20 21:07 编辑

(转)这是一个很重要的概念!

1.printf()的时间

在PC编程中,你可以用printf()这个函数来看变量值,而忽略它所占用的时间,(相对于3GHZ的CPU来说可以忽略),但是在嵌入式编程中,用printf()在超级终端中看变量值的时候,它的开销你要计算进去,尤其是程序对信号的捕捉到了毫秒,微秒级别的时候!

笔者曾经干过这样一件事情,用定时器函数来delay()9毫秒时间,过0.9毫秒,让里面的变量i加一,结果i等于9的时候跳出循环,而在里面多加了一句printf(),i加到了6就跳出了循环,害的我以为我的算法错了,希望大家不要走同样的弯路!

2.乘法时间

说到delay()函数,我的原型如下:

void delay(double time)
{
      delayEnd = 0;

      time = time * 12000;   //得到计时次数

     TCMPR0 = (long)time;
     
     TCSR0 |= CEN;        //开始计数

     while(delayEnd == 0);  //得到定时中断服务函数吧delayEnd 置为1
}

笔者用这个延迟函数想产生一个周期为26us的方波,于是delay(0.026);然后取反,结果产生了周期为100us的方波于是笔者改成了这样:

  void Delay(long time)
{
   delayEnd = 0;

  TCMPR0 = time;              //得到计时次数
     
  TCSR0 |= 0x40000000;        //开始计数,对TCSR0的第30位尅是写1,表示计数

  while(delayEnd == 0);          //得到定时中断服务函数吧delayEnd 置为1
}

结果产生周期为50us的方波,从两个delay()函数中我们可以看到,乘法的占用时间在程序达到us级别的时候,是必须要简化和考虑的,而每条语句的汇编条数我们也要看到,尽量精简,因为延迟函数之前,程序的条数也会占用时间,这些在PC机中从来不用考虑
沙发
niuyaliang| | 2013-12-22 22:36 | 只看该作者
printf确实会占用很大的时间,这是个问题,当然,在单片机中,实际也很少用到printf,只在调试中用到

使用特权

评论回复
板凳
fengwucangbo| | 2013-12-22 23:10 | 只看该作者

使用特权

评论回复
地板
www425531304| | 2015-4-10 11:29 | 只看该作者
谢谢了 长知识了

使用特权

评论回复
5
mintspring| | 2015-5-8 12:57 | 只看该作者
在PC编程中,你可以用printf()这个函数来看变量值,而忽略它所占用的时间,(相对于3GHZ的CPU来说可以忽略),但是在嵌入式编程中,用printf()在超级终端中看变量值的时候,它的开销你要计算进去,尤其是程序对信号的捕捉到了毫秒,微秒级别的时候!

使用特权

评论回复
6
mintspring| | 2015-5-8 12:57 | 只看该作者
那么如何实现这个Printf呢?比如在某个单片机中,需要配置哪些?

使用特权

评论回复
7
稳稳の幸福| | 2015-5-8 15:33 | 只看该作者
函数与硬件的配置这个关系一定要搞懂,其实我目前还不懂,所以我会找找资料好好研究一下的。

使用特权

评论回复
8
734774645| | 2015-5-10 07:51 | 只看该作者
视窗界面貌似不用printf,那都是命令行年代的

使用特权

评论回复
9
lovecat2015| | 2015-5-12 16:01 | 只看该作者
确实很占用时间
一般在应用的时候这类打印的函数都会屏蔽掉吧

使用特权

评论回复
10
稳稳の幸福| | 2015-5-13 21:02 | 只看该作者
建议单片机不要使用这种printf手法。

使用特权

评论回复
11
734774645| | 2015-5-13 22:38 | 只看该作者
同意上述观点,这个printf确实有妙处

使用特权

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

本版积分规则

122

主题

1607

帖子

3

粉丝