//=====================================================================
//TITLE:
// 香草冰淇淋和代码调试
//AUTHOR:
// norains
//DATE:
// Friday 01-July-2011
//Environment:
// Keil MDK 4.2
// STM32F207
//=====================================================================
不知道大家有没有听过通用的汽车不能吃香草冰淇淋的故事?
有一天,美国通用汽车公司的庞帝雅克部门收到一位客户的抱怨信:"这是我为了同一件事第二次写信给你,这的确是一个事实。"
原来,这位用户家里有一个习惯:每天饭后由全家投票决定吃哪一种口味的冰淇淋。自从新近买了一部庞帝雅克轿车后,只要他每次买的冰淇淋是香草口味,他从店里出来时车子就发不动。但如果买的是其他口味,车子发动就很顺利。
太奇怪了!这可能吗?公司总经理对这封信心存怀疑,但还是派了一位工程师去查看究竟。工程师发现这位车主不像是乱开玩笑的人。当他同车主用完晚餐去买冰淇淋回到车上后,车子果然发不动。试了几次,每次都是这样。而买别的口味的冰淇淋就没有问题。
工程师当然不相信这辆"奇怪"的车子对香草气味过敏。他又开始记录车主的其他资料,发现这位车主买香草冰淇淋所花的时间比买其他口味的要少些。
他又发现,因为香草冰淇淋最畅销,店家为了让顾客每次都能很快拿到,将香草口味特别单独陈列在店面最前端的冰柜里,而将其他口味的冰淇淋放置在离收银台较远的地方。
随着工程师把问题缩小到"为什么这部车从熄火到发动的时间较短就会出问题"时,一个答案浮出水面:是因为"蒸气锁",一定是它!当这位车主买其他口味冰淇淋时,由于时间较长,引擎有足够的时间散热,重新发动时就没有太大的问题。但是买香草冰淇淋时,由于花的时间较短,引擎太热,以至于还无法让"蒸气锁"有足够的散热时间。
而今天在调试STM32F207代码的时候,也发生了类似的事情。其过程如下,将代码编译好,通过MDK的Ctrl+F5进行Debug调试,并且在程序跑起来之后通过命令行的PING就能检测到STM32F207的核心版;如果是将程序下载到核心版的存储器中,重新上电,PING就无法检测到设备。
是不是有点匪夷所思?是不是说这程序只能用Debug的方式启动,而不能直接让CPU执行?其实这问题和通用汽车无法吃香草冰淇淋是一致的。当我们采用Debug方式启动时,为了能够进行代码调试,其实调试器会做一些工作,简单点来说,就是CPU不会以自己最快的速度执行代码;一旦不使用Debug方式,那么CPU就如脱缰野马一般,快速狂奔。所以对于这个问题,我们应该可以想到,很可能是因为CPU快速运转,而导致硬件可能还没有正常初始化就跑到下一步去了。
而事实正是如此,出问题的是这个函数:
代码中的Delay(50)是后来加的,如果在这里不增加延迟的话,就会出现之前所说的问题。其实这道理很简单,当我们执行ADC_Configuration()函数之后,虽然代码已经设置了相应的寄存器,但寄存器表现到相应的引脚还需要一定的时间。假如是以Debug方式,那么到Ethernet_Configuration()函数之前会有一段比较大的延迟时间,而这延迟时间留待硬件初始化是足够了;但如果是不以Debug方式,那么CPU会全速运行,很可能在执行Ethernet_Configuration()函数时硬件还没有真正初始化,从而导致一系列的问题。
通用汽车不能吃香草冰淇淋是一个很有趣的故事,而其中蕴含的道理却又是我们日常开发所经常碰到的。有时候一个问题,并不是因为表面上的原因,而是有更深层次的缘由。
参考文献:《香草冰淇淋的故事》http://www.gmw.cn/content/2004-08/19/content_80057.htm
分享到:
相关推荐
香草世界CSS网页模板是一款适合花草树木种植企业的网站模板。
为了能与官方主分支同步更新,该版本不会对核心代码做任何修改。所有特性都由主题、插件、配置、hooks等外挂形式实现。 该版本是基于vanillaforums/Garden的master版本(2.1)开发的,不是release版本,有众多新特性...
运用HACCP基本原理对陕西省咸阳市某乳品公司香草冰淇淋生产中潜在的危害因素进行了分析,确定了其关键控制点:奶粉的收购、稀奶油的收购、原料的贮存、原料的混合、巴氏消毒、冷却、香草香精的添加、老化、凝冻、...
PHPWind论坛 香草後园
jboss、weblogic等反序列化漏洞图形化工具。 jboss、weblogic等反序列化漏洞图形化工具。
Discuz! 淡淡香草味
马达加斯加的香草产业在过去十年中经历了强劲的增长,这为经济和创造就业做出了贡献,特别是在种植香草的东北地区。 但是,在2009年政治不稳定之后,这种增长面临着严重的问题。本文显示,由于政治不稳定,暂停执行...
幼儿园教案《香草咪咪》含反思(通用).doc
它适用于开源插件由香草论坛团队创建和维护。 它们连同社区贡献都可以在我们的正式下载。 各个插件应具有自己的许可证和自述文件。 请通过在问题标题前添加插件名称来开始发布问题。 正在安装 要安装插件,您所要...
香草网站
瞬时感受器电位香草酸受体1通道,阙克华,邹福,目的探讨研究瞬时感受器电位香草酸受体1(transient receptor potential vanilloid 1, TRPV1)通道蛋白在人牙髓成纤维细胞(human dental pulp fibroblast,
Vanilla(vanillaforums)是一套便于定制、扩展的PHP开源轻型论坛程序。国内已有Vanilla中文社区、vanillaforums中文站 http://vanillaforums.cn 。 英文版的论坛界面: 中文版论坛界面: ...
香草项目
香草猪商业计划书
神经病 一个调整和削弱香草 MC 的模组,它在模组包和独立的香草插件中都能很好地工作。
盆栽植物,中继器,比较器和南瓜/甜瓜茎被遮蔽起来,即使它们不应该被遮盖(可能不会在香草中固定) 盾牌处于掉落物品形态时偏离中心 甜瓜/南瓜茎纹理平面被镜像,这与其他交叉模型不同 完全可可荚顶部/底部纹理的...
香草猪商业计划书范文
香草HTML和CSS 活动页面: 家接触
香草js
MapAtlasesForge 使用香草地图的香草友好Minimap mod!