没有合适的资源?快使用搜索试试~ 我知道了~
首页程序调试艺术:高手之路
"程序调试黑宝书" 本文是一本关于程序调试的指南,特别针对单片机编程的新手和进阶者。作者强调了高手并非天生,而是通过不断积累经验成长起来的,调试程序最重要的是依靠自己的努力。文章适合那些在论坛求助I2C程序调试、代码逻辑问题或其他编程疑惑的读者,无论他们使用何种单片机型号或编程语言。 尽管文章不针对特定的单片机或编程语言,但它的核心理念是通用的,旨在提升读者在嵌入式技术中的抽象思维能力,类似于哲学指导实践。文章明确声明具有版权,但作者选择不收取费用,允许自由转载,只要保持原文完整并注明来源。然而,作者不对读者因使用文章内容导致的任何损失负责,建议读者应具备独立思考的习惯,谨慎使用文中的示例代码。 在如何编写程序的讨论中,作者指出程序相对于硬件来说更为简单,因为其行为具有更强的确定性。编写程序主要是理解和应用语句、掌握技巧以及做好项目规划,而硬件设计则需要更深入的学科知识和实践经验。作者提醒读者不要过于敬畏“Coder”,鼓励他们自信地面对编程挑战。 文章中提到的调试实例和错误可能是经过加工的,目的是为了教学,而非反映实际产品或技术问题。作者保留了对文中提及的产品和技术不负责任的权利,这再次强调了文章的非商业性质和教育目的。 在后续的内容中,可以预期作者将深入探讨具体的调试方法、技巧和策略,帮助读者提升解决问题的能力,包括但不限于断点设置、日志记录、代码审查、错误处理和性能优化等方面。此外,可能还会涉及如何有效地阅读和理解错误信息、如何使用调试工具以及如何构建健壮的测试框架等内容,以帮助读者逐步成长为能够独立解决复杂编程问题的专家。
资源详情
资源推荐
如果一个程序使用了中断,无论这个中断是用硬件中断(例如外中断 INT,串口接收中
断等)直接操作,还是通过定时器切换的操作系统,都统称为含有中断的程序。这种程序的
特点是:
1) 含有多个并行运行的代码(例如主循环和中断服务程序)
2) 这些并行代码间运行的先后顺序错综复杂,
我们继续用“如何把大象放进冰箱”问题,来描述。
金黄色部分流程线描述了在放大象的过
程中接电话的“中断”。一旦程序加入了中断
的环节,就会变得复杂起来,因为接电话这个
事情可能发生在任何时候——打电话的人不
可能知道你在放大象嘛。
另外,加入了中断环节的程序可能出现
很多意想不到的事情,比如接电话期间,大象
可能跑掉,或者冰箱门被加上了“不允许打开
超过 1 分钟”的限制条件。
对于复杂的中断,还可能存在着“接到
电话,要求把大象红烧吃了”的情况,这样接
完电话以后就没有大象可放了,这就是中断和操作系统中经常遇到的“临界资源”问题。
☞结论:含有中断的程序较为复杂,需要编写者清楚同一时刻,我在做什么,其他人在做
什么,用“并发”的方式思考问题,才能写好。
2.4 程序模块化
首先说明,程序模块化是为了提高编程效率,扩大编程者对程序的掌握能力,便于程序
维护而产生的,对计算机本身而言,程序是没有工整和杂乱的区别的。
程序模块化的基本任务就是将复杂的设计任务划分为若干个功能明确,出入口简单的功
能块。
☞结论:程序模块化是为了编写而不是为了运行,模块化和函数是两个不同的概念,函数
是为了将需要多次使用的代码统一编写,以便减少程序代码量,便于维护;模块化是指将复
杂的程序功能化整为零而成的功能块,一个模块可能由多个函数组成,也可能就是一个函数,
还有可能只是一段紧密相连的代码块。
我们继续用大象的例子来示范,这里的 3 个动作都可以看成模块。假设我们由一个机器
人来做这件事,机器人不能理解“打开冰箱门”、“把大象放进去”、“关上冰箱门”这 3 个步
骤,那么就要用更基础的语言来为机器人编程。
【模块——打开冰箱门】
1. 抬起右手,移动到 冰箱门把中心右侧 1cm 处
2. 弯曲右手手指,勾住冰箱门
打开冰箱门
把大象放进去
关上冰箱门
图【 2】
接电话
剩余14页未读,继续阅读
sugar7171519
- 粉丝: 0
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 最优条件下三次B样条小波边缘检测算子研究
- 深入解析:wav文件格式结构
- JIRA系统配置指南:代理与SSL设置
- 入门必备:电阻电容识别全解析
- U盘制作启动盘:详细教程解决无光驱装系统难题
- Eclipse快捷键大全:提升开发效率的必备秘籍
- C++ Primer Plus中文版:深入学习C++编程必备
- Eclipse常用快捷键汇总与操作指南
- JavaScript作用域解析与面向对象基础
- 软通动力Java笔试题解析
- 自定义标签配置与使用指南
- Android Intent深度解析:组件通信与广播机制
- 增强MyEclipse代码提示功能设置教程
- x86下VMware环境中Openwrt编译与LuCI集成指南
- S3C2440A嵌入式终端电源管理系统设计探讨
- Intel DTCP-IP技术在数字家庭中的内容保护
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功