打印
[应用相关]

MDK的软件仿真问题曾让我很疑惑!!!o(∩_∩)o...哈哈

[复制链接]
8555|28
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
渤海三叠浪|  楼主 | 2009-4-21 20:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
帖子原题目是 :V3.00的库让我很疑惑!!!!

这个库和以前的很不一样!!! 

    while (1) {
        GPIO_SetBits(GPIOC, GPIO_Pin_7);
        GPIO_SetBits(GPIOC, GPIO_Pin_6);
        GPIO_SetBits(GPIOC, GPIO_Pin_5);
        GPIO_SetBits(GPIOC, GPIO_Pin_4);
   }

看看它的反汇编语句  感到非常疑惑 

竟然 先执行     
        GPIO_SetBits(GPIOC, GPIO_Pin_7);
        GPIO_SetBits(GPIOC, GPIO_Pin_6);
        GPIO_SetBits(GPIOC, GPIO_Pin_5);
        GPIO_SetBits(GPIOC, GPIO_Pin_4);
最后执行while

=====================
还有 软件仿真时候 在全速运行时候 竟然一个“对勾”都没有!!!!
     然后停止运行,竟然出现“对勾”!!!
相当疑惑啊!!!


================================
刚开始以为是MDK版本的原因 后来发现不是,用以前的库就不会出现这种情况!!!

谁帮忙解释一下!!!
 
 
【【【【【【【【【【【【【【【【【下载的文档是如何用V3.00库建立工程?????不是我写的!!!图文并茂写得很好】】】】】】】】】】】
相关链接:https://bbs.21ic.com/upfiles/img/20094/2009421204542443.pdf
沙发
渤海三叠浪|  楼主 | 2009-4-21 20:55 | 只看该作者

MDK350+&+ST3[1].00外设库初探.pdf

上面帖子文档原来的题目是 {MDK350+&+ST3[1].00外设库初探.pdf}

这个文档不是我写的  是我转载的  

使用特权

评论回复
板凳
渤海三叠浪|  楼主 | 2009-4-21 21:01 | 只看该作者

还有

用了 这个库 之后  MDK的编译速度变得很慢 !!!!

而原来的库编译速度很快!!!

若用V3.00的库 ,不选 MDK的 options for target 的 Browse information选项,编译速度就会很快!!!!

不知道大家发现没有???

使用特权

评论回复
地板
香水城| | 2009-4-21 23:03 | 只看该作者

全速运行时候 竟然一个“对勾”都没有?

“对勾”是什么东西?


先执行     
        GPIO_SetBits(GPIOC, GPIO_Pin_7);
        GPIO_SetBits(GPIOC, GPIO_Pin_6);
        GPIO_SetBits(GPIOC, GPIO_Pin_5);
        GPIO_SetBits(GPIOC, GPIO_Pin_4);
最后执行while


这样做有什么问题吗?

使用特权

评论回复
5
渤海三叠浪|  楼主 | 2009-4-22 00:09 | 只看该作者

回楼上

“对勾”  指的是 https://bbs.21ic.com/upfiles/img/20094/20094220355527.gif


先执行     
        GPIO_SetBits(GPIOC, GPIO_Pin_7);
        GPIO_SetBits(GPIOC, GPIO_Pin_6);
        GPIO_SetBits(GPIOC, GPIO_Pin_5);
        GPIO_SetBits(GPIOC, GPIO_Pin_4);
最后执行while
这与用以前的库不一样!!!

V2.0的库用MDK是先执行while
后执行
        GPIO_SetBits(GPIOC, GPIO_Pin_7);
        GPIO_SetBits(GPIOC, GPIO_Pin_6);
        GPIO_SetBits(GPIOC, GPIO_Pin_5);
        GPIO_SetBits(GPIOC, GPIO_Pin_4);


 

使用特权

评论回复
6
渤海三叠浪|  楼主 | 2009-4-22 00:16 | 只看该作者

补充

这是软件仿真时候的界面
用笔标出来的叫做“对勾”!!! 

使用特权

评论回复
7
香水城| | 2009-4-22 08:49 | 只看该作者

楼主明白这个“对勾”的意义吗?

关于后执行while的问题说明你还不熟悉C语言。现在你只要关心执行的结果就好了,其它的问题等你熟悉了C语言后再考虑。

使用特权

评论回复
8
jlwg| | 2009-4-22 09:18 | 只看该作者

听了楼住的话,我也糊涂了。

本来我对stm32还算是挺熟悉的,看了楼主的问题。我也糊涂了,能把明白的搞糊涂,搂主也可以算是能人啊。

使用特权

评论回复
9
a_rui| | 2009-4-22 10:48 | 只看该作者

关于LZ说的while问题

关于LZ说的while问题,这个很正确啊,现在while(1)根本就是没有判断么,还要在代码前加什么判断???最后当然是跳回循环的第一条语句了。

汇编语言也要搞清楚些.

使用特权

评论回复
10
McuPlayer| | 2009-4-22 12:16 | 只看该作者

LZ的while问题

这不关ST的库的事啊,这个应该是编译器的问题,找Keil或者ARM或者GUN才对

再说了,你都while(1)了,你还想判断啥,不就死循环嘛

使用特权

评论回复
11
渤海三叠浪|  楼主 | 2009-4-22 21:07 | 只看该作者

终于知道其中一个原因了!!!

是两个工程的优化级别设置的不一样(与One ELF Section per Function无关)。

0级别的在开始多了个跳转指令!(当然 还有别的 不一样)


8楼,你现在还糊涂么???????

不过8楼的回复用了==============楼住=====楼主=======搂主======
1个词 3种写法!!!!! 你也是能人  哈哈哈!!!







多谢4楼、7—10楼的回复!!!


********************************************************
另一个问题,全速运行 为什么一个"对勾"没有,而断点运行,却有"对勾"??

我觉得是编译器的问题!!!!

全速运行 时钟没开!!!
断点运行,时钟开了!!!??

我猜想:大概编写MDK的外国人  不知道软件仿真时候把时钟的某些位 弄成ready好呢,还是弄成不ready好?

最后他们中庸了一下------------全速运行RCC的某些位就没有ready,断点运行就ready!!!

不过为什么全速运行灯不亮,停止仿真灯倒亮了呢??不明白!!!
*******************************************************





 
 


使用特权

评论回复
12
渤海三叠浪|  楼主 | 2009-4-22 21:52 | 只看该作者

我上面的猜想是错误的!!!

大家想想是什么原因啊??为什么全速运行 没有"对勾"啊???

使用特权

评论回复
13
catwill| | 2009-4-24 11:07 | 只看该作者

我也想知道这项是干什么的……

Browse information选项

使用特权

评论回复
14
catwill| | 2009-4-24 11:21 | 只看该作者

楼主说的对勾应该是软件仿真的外设吧

软件仿真的时候比如选GPIO外设,
我自己建立的工程软件仿真时GPIO的对勾不实时显示,
而我打开了一个MDK自带的例子(忘了哪个了)
它的流水灯程序,GPIO的对勾就可以实时显示,像流水灯一样……
而我自己建立的就不行~
只有夭折程序后才刷新显示~

估计楼主是问的这个对勾……

使用特权

评论回复
15
渤海三叠浪|  楼主 | 2009-4-24 15:36 | 只看该作者

回13楼!!!

-------------------------
Browse information选项是查看信息啊!!! 在代码上点击右键 出现 go to definition of“-----------”。选了 browse information 这个功能才能用!!!
选了browse information ,再编译程序,这个功能就百分百发挥正常 

如果不选browse information ,然后编译,然后选browse information ,也可以用go to definition of“-----------”,但是不一定正常!!!

--------------------------------------------------------

对勾无法显示的问题 可能是新库的问题!更有可能是咱俩建立的工程有问题!!!

使用特权

评论回复
16
McuPlayer| | 2009-4-24 17:03 | 只看该作者

“只有夭折程序后”------第一个翻译成“夭折”的也是个天

使用特权

评论回复
17
McuPlayer| | 2009-4-24 17:04 | 只看该作者

如果你用的Simulator

可以修改“Limit Speed to Real-Time”看看效果

使用特权

评论回复
18
渤海三叠浪|  楼主 | 2009-4-24 18:07 | 只看该作者

多谢楼上 提醒!!找到原因了!!!!

终究是相对复杂的芯片或者是CM3推出时间太短,没有经过时间的洗礼,与51芯片相比,仿真软件编写起来可能难度更大!!
MDK仿真根本就做不到实时啊!而51的成熟的keil想实时就实时,不想实时就不实时!

==========================================
以上我所说的几行字 全是废话!!

那么为什么没有对勾呢??

这大概和库V3.0的编译速度变慢 是差不多一个原因!!!

本身编译器的处理能力就不咋地,V3.0库为了某些方面更好,却让别的方面雪上加霜!!!
======================================
用了V3.0之后,全速运行,虽然代码显示了 绿条(表示代码被运行了),但是实际上并没有运行,看看编译器左侧的时间和最下面的时间就知道了,根本就没有变化啊!!!而用V2.0的库 时间就不断变化!!!
===================================
那么用V3.0应该怎么办呢、?
用toolbar啊!!!不断更新时间就好了(看左面那个internel下面的时间,别看最下面t1的时间)!!!而一停止编译左侧时间和下面得时间都更新到最新了!!!
=======================
看来 MDK的编写者们 还得努力啊!!!!

使用特权

评论回复
19
渤海三叠浪|  楼主 | 2009-4-24 20:00 | 只看该作者

附图

我用的是MDK3.24 。

MDK3.50似乎也是一样的问题 并且3.50的字体不能弄成fixdsys的 即便是换了CARMC.ini也不行!!!!  还要换别的 !!!也不知道具体要换哪个!!?


下面的图的仿真 有个LCKK  点击点击和那toolbox效果一样!!???大概 也许.

使用特权

评论回复
20
渤海三叠浪|  楼主 | 2009-4-24 20:03 | 只看该作者

附图怎么

使用特权

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

本版积分规则

62

主题

637

帖子

1

粉丝