这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 哪位大侠看懂这段代码的,解释一下,谢谢了

共2条 1/1 1 跳转至

哪位大侠看懂这段代码的,解释一下,谢谢了

院士
2006-09-17 18:14:16     打赏
哪位大侠看懂这段代码的,解释一下,谢谢了



关键词: 哪位     大侠     看懂     这段     代码     解释     一下     谢谢了         

院士
2006-12-22 22:43:00     打赏
2楼
问 1.void Uart_Printf(char *fmt,...)
这里函数参数可以是"...",这表示什么意思啊???
2.44b0test中,有一个delay()函数,实在看不懂它的功能作用


void Delay(int time)
// time=0: adjust the Delay function by WatchDog timer.这句话是什么意思?为什么要校准Delay()函数呢?
// time>0: the number of loop time这里lpop time是什么意思?
// 100us resolution.
{
    int i,adjust=0;
    if(time==0)
    {
    time=200;
    adjust=1;
    delayLoopCount=400;//这个变量的含义是什么?
    rWTCON=((MCLK/1000000-1)<<8)|(2<<3);  // 1M/64,Watch-dog,nRESET,interrupt disable
    rWTDAT=0xffff;
    rWTCNT=0xffff;     
    rWTCON=((MCLK/1000000-1)<<8)|(2<<3)|(1<<5); // 1M/64,Watch-dog enable,nRESET,interrupt disable
    }
    for(;time>0;time--)//这两个for循环有什么作用?
    for(i=0;i<delayLoopCount;i++);
    if(adjust==1)
    {
    rWTCON=((MCLK/1000000-1)<<8)|(2<<3);
    i=0xffff-rWTCNT;   //???1count/16us?????????
    delayLoopCount=8000000/(i*64);    //???400*100/(i*64/200)   
    }
}

刚开始学,所以很多问题不懂,还请各位兄弟姐妹多多指教,小弟在此先行谢过。有朝一日小弟技术精进的话,我也一定会像各位今天帮助我这样来帮助后来者. 1: 这是很一般的问题呀void Uart_Printf(char *fmt,...)
一般的C语言里都有描述呀,书本知识不够呀。
...应该就是省略的意思,也就是参数个数可变的意思
// time=0: adjust the Delay function by WatchDog timer.这句话是什么意思?为什么要校准Delay()函数呢?
不是校准Delay函数,而是当time=0时改变一下WatchDog timer的设定,可能是
写的人的英文水平有限呀。
// time>0: the number of loop time这里lpop time是什么意思?
对于一个函数应了解它的功能及使用限致,至于做什么用就看个人的了。 2: 惭愧!1.一直觉得自己c还是学得比较好,但是这种函数定义的确见得少,而我又是个懒得查资料的人,所以想找捷径解决。
2.time=0: adjust the Delay function by WatchDog timer.即使adjust理解为改变,还是纳闷。它说通过看门狗定时器来改变Delay()函数?这应怎么理解?

事实上,几乎在每个测试模块里如key、led都有Delay(0)这个函数,不知道为什么这样做???

void Test_Kb(void)
{
    U8 which_key;
    rPCONG=0x00ff;    //EINT7~0
    rPUPG=0x0;        //pull up enable    
    Delay(0);  //calibrate Delay()
    Led_Display(7);
    Delay(1000);  //calibrate Delay()
    Led_Display(0);
    Delay(5000);  //calibrate Delay()
    Led_Display(7);
    ......

不过从上面几个调用Delay()的函数来看,前面的"adjust"好像真应该翻译为校准而不是改变的意思.


多谢指教!
3: 我现在不得不怀疑你外语学的是不是英语?我这四级不过的家伙都看懂,你是不确定,还是看不懂?
我已经给你发过中文手册了,至少还有寄存器的说明吧?你哪里不懂去查查手册就知道那个寄存器是干什么的了?也好帮助你理解.
1.这是一个和printf一样的函数.如果你真的懒得查你就当做printf就行了,只不输出的终端不屏幕而是串口,具体使用哪个串口你就看函数体吧.
2.
?(1)关于delayLoopCount的含义我还需要看看.
?(2)loop time循环次数.
?(3)就是要延时的时间长度
珊瑚虫老弟(不知道我有没有你大,我是81年的如果没有请恕得罪)你的技术已经精进很快,在过一周我就看不懂你的问题了,努力! 4: 关于Delay函数Delay函数大致是这样,time=0时使用WDT做为基准进行校时,保证每time的精度为100us.这里先假定了time和delayloopcount然后通过WDT测算time=200和delayloopcount=400的实际延时时间,然后代算出100us对应的delayloopcount,这样就可以保证time的精度为100us.但是这只是一个大概的情况.设置的WDT的最长不中断时间不到4.2秒,具体的情况需要看相关单元了. 5: 静下心来,切忌浮躁应该说,我发的很多问题其实大致意思我是懂的,但是很多时候我不太确定,或者说我想知道why,了解得更清楚点。比如void Uart_Printf(char *fmt,...)这种函数定义,其实我也不是不懂,但是我想知道得更清楚点,我不是自傲,但我对自己的C/C++还是很自信的。
近来发现自己有点死抠细节,什么问题都想刨根问挖底弄个清清楚楚明明白白,这样太浪费时间了,有点不值。接下来的决定改变一下学习思路,对嵌入式软件设计先大致地走一启遍,太细节的东西如Uart_Printf、Uart_GetIntNum、Uart_SendByte的实现细节不再死抠了,知道它们的功能和用法即可,后面有时间再研究。
在此我要再次感谢weiganglnu,是你不厌其烦的帮我解决问题,谢谢了。手册这两天我看了,的确,很多问题其实在上面都能找到答案。
所以,我告诫自己:静下心来,切忌浮躁。以后有问题先看datasheet,实在解决不了,再问诸位兄弟。
谢谢各位!

ps:

to weiganglnu:我比你痴长一岁(80.11),惭愧惭愧!!! 6: 想快速掌握是好事.你现在的想法以前我都有过,但我实践过发现是错误的,不想别人也走我的路.我很抱歉叫你小弟,我还没有你大呢. 7: 能者为师
to  weiganglnu:

   我前两年主要做计算机测控,用VC或CVI开发。今年才真正做嵌入式,前五个月做的是ATmega128的编程,两周前才开始学ARM,很多问题不懂。然而我这个毕设最迟11月就要做完,所以心理很着急,不太愿意看手册,感觉太浪费时间,于是就在这里狂问各位,呵呵。

 能者为师,如何称呼无所谓。志同道合的,都是朋友。呵呵. 8: 我就是一在东软攒机的.怎么能当什么老师?我就是一在东软搬攒机的.怎么能当什么老师呢?这种话说了折寿的.千万不要再说这种话,我不敢当.
"然而我这个毕设最迟11月就要做完,所以心理很着急"这个我能理解,有什么问题尽量帮你回答,我不懂的可以帮你问,我同学都是电子工程师.只不过可能消息反馈会慢点.从你说的情况上,你是工科大学的研究生,我真的有眼不识泰山了.我不知道你在哪里就读,但我想知道你哪里好不好考.
"不太愿意看手册,感觉太浪费时间",这个思想就不太对了,俗话说磨刀不误砍柴功,你还有至少5个月的时间,暑假和下学期应该没有什么课了.我不知道你是不是给导师干项目的时间很多,那样你就很辛苦了.看了手册论文也会好写,答辩也会好答的.
"我前两年主要做计算机测控,用VC或CVI开发。今年才真正做嵌入式,前五个月做的是ATmega128的编程,两周前才开始学ARM,很多问题不懂。"我同样也有很多问题不懂.不过你的基础应该非常好,而且现在进步速度很快,到7月末,你会发现,你已经可以很轻松使用44B0的片上外设做简单的Demo了.你只要知道起动代码的意思,剩下的学会部件操作,然后就可以移植操作系统了.你的论文也应该是大致这个样子吧?
如果说的不对敬请原谅.
9: 今天才收到你的邮件,mail服务器大概有问题了.由于种种原因吧,主要,一是运气不佳,二是证书不行,三是需要钱.面过十多次后才一家公司使我勉强答应,学校是文科学校没人认,没有四级证,有一次面试人家看我没有四级证时就打算结束面试,虽然我尽力了,我和他们说我能看懂datasheet,他们笑笑和我说用翻译软件谁都能看懂,我无奈.在我这个地方小公司需要有经验的大公司又进不去,人家连简历看都不看.小公司的头头总认为新来的什么不懂,工资又很低,没保险,租房子,一个月下来还要和家里要钱,所以,不做了,经同学介绍,做这个工作,新水虽然没有研发的高但还可以,也不用加班,年后还有几个月淡季,轻松许多.就是总出差,飘泊不定,准备挣几年钱,稳定一下,回家去考研究生,然后留在家乡就行了.不是每个人都足够幸运去做他理想中的事的,幸运的人抓住机会吧. 10: 5个月可以作很多事情了别那么着急,作一个经典的。
每种ARM都有自己的优点、缺点。
把手册都看明白了,一通百通。 11: 换种学习方法其实,不看datasheet,是非常不明智的,因为它是基本上包括你使用ic的全部信息,除了一些设计上的bug,其它讲解应该是百分百正确的。珊瑚虫,老兄最近确实问问题也太频繁了,不是说问多了不好,有些东西还是要自己摸的,这样才深刻。其实你也不用一下把手册全部看完。我一般都是分章看,学一章,练一章,最后全部穿一下,即基本可以了。这样不会太累。 12: 我也发现自己的问题了,呵呵最近正在看datasheet,基本上是按各个模块来看,然后对照测试代码加深理解,感觉还是不错的。

不过测试代码还是有些没看懂,留待以后再问吧,先把整体看完一遍再说。

to weiganglnu:
   我在北京的一所高校上研二,明年三月毕业。我感觉现在考研不难,好好复习复习,问题应该不大。
 "准备挣几年钱,稳定一下,回家去考研究生,然后留在家乡就行了",建议你大胆去考吧,其实真的不难。另外,我看你对嵌入式这方面很感兴趣,以后也可以朝这个方向做做。
  "不是每个人都足够幸运去做他理想中的事的,幸运的人抓住机会吧."颇有同感,只能努力去争取吧!

to  hero415:
  “不是说问多了不好,有些东西还是要自己摸的,这样才深刻",有理,其实我以前还是蛮爱钻研的,不过主要是因为时间紧,心理实在着急。此外,我们实验室十几号人就我一个人做这个方向,周围没有人讨论,所以只好到这里劳烦各位了,呵呵.还有,你所介绍的方法值得借鉴.




13: 把44b0的中文手册给我一份吧,谢谢了把44b0的中文手册给我一份吧,谢谢了
我也正在开始学,头大!

wjhtinger@yeah.net 14: 没有中文手册
有英文手册,还有一个中文的寄存器描述,我给你发到邮箱了 15: 关于S3C4510B的几个问题由于本人刚刚接触ARM,问的问题可能也比较菜,请大家不要见笑:

1.关于仿真器,利用仿真器可以实现程序的烧录吗?难道只能用那个简易的JTAG调试板?好像说是那个不稳定速度慢,那么仿真器配合一定的软件也是可以烧录的吧?
2.开发环境的建立:这个大家有没有什么具体的介绍方法的文章啊?
3.uclinux操作系统的编译:
是不是只能在linux下才能编译,编译成最后生成.rom文件,这种格式的文件好像不能烧录进flash啊?


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]