单片机的误区

合集下载

吴坚鸿风格的C51程序-1

吴坚鸿风格的C51程序-1

第一节:吴坚鸿谈初学单片机的误区。

(1)很难记住繁杂的寄存器?寄存器不用死记硬背,鸿哥我行走江湖多年,连一个寄存器都记不住。

需要配置寄存器的时候,直接在网上或者书本上参考别人现成的配置程序是上策,查找芯片数据手册是中策,死记硬背寄存器是最最下策。

(2)很难记住繁杂的汇编语言指令?除非是在校学生要应付考试或者少数工作中绕不开汇编,否则学汇编就是浪费时间。

鸿哥我行走江湖多年,从来就没有用汇编帮客户做过一个项目。

(3)C语言很难学?你不用学指针,你不用学数组,你不用学带形参和实参的函数,你不用学结构体,你不用学宏定义,你不用学文件操作,你也不用死记繁琐的数据类型。

你只要会:5条指令语句switch语句,if else语句,while语句,for语句,=赋值语句。

4个运算符+-*/。

3个数据类型unsigned char, unsigned int, unsigned long。

3个进制相互转化,二进制,十六进制,十进制。

1个void函数。

那么世界上任何一种逻辑功能的单片机软件你都能做出来。

鸿哥我当年刚毕业出来工作的时候才知道可以用C语言开发单片机,一开始只用if语句就把项目做出来了,没有用指针,没有用数组,没有用带形参和实参的函数等复杂的功能。

再到后来才慢慢开始用C语言其他的高级功能,但是我发现C语言其他的高级功能,本质上都是用我前面列举出来的最基本功能集合而成,只是书写更加简单方便了一点,编译后的机器码都大同小异。

所以不会指针不会数组等高级功能你不用自卑,恰恰相反,当你会最简单的几个语句,就把这些高级功能的程序都做出来了,你才发现你对底层了解得更加透切,再学那些高级功能轻而易举。

当你裸机跑的程序都能够协调得很好的时候,你才发现所谓高深的操作系统也不过如此,只要给你时间和金钱你也可以写个操作系统来玩玩。

(4)很难记住精确时间的计算公式?经常看到时间公式等于晶振,时钟周期,执行指令次数他们之间的乘除关系式。

单片机使用中的错误排查与修复技巧

单片机使用中的错误排查与修复技巧

单片机使用中的错误排查与修复技巧单片机(Microcontroller)是一种集成了中央处理器、存储器和输入输出设备的微型计算机系统,常用于嵌入式系统中。

在单片机的使用过程中,由于硬件或软件问题,可能会出现各种错误。

这篇文章将介绍一些常见的错误,以及排查和修复这些错误的技巧。

一、硬件错误排查与修复技巧1. 电源问题:当单片机无法正常工作时,首先应检查电源问题。

可能的原因包括电源电压不稳定、电源连接错误或损坏的电源线。

排查方法:- 使用万用表测量电源电压,确保其在指定范围内。

- 检查电源连接是否正确,确认是否存在接触不良或松动的接线。

- 更换损坏的电源线。

修复方法:- 确保使用稳定可靠的电源。

- 确认电源线连接正确、可靠。

- 使用去噪电容或稳压电源解决电压波动问题。

2. 时钟问题:时钟信号是单片机正常工作的重要参考信号。

若时钟信号不正确或不稳定,单片机可能无法正常工作。

排查方法:- 检查时钟源选择是否正确。

- 使用示波器测量时钟信号,确认其频率和占空比是否满足要求。

- 检查时钟电路的连接是否存在接触不良或损坏。

修复方法:- 确认时钟源选择正确。

- 检查时钟电路的连接,确保其可靠性。

- 使用时钟缓冲器或外部晶振解决时钟不稳定问题。

3. 引脚问题:在单片机的使用过程中,常常会出现引脚连接错误或引脚损坏的问题。

这可能导致严重的功能故障或者不可预测的工作情况。

排查方法:- 检查引脚连接是否正确,确认是否存在接触不良或者误连的情况。

- 使用万用表或示波器测量引脚的电平,确认其是否符合预期。

- 在其他引脚上测试相同功能,以确定引脚是否损坏。

修复方法:- 修正引脚连接错误,确保连接可靠。

- 更换损坏的引脚。

- 使用外部元件(如继电器)重新分配引脚功能。

二、软件错误排查与修复技巧1. 编译错误:编译错误是开发单片机软件时常遇到的问题,通常是由于语法错误、头文件引用错误等引起的。

排查方法:- 仔细阅读编译错误信息,确定具体的错误原因。

单片机常见错误排查

单片机常见错误排查

单片机常见错误排查单片机是一种常用于嵌入式系统的微型计算机芯片,广泛应用于各种电子设备中。

然而,在单片机的开发和应用过程中,常常会遇到一些错误和问题。

本文将介绍一些常见的单片机错误,并提供排查方法,帮助大家解决问题。

一、连接错误1. 供电问题:单片机需要稳定可靠的电源供应。

如果单片机无法启动或运行不稳定,可能是供电问题导致的。

首先检查电源连接是否正确,电压是否稳定,并且确保电源满足单片机的要求。

2. 时钟问题:单片机需要外部时钟或晶振来提供时钟信号。

如果单片机没有时钟信号,可能导致无法正常工作。

检查时钟电路连接是否正确,晶振是否工作正常。

3. 引脚连接问题:单片机的引脚连接错误可能导致通信失败或功能异常。

检查引脚连接是否正确,特别注意输入输出引脚的连接。

二、程序问题1. 代码错误:单片机的程序是由开发者编写的,可能存在语法错误、逻辑错误或者算法错误。

当单片机不能按照预期运行时,检查代码是否有错误,并使用调试工具进行查找和修复。

2. 资源冲突:单片机常常需要同时使用多种资源,如定时器、串口、中断等。

如果多个资源同时使用会导致冲突,可能导致单片机无法正常运行。

检查资源的使用是否冲突,可以采用优先级调度或者合理分配资源的方法来解决冲突问题。

3. 数据存储问题:单片机的内部存储器用于存储程序代码和数据,如果存储器出现故障或者超出容量,可能导致程序无法正常执行。

检查存储器的容量是否足够,并且尽量采用合理的数据类型和存储结构来优化代码。

三、硬件问题1. 外设故障:单片机常常需要与各种外设进行通信,如传感器、LCD屏幕、键盘等。

如果外设出现故障或者连接错误,可能导致单片机无法获取正确的数据或者执行正确的操作。

检查外设的连接是否正确,并且确保外设的工作状态正常。

2. 电路设计错误:单片机所在的电路板设计可能存在问题,如布线错误、元件损坏等。

检查电路板设计是否符合规范,并且检查电路板上的元件是否正常工作。

3. 热量问题:单片机在工作过程中会产生热量,如果散热不良可能导致单片机温度过高,从而影响其正常运行。

单片机常见错误例程分析

单片机常见错误例程分析

单片机常见错误例程分析单片机是一种集成电路,对于初学者来说,由于经验不足,常会遇到一些错误。

下面我们来分析一些单片机常见的错误例程,以及解决方法。

一、看门狗定时溢出引起的复位单片机中通常都有看门狗(Watchdog)定时器,用于监控系统运行。

如果在程序中没有及时喂狗,导致看门狗定时器溢出,会引起复位。

解决方法:1.在主程序中设定喂狗的指令,以避免看门狗定时溢出。

2.在适当的位置设置看门狗使能的指令,保证看门狗定时器能正常工作。

3.尽量避免在中断服务程序中关闭看门狗定时器,以免因为中断响应过慢导致看门狗复位。

二、中断服务程序执行时间过长当中断服务程序执行时间过长时,会导致主程序无法继续正常运行。

这种情况下,单片机很可能无法响应其他外部事件。

解决方法:1.在中断服务程序中尽量减少对资源的占用,避免复杂的运算和长时间的延时操作。

2.将必要的数据交给主程序处理,减少中断服务程序的工作量。

3.合理设置中断优先级,确保重要的中断能及时响应。

三、电源噪声导致系统不稳定单片机对电源的稳定性要求较高,如果电源存在噪声,则可能导致系统不稳定,甚至崩溃。

解决方法:1.在供电线路上添加合适的滤波电容,以减小电源噪声。

2.使用稳压电源,保证电源输出的稳定性。

3.合理布线,避免电源和信号线的干扰。

四、编程错误编程错误是单片机常见的错误之一、例如,写入错误的寄存器地址、错误的命令、错误的数据等。

解决方法:1.熟悉单片机的手册,了解相关寄存器、命令和数据的使用方法。

2.仔细检查编程代码,避免拼写错误和语法错误。

3.使用调试工具,例如仿真器、逻辑分析仪等,进行实时调试。

五、外围设备连接错误单片机通常需要与外围设备进行通信,如果连接错误,可能导致通信失败或者数据传输错误。

解决方法:1.确保电路连接正确,检查信号线、电源线等的连接是否松动、接触不良。

2.根据外围设备的手册,仔细查阅相关接口的使用说明书,确保连接方式正确。

3.使用示波器、逻辑分析仪等工具,对通信信号进行监测和分析,找出错误原因。

单片机系统设计易出现的误区

单片机系统设计易出现的误区
Aug . 2 01 3
单 片机系统 设计 易 出现 的误 区
鲁志刚
( 遵义师范学院 设备处 ,贵州 遵义 5 6 3 0 0 0 ) 摘 要 :随着单 片机应用的越来越 广泛,单 片机 系统设计也越来越受到人们 的重视 ,通过调 查发现 ,在 实际的 系统设计
中, 设计人员都喜 欢借鉴 以往 经验来减 少设计过程 中的工作量 , 同时也 能够加快设计的时 间, 但是 由于单 片机这样的 电子产
考虑 ,由于单片机只是一个超级成 电路 , 虽然可 以通过 写入特 定的程序 , 来达 到控制 电路 的功能 , 但是在实 际的生产过程 中,
单片机 系统设计的主要工作是通过单片机 的接 口, 连接一些外部 电路 , 从而实现对外部 电路的控制功能 , 随着单片机 自 身 的 发展 , 现在 市场上有很多单片机型号 , 不 同的型号针对 的应 用领 域也不同 , 相应 的端 口 也会有较大 的变化 , 但是通过调查发
业,技 术更新换代 的速度非常快 ,一些设 经验很快 就会 出现 过时的现 象,从 而导致设 计人 员进入 一个误 区。本文根据单 片机
系统设计 的内容和常见 问题 ,针对性的分析 了设 计中容易 出现 的误 区。
关键词 :电子;单 片机; 系统设计;误 区
中图分类号 :T P 3 6 8 . 1 文献标识码:A 文章编号:1 6 7 3 — 2 2 1 9( 2 0 1 3 )0 8 — 0 0 8 6 — 0 2
机这种 电子领域 ,与西方一 些发达 国家存在较大差距 ,因此在查找资料的过程 中,可 以借鉴一些 国外 的先进技术 ,对发达 国
家 同类型的系统设计进行分析 , 这个分析应该包括硬件 和软件 两个方面 , 通过这样的分析可 以发现 ,国外的系统设计水平要 比国内先进很多 ,无论 是开 发工具 的选择还是系统设备 的先进性上 , 整体 的系统开发环境要提 高一 个档 次,受到很多西方发 达 国家对我 国科技发展的限制 ,很多先进 的芯片 国内无法使用 ,因此在系统设计的过程 中,硬件设备 的落后很难进行改善 ,

学习单片机我们应该避免走哪些弯路?

学习单片机我们应该避免走哪些弯路?

学习单片机我们应该避免走哪些弯路?单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。

从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。

简介单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。

概括的讲:一块芯片就成了一台计算机。

它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。

同时,学习使用单片机是了解计算机原理与结构的最佳选择。

单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。

各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。

应用分类单片机(Microcontrollers)作为计算机发展的一个重要分支领域,根据发展情况,从不同角度,单片机大致可以分为通用型/专用型、总线型/非总线型及工控型/家电型。

通用型这是按单片机(Microcontrollers)适用范围来区分的。

例如,80C51式通用型单片机,它不是为某种专门用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。

总线型单片机单片机。

单片机学习中的常见问题和误区

单片机学习中的常见问题和误区
3. 结束语 在单片机的学习中往往会由于对一些概念理解不清楚,或由于 缺乏实践经验,学习者会产生种种疑问和困惑,甚至形成了一些错 误 的 认 识 。 这 些 问 题 主 要 集 中 在 单 片 机 内 的 存 储 器 、片 内 外 数 据 传 送、中断优先级和相对寻址方式等方 面 ,本 文 对 这 些 问 题 进 行 归 纳 总结,使学习者对单片机的一些问题有了全面的认识。通过对容易 模糊不清的概念和知识进行辨别、解 析 ,使 学 习 者 澄 清 以 往 错 误 的 认识,更好地学习和掌握单片机知识。
2007.5 ( 上旬刊)
理工科研
单片机学习中的常见问题和误区
□任斌
( 东莞理工学院电子工程系 广东·东莞 523808)
摘 要 从单片机内的存储器、数据传送和中断优先级等几个方面归纳了单片机学习中常遇到的问 题 ,并 对 存 在 的 一 些
误区给予了分析和纠正。
关键词 单片机 学习 问题 误区
中图分类号:N 3
这 样 的 :“ 一 个 正 在 执 行 的 低 优 先 级 中 断 服 务 程 序 可 以 被 高 优 先 级
的 中 断 源 所 中 断 ”。那 么 这 句 话 里 面 是 否 包 括 一 个 正 在 执 行 的 同 级 的低优先级中断服务程序也可以被同级的高优先级的中断源所中 断呢?
经过测试才知道,中断的原则应该是:一个正在执行的低优先 级中断服务程序可以被高优先级的中断源所中断,而同级的( 不论 是在同组中的自然优先级有多高) 或低优先级的中断源不能中断 正在执行的同级( 不论是在同组中的自然优先级有多低) 或高级的 中断服务程序,同组中只有在几个中断源同时向 CPU 申请中断时, CPU 才根据自然优先级的高低先后响应中断。
照右边的机器语言可以发现, 正好符合 :PC 目 的 地 址 =PC 当 前 值 +rel=0038+( - 8) =0030H ,其中 F8 为 "- 8" 的补码形式。

单片机常见错误例程分析

单片机常见错误例程分析

单片机常见错误例程分析在单片机编程过程中,程序员常常会遇到各种错误情况,这些错误可能会导致单片机无法正常工作,或者功能无法实现。

以下是一些常见错误例程的分析及解决办法:1.逻辑错误逻辑错误是程序中常见的错误类型,它们通常是由于程序员在编写代码时逻辑思维上的错误导致的。

例如,当程序出现逻辑错误时,可能会导致程序无法按照预期的方式执行。

解决逻辑错误的关键是仔细检查代码,查找问题所在,并对错误逻辑进行修正。

2.语法错误语法错误是指在编写代码时违反了编程语言的语法规则。

这种错误通常会导致编译失败,编译器会提示相关的错误信息。

解决语法错误的方法是仔细检查代码,查找错误的语法并进行修正。

使用集成开发环境(IDE)可以更容易地发现语法错误,因为IDE通常会提供语法高亮和错误提示功能。

3.数组越界错误数组越界错误发生在访问数组元素时超出数组的索引范围。

这种错误可能会导致程序崩溃或产生未知的结果。

解决数组越界错误的方法是仔细检查代码,确保在访问数组元素时索引的范围在合法的范围内。

4.执行顺序错误执行顺序错误是指程序中的语句不按照预期的执行顺序执行。

这可能会导致程序的功能无法正常实现。

解决执行顺序错误的方法是仔细检查代码,确保语句的执行顺序符合预期。

此外,使用调试器可以帮助程序员跟踪代码的执行过程,以便发现执行顺序错误。

5.死循环错误死循环错误是指程序中的循环结构无法终止,导致程序无法继续执行后续的代码。

这可能会导致单片机无响应或无法进行其他操作。

解决死循环错误的方法是仔细检查循环条件是否正确,并在必要时添加循环终止条件。

6.硬件连接错误硬件连接错误是指单片机与外部设备之间的连接错误,例如接线错误或电源供应错误。

这可能会导致单片机无法正常工作。

解决硬件连接错误的方法是仔细检查硬件连接,确保电源供应正常,并确保所有连接线正确连接。

总结在单片机编程过程中,常见的错误类型包括逻辑错误、语法错误、数组越界错误、执行顺序错误、死循环错误和硬件连接错误。

单片机开发中常见的错误与解决方案

单片机开发中常见的错误与解决方案

单片机开发中常见的错误与解决方案在单片机开发过程中,由于各种原因可能发生各种错误和问题。

本文将介绍一些常见的错误,并提供相应的解决方案,以帮助开发者顺利进行单片机开发。

一、编译错误与解决方案编译错误是在编写代码时常遇到的问题。

它们通常指出了源代码中的错误,可以通过观察和排查代码来解决。

(1)语法错误:语法错误是最常见的编译错误之一。

常见的语法错误包括括号不匹配、忘记分号等。

解决方案是仔细检查代码,确保语法正确。

(2)类型错误:类型错误指的是变量或函数的类型不匹配。

例如,将一个整数赋给一个字符型变量。

解决方案是检查代码中的类型定义,并确保变量和函数的类型匹配。

(3)链接错误:链接错误是指在最终生成可执行文件时出现的问题。

常见的链接错误包括找不到库文件、重复定义等。

解决方案是检查库文件路径是否正确,并确保函数和变量只被定义一次。

二、硬件问题与解决方案单片机开发中,硬件问题是不可避免的。

当出现硬件问题时,开发者需要仔细检查电路连接、电源供应等方面,以解决问题。

(1)电路连接错误:电路连接错误通常是由于接线错误或电路板设计问题引起的。

开发者应该仔细检查电路连接,确保连接正确并无短路或断路现象。

(2)电源问题:电源问题可能导致单片机不能正常工作或产生不稳定的现象。

开发者应该检查电源供应是否稳定,并合理设计供电电路。

(3)时钟设置错误:单片机的时钟设置影响其运行速度和精度。

开发者应该仔细设置单片机的时钟参数,并确保其与外部时钟源一致。

三、软件问题与解决方案在单片机开发中,软件问题是常见的。

这些问题可能涉及底层驱动程序、中断处理、算法等方面。

(1)驱动程序错误:驱动程序错误可能导致外设无法正常工作或产生异常数据。

开发者应该仔细编写和调试驱动程序,并确保其与硬件相匹配。

(2)中断处理错误:中断是单片机常用的一种机制,但不正确的中断处理可能导致系统崩溃或响应不及时。

开发者应该仔细设计和调试中断服务程序,并确保处理逻辑正确。

单片机技术使用注意事项及常见错误解析

单片机技术使用注意事项及常见错误解析

单片机技术使用注意事项及常见错误解析引言:单片机技术是现代电子领域中非常重要的一部分,它具有体积小、功耗低、成本低等优势,被广泛应用于各个领域。

然而,由于单片机技术的复杂性和特殊性,使用时需要注意一些事项,避免常见错误的发生。

本文将介绍一些单片机技术使用的注意事项,并对常见错误进行解析,以帮助读者更好地应用单片机技术。

一、电源设计注意事项在单片机技术应用中,电源设计是至关重要的。

以下是一些电源设计的注意事项:1. 稳定性:单片机对电源稳定性要求较高,因此在设计中应选择稳定性好的电源模块或电源芯片,并加入适当的滤波电路,以保证电源的稳定性。

2. 电源噪声:单片机对电源噪声敏感,因此应采取措施降低电源噪声,如使用低噪声稳压器、增加滤波电容等。

3. 电源电流:单片机的工作电流通常较小,因此在设计中应根据实际需求选择适当的电源电流,以避免电源过大或过小导致的问题。

二、引脚配置注意事项单片机的引脚配置是使用过程中需要特别关注的问题。

以下是一些引脚配置的注意事项:1. 引脚功能:在使用单片机时,应明确每个引脚的功能,并根据实际需求进行正确的配置。

不正确的引脚配置可能导致功能异常或无法正常工作。

2. 引脚电平:单片机的引脚电平是控制和输入输出的重要依据,因此在设计中应注意引脚电平的设置,以确保正确的信号传输和处理。

3. 引脚连接:单片机的引脚连接应牢固可靠,避免接触不良或松动导致的信号干扰或丢失。

三、时钟源选择注意事项时钟源对单片机的工作稳定性和准确性具有重要影响,以下是一些时钟源选择的注意事项:1. 稳定性:选择稳定性好的时钟源,以保证单片机的工作稳定性。

应注意时钟源的温度稳定性、频率稳定性等参数。

2. 准确性:选择准确性高的时钟源,以确保单片机的工作精度。

应注意时钟源的精度、分辨率等参数。

3. 电源噪声:时钟源的电源噪声也会对单片机的工作产生影响,因此应选择低噪声的时钟源,或采取降低噪声的措施。

四、常见错误解析在单片机技术应用中,常见错误的解析和排除是非常重要的。

单片机指令编程的常见错误与解决方法

单片机指令编程的常见错误与解决方法

单片机指令编程的常见错误与解决方法在单片机指令编程过程中,往往会遇到各种问题和错误。

这些问题可能导致程序无法正常运行或者出现意料之外的结果。

本文将介绍一些常见的错误,以及相应的解决方法,帮助程序员更好地进行单片机指令编程。

一、编码错误编码错误是指在编写指令时出现的错误,包括语法错误和逻辑错误。

语法错误是最基本的错误,常见的有拼写错误、缺少分号等。

逻辑错误则是指程序的逻辑不正确,导致程序无法按照预期的方式执行。

解决方法:1. 仔细检查代码,查找并修复语法错误。

2. 使用调试工具,逐步执行代码,观察程序的执行过程,找出逻辑错误的根源。

3. 采用模块化编程方法,将程序划分为多个相对独立的模块,降低程序的复杂性,便于调试和维护。

二、寄存器配置错误单片机中的寄存器是非常重要的,它们用来存储程序的运行状态和数据。

配置寄存器时,如果设置不正确,可能导致程序无法正常运行。

解决方法:1. 仔细查阅单片机的手册或者数据手册,确保对寄存器的配置有充分的了解。

2. 逐个检查寄存器的配置,确保每个寄存器的值都正确设置。

3. 使用调试工具,观察寄存器的状态,排除配置错误的可能性。

三、时钟设置错误单片机的时钟是程序运行的基础,对于某些需要实时操作的程序尤为重要。

时钟设置错误可能导致程序时序不正确,无法正常执行。

解决方法:1. 确保时钟源的选择正确,并选择合适的分频系数。

2. 配置好时钟控制寄存器,确保时钟的频率满足程序运行的要求。

3. 使用专业的时钟分析工具,对时钟信号进行分析和调试,确保时钟信号的准确性和稳定性。

四、中断处理错误中断是单片机的重要功能,可以实现对外部事件的响应。

如果中断处理错误,可能导致程序的执行流程混乱,无法正常处理中断事件。

解决方法:1. 确保中断向量表的设置正确,每个中断向量都与对应的中断服务程序相对应。

2. 配置中断控制器,使能或禁止某些中断,确保中断的优先级设置正确。

3. 定期检查中断服务程序的正确性,确保程序在中断发生时能够正确响应。

单片机 高频脉冲计数缺陷

单片机 高频脉冲计数缺陷

单片机高频脉冲计数缺陷单片机是一种集成电路,可以实现多种功能。

在许多应用领域中,高频脉冲计数是单片机常见的任务之一。

然而,高频脉冲计数的过程中存在一些缺陷,这些缺陷可能会影响计数的准确性和稳定性。

高频脉冲计数的缺陷之一是计数误差。

在高频脉冲计数过程中,由于单片机的计数精度有限,可能会导致计数误差的出现。

这种误差可能是由于单片机内部时钟的不稳定性或计数算法的不精确性所引起的。

这种计数误差可能会导致最终计数结果与实际值存在较大的差异。

高频脉冲计数还存在计数溢出的问题。

当脉冲频率非常高时,单片机内部的计数器可能无法承载如此大的计数值,导致计数器溢出。

计数器溢出意味着计数值将从最大值重新开始计数,这会导致计数结果的错误。

为了解决这个问题,我们可以使用更高精度的计数器或者采取适当的溢出处理方法。

高频脉冲计数还可能受到外部干扰的影响。

由于高频脉冲信号往往具有较高的频率和较短的脉冲宽度,容易受到周围环境中的电磁干扰的影响。

这种干扰可能会导致计数器计数错误或计数结果的抖动。

为了解决这个问题,可以采取屏蔽措施,如合理布局电路、增加滤波电路等,以减小外部干扰对高频脉冲计数的影响。

高频脉冲计数还可能受到单片机性能限制的影响。

单片机的处理能力和计数速度是有限的,当高频脉冲信号超出单片机处理范围时,就无法正常进行计数。

在这种情况下,我们可以考虑使用更高性能的单片机或者分频技术来降低脉冲频率,以使其在单片机能够处理的范围内。

单片机高频脉冲计数存在一些缺陷,包括计数误差、计数溢出、外部干扰和单片机性能限制等。

为了解决这些问题,我们可以采取一系列措施,如提高计数精度、处理溢出、采取屏蔽措施和使用更高性能的单片机等。

通过不断改进和优化,可以提高高频脉冲计数的准确性和稳定性,以满足不同应用领域的需求。

谈谈学习单片机的几个误区

谈谈学习单片机的几个误区

谈谈学习单片机的几个误区1、学汇编,必须先记熟单片机的指令:大多数学单片机的人都认为学汇编就要先记熟单片机的指令。

其实不然,本人从事单片机编程已经多年,掌握了几种单片机的编程技巧,但至今并没有熟记任何一款单片机的指令。

不是我太懒,也不是我的记性太差,而是根本没有这个必要。

单片机的指令少则几十条,多则一百多条,其实常用的就十来条。

这些指令,我们只要看一遍,了解它们的用法就可以了。

对于常用的十来条指令我们第一次用的时候可能要查一下指令集,以后就完全是复制、粘贴的事情了。

对于其它不常用的指令,我们完全没有必要花太多时间来熟记它们。

当然,如果你的脑袋好,看一遍就全记熟了,那也是好事,否则的话就不要太过勉强自己了啊!2、所有单片机资料都要看一遍或多遍甚至记熟:很多单片机的学员往往会认为应该将买回来的单片机书籍或培训班发给他们的资料全都看一遍,其实这是一个不科学的学习方法。

对于一个真心想学会单片机编程技术的人来说,手上有N 套单片机书籍或学习资料是最正常不过的了。

如果我们要把这些书籍和资料全都看一遍的话,你想要花多长时间啊?恐怕一本书还未看完,前面看的内容就忘的一干二净了吧!可能有人会问,你买书买资料回来连看都不看买来干嘛啊?在这我要郑重的告诉你:技术书籍、资料是买来查的,不是买来阅读和背诵的!3、能做几个功能单一的小程序,就算学会了单片机编程:很多自学单片机的人经过自己一段时间的努力后,往往就能登堂入室了,一个个功能单一的小程序做得有模有样。

什么流水灯、按键检测、蜂鸣器控制、定时控制、数码管显示、红外遥控、、、、、、都能一一做出来。

这时侯我们可能就会误认为自己学会了单片机。

其实不然,学习单片机有两道门槛,一是进门,。

单片机使用中的常见问题及解决方法

单片机使用中的常见问题及解决方法

单片机使用中的常见问题及解决方法单片机作为一种重要的嵌入式系统开发工具,广泛应用于各行各业。

然而,在使用单片机的过程中,常常会遇到一些问题,例如程序错误、硬件连接问题等。

本文将探讨单片机使用中的常见问题,并提供解决方法。

一、程序错误1.1 无法下载程序在使用单片机进行程序下载时,有时会遇到无法下载的情况。

这可能是由于单片机与计算机之间的连接问题导致的。

首先,检查单片机与计算机之间的连接线是否插好,并确保连接线的质量良好。

其次,检查单片机的电源是否正常,确保单片机处于可编程状态。

最后,检查下载软件的设置是否正确,例如波特率、连接方式等。

1.2 程序运行异常在单片机程序运行过程中,有时会出现异常情况,例如死循环、程序卡死等。

这可能是由于程序逻辑错误导致的。

首先,仔细检查程序代码,查找可能的逻辑错误。

其次,使用调试工具对程序进行逐步调试,找出问题所在。

最后,根据具体情况进行修复,例如修改代码逻辑、添加异常处理等。

二、硬件连接问题2.1 电路连接错误在使用单片机时,正确的电路连接是非常重要的。

如果电路连接错误,可能导致单片机无法正常工作。

首先,检查电路连接是否符合设计要求,包括电源连接、信号线连接等。

其次,检查电路中的元件是否正确安装,例如电容、电阻等。

最后,使用万用表等工具对电路进行检测,确保电路连接正确。

2.2 传感器故障在使用单片机进行传感器数据采集时,有时会遇到传感器故障的情况。

这可能是由于传感器本身故障或者传感器与单片机之间的连接问题导致的。

首先,检查传感器与单片机之间的连接是否良好,确保信号传输正常。

其次,检查传感器的供电是否正常,确保传感器能够正常工作。

最后,如果传感器仍然无法正常工作,可能需要更换传感器或者修复传感器。

三、性能优化问题3.1 程序运行速度慢在使用单片机进行程序开发时,有时会遇到程序运行速度慢的情况。

这可能是由于程序算法复杂度较高导致的。

首先,检查程序中是否存在冗余的计算或者重复的操作,尽量简化程序逻辑。

浅谈单片机系统设计的误区与对策

浅谈单片机系统设计的误区与对策

浅谈单片机系统设计的误区与对策摘要:随着单片机技术的不断发展,越来越多的工程师和设计师开始采用单片机进行系统设计,但在实践中发现,很多人因为缺乏经验或者对单片机系统设计的认识不够深刻而犯下一些常见的误区。

本文将针对这些误区进行分析,并提出相应的对策,以期为单片机系统设计提供一些有价值的参考。

关键词:单片机;系统设计;误区;对策正文:一、误区一:忽略系统总体设计单片机系统设计并不仅仅是选取合适的单片机芯片和周边部件,还需要从整个系统的角度出发进行总体设计,包括功能需求、硬件结构、软件设计等方面。

很多初学者容易忽略这个问题,直接进行芯片选型和硬件的连接,导致后期的软件设计或者系统功能不能满足实际需求。

对策一:在进行单片机系统设计之前,应该对整个系统进行充分的分析和规划,包括系统的功能需求、硬件结构、传感器与执行器的选型、软件设计等方面。

尤其是需要注意硬件结构与软件设计的耦合性,充分考虑后期的软件设计与调试。

二、误区二:硬件设计不够完善很多初学者在单片机系统设计中,往往忽视硬件设计的重要性,直接选择简单的接线方式或者芯片引脚连接方式,导致电路电气性能不稳定、抗干扰能力差等问题。

对策二:在进行硬件设计之前,应该充分了解芯片的引脚功能、特性和电气参数,选择合适的电路元件进行设计,并且要充分考虑电路的抗干扰能力、防雷击、防跨越等安全因素。

三、误区三:软件设计不够严谨在单片机系统设计中,软件设计也占据了很重要的地位。

许多初学者在进行软件设计时,往往存在编写代码不够规范、程序逻辑错误、注重功能而不注重效率等问题。

对策三:在软件设计之前,应该充分了解芯片的指令集、系统内部结构、外设控制等方面。

并且要注重代码编写规范、程序逻辑正确性、程序效率等方面,充分考虑软件设计的灵活性和可维护性。

四、误区四:缺乏系统调试经验单片机系统设计中,调试阶段是很重要的,但许多初学者由于没有足够的调试经验,往往出现无法精确定位问题、调试周期过长等情况。

电子专业单片机教学中存在的问题及解决对策

电子专业单片机教学中存在的问题及解决对策

电子专业单片机教学中存在的问题及解决对策1. 教材过于理论化:很多单片机教材过于注重理论知识的传授,对于学生来说,理论知识与实际操作相结合才能更好地理解和掌握单片机的原理和应用。

2. 缺乏实际案例分析:在实际应用中,单片机常常需要与其他电子元件和传感器进行配合使用。

很多教材只是单纯地介绍单片机的原理和语法,而缺乏实际案例的分析和实验,导致学生对于实际应用的理解不够深入。

3. 缺乏互动性和实践性:传统的单片机教学往往是教师讲解,学生听讲,缺乏互动性和实践性。

学生难以主动参与进来,缺乏对单片机的实际动手操作和实践过程的理解。

4. 实验设备不足:由于成本和资源的限制,学校往往没有足够的实验设备供学生使用。

这就导致学生无法进行足够的实验和练习,从而影响了他们对单片机的实际应用能力的培养。

解决对策:2. 强调实践操作:在课堂上增加实践操作的时间,让学生亲自动手进行编程和调试。

可以组织小组实验,让学生合作解决实际问题,提高他们的实践能力。

3. 制定教学计划:根据学生的不同水平和需求,制定一个详细的教学计划,明确教学目标和内容。

通过合理的安排和设计,可以帮助学生更好地掌握单片机的知识和技能。

4. 提供充足的实验设备:学校应该提供充足的实验设备,以确保学生有足够的实验和练习机会。

可以与相关企业合作,提供实验设备的捐赠或借用,以满足学生的实验需求。

5. 引入互动教学:在课堂上引入互动教学的方法,鼓励学生积极参与讨论和提问,提高他们的学习兴趣和参与度。

可以使用现代教学技术,如电子白板、在线模拟实验等,增加互动性和趣味性。

电子专业单片机教学存在的问题可以通过引入实践案例、强调实践操作、制定教学计划、提供充足的实验设备和引入互动教学等对策来解决,以提高学生对于单片机的理解和实际应用能力。

单片机系统设计的误区与对策

单片机系统设计的误区与对策

单片机系统设计的误区与对策单片机系统在军事、工业、民用产品中的应用越来越广。

它将许多以往用硬件实现的功能由软件来完成,体积小巧、功能丰富、智能化程序度,但在可靠性方面也面临许多新问题。

用现场电磁兼容性(EMC)理论剖析单片机系统设计中的某些传统观念,会发现许多误区,并且有些误区至今还在工程界广为存在。

1 误区之一:有了看门狗就不会死机死机是指CPU 的程序指针进入一个死循环,无法执行正常的程序流程。

其外在表现常常是:正常功能丧失,按键无响应,显示凝固。

单片机死机后,只有复全才能走出死循环,执行正常的程序流程。

众所属知,克服死机的最有效手段是加看门狗(WatchDog)。

目前用得最广泛的看门狗实际上是一个特殊的定时器DogTimer。

DogTimer按固定速率计时,计满预定时间就发出溢出脉冲使单片机复位。

如果每次在DogTimer 溢出前强行让DogTimer 清零,就不会发出溢出脉冲。

清零脉冲由CPU 发出,在单片机程序中每隔一段语句放一个清DogTimer 的语句——FeedDog 语句,以保证程序正常运行时DogTimer 不会溢出。

一旦程序进入一个不含FeedDog 语句的死循环,DogTimer 将溢出,导致单片机复位,跳出这个死循环。

本文称这种看门狗为典型看门狗,典型看门狗已被集成比,如MAX706、MAX791 等[1];还有许多单片机本身集成了这种看门狗,如PIC16C57、MC68HC705 等,具体电路可参阅这些芯片的技术资料[2]。

有一个错误观点:加了看门狗,单片机就不会死机。

实际上,看门狗有时间会完全失效。

当程序进入某个死循环,而这个死循环中又包含FeedDog 语句,这时DogTimer 始终不会溢出,单片机始终得不到复位信号,程序也就始终跳。

单片机入门的几点误区

单片机入门的几点误区

单片机入门的几点误区单片机入门的几点误区:因为传统的教学方法都是一板一眼的,这和中国的教学体制有关。

但这不是有效的教学。

就我自己的经验和多年来回答初学者的问题中总结了一些更有效的学习方法。

这里仅说几个误区吧,其他的学习方法可以在我即将出版的新书《爱上单片机》里找到答案。

误区1,一定要学习汇编才可以入门。

学习汇编语言已经是很古老的事情了,实际上不需要会汇编也可以玩好单片机。

而且汇编的用处不大,只有精准延时和其他一些很少用的程序才会用汇编语言。

入门来讲用C语言是最好的。

误区2,一定要了解单片机的指令集、寄存器才可以入门。

依我的观点,那些是没有必要学的,如果学了反而会对单片机失去兴趣。

有一些初学者来信和我讲,他在学习单片机的中断原理,认为学好这个才可以入门。

但是结果是越学越没有意思,越学越困以理解。

是呀,都还没有用过中断,就去学原理,是本末倒置的。

所以建议大家从硬件DIY开始,让单片机DIY越玩越好玩,越学越有乐趣,这样才可以用爱好作为源动力,推进单片机的学习、研究。

误区3,要买一个单片机开发板才可以入门。

依我看,单片机开发板对于单片机入门是没有多大用处的。

我建议采用面包板上做实验学习单片机,成本低、又可以动手DIY硬件,激发思考,积累的经验更多。

误区4,以AT89S52单片机入门。

AT89S52的内部资源很少,一般的东西都需要外部,而且最小系统必须接晶振和复位电路,很麻烦。

可是为什么大多数的爱好者还在用AT的单片机呢?这是因为现有的教材都以AT单片机为主,初学者以此入门,习惯了也就不想换其他的产品了。

另外,主动创新、学习新技术、新产品的能力不足,使得大家一直等在AT的圈里来开发。

比如我的。

学习51单片机的四个误区

学习51单片机的四个误区

学习51单片机的四个误区51单片机指MCS-51系列单片机,CICS指令集。

由Intel公司开发,其结构增加了如乘(MUL)、除(DIV)、减(SUBB)、比较(CMP)、16位数据指针、布尔代数运算等指令,以及串行通信力量和5个中断源,内有128个RAM单元及4K的ROM。

其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。

目前国内的51单片机市场主要为国产宏晶的产品STC系列其号称低功耗,稳定与廉价的特点。

误区1:51单片机是学习的基础“51单片机是学习的基础”这句话本身并没有错。

在笔者读本科的时候,当时它无疑是学习的基础——究竟那时没有更高级的单片机可以供使用,国内更没有更高级的教材供参考,老师的水平也是参差不齐,而51单片机正符合这样的需求,不仅有大量的成型的教材,广泛的示例,当时工作的实际项目也是51单片机为主,于是51单片机理所当然的成为当时的学习基础。

要知道笔者读本科的时候是2023年,即10年前的东西。

根据莫尔定律,电子行业每18个月更新换代,10年前的技术现在已经更新了6代了——事实也的确如此。

目前32位Crtex-M系列单片机的各种教程已经普及,其学习的难度不断降低。

以意法半导体公司的STM32F系列单片机来说,意法半导体在推广产品初期大量赠送了核心板。

免费赠送的核心板不仅有流行的32位Cortex-M系列微处理器,更在板上集成在线调试器。

随机附赠的光盘或者链接更是供应了大量的示例源代码。

我们只需要安装开发环境即可直接编译与下载调试。

这时,假如再说51单片机是学习嵌入式的基础确定是不合时宜了。

误区2:51单片机可以学习寄存器的操作51单片机可以学习寄存器的操作,这一点儿是不容置疑的。

我们分析一下其更深层的缘由。

在MSC-51单片机的编程环境中,最初是以汇编语言为主要编程语言。

要知道汇编语言就是直接操作寄存器的,汇编语言是无法做到C语言的函数调用与封装的。

假如说51单片机是以操作寄存器为优点,笔者觉得更应当说51单片机操作寄存器是一种无奈,是只有一个选项的选择题。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/********************************************************************************** Filename: 一线研发之声:嵌入式C编程经验之全局变量猛于虎* Author:SedateFire E-mail:SedateFire@* Version:1.001 Time: 2012-01-05* key: 嵌入式os-less 全局变量单片机**********************************************************************************/工作也有些年头了,从一位技术新人成长到现在自诩小牛级别的人物,少不了要自己寻找资料阅读。

论坛上、书店里、杂志上......要嘛是些菜鸟浅薄的自炫处女贴,要嘛是高屋建瓴云里来雾里去的概念文,好不容易遇到个实践型高手写的文章,却在渐入佳境之际嘎然而止。

本是隔靴搔痒,看完后心中更是郁结不已。

也罢,今日且强装回大牛,献丑谈一谈嵌入式C 编程中全局变量问题。

嵌入式特别是单片机os-less的程序,最易范的错误是全局变量满天飞。

这个现象在早期汇编转型过来的程序员以及初学者中常见,这帮家伙几乎把全局变量当作函数形参来用。

在.h文档里面定义许多杂乱的结构体,extern一堆令人头皮发麻的全局变量,然后再这个模块里边赋值123,那个模块里边判断123分支决定做什么。

每当看到这种程序,我总要戚眉变脸而后拍桌怒喝。

没错,就是怒喝。

我不否认全局变量的重要性,但我认为要十分谨慎地使用它,滥用全局变量会引申带来其它更为严重的结构性系统问题。

诸位看官,且听我细细道来。

1. 它会造成不必要的常量频繁使用,特别当这个常量没有用宏定义“正名”时,代码阅读起来将万分吃力。

2. 它会导致软件分层的不合理,全局变量相当于一条快捷通道,它容易使程序员模糊了“设备层”和“应用层”之间的边界。

写出来的底层程序容易自作多情地关注起上层的应用。

这在软件系统的构建初期的确效率很高,功能调试进度一日千里,但到了后期往往bug一堆,处处“补丁”,雷区遍布。

说是度日如年举步维艰也不为过。

3. 由于软件的分层不合理,到了后期维护,哪怕仅是增加修改删除小功能,往往要从上到下掘地三尺地修改,涉及大多数模块,而原有的代码注释却忘了更新修改,这个时候,交给后来维护者的系统会越来越像一个“泥潭”,注释的唯一作用只是使泥潭上方再加一些迷烟瘴气。

4. 全局变量大量使用,少不了有些变量流连忘返于中断与主回圈程序之间。

这个时候如果处理不当,系统的bug就是随机出现的,无规律的,这时候初步显示出病入膏肓的特征来了,没有大牛来力挽狂澜,注定慢性死亡。

无需多言,您已经成功得到一个畸形的系统,它处于一个神秘的稳定状态!你看着这台机器,机器也看着你,相对无言,心中发毛。

你不确定它什么时候会崩溃,也不晓得下一次投诉什么时候道理。

然后,我告诉大家现实层面的后果是什么。

1.“老人”气昂昂,因为系统离不开他,所有“雷区”只有他了然于心。

当出现紧急的bug时,只有他能够搞定。

你不但不能辞退他,还要给他加薪。

2. 新人见光死,但凡招聘来维护这个系统的,除了改出更多的bug外,基本上一个月内就走人,到了外面还宣扬这个公司的软件质量有够差够烂。

3.随着产品的后续升级,几个月没有接触这个系统的原创者会发现,很多雷区他本人也忘记了,于是每次的产品升级维护周期越来越长,因为修改一个功能会冒出很多bug,而按下一个bug,会弹出其他更多的bug。

在这期间,又会产生更多的全局变量。

终于有一天他告诉老板,不行啦不行啦,资源不够了,ram或者flash空间太小了,升级升级。

4. 客户投诉不断,售后也快崩溃了,业务员也不敢推荐此产品了,市场份额越来越小,公司形象越来越糟糕。

要问我的对策吗,只有两个原则:1. 能不用全局变量尽量不用,我想除了系统状态和控制参数、通信处理和一些需要效率的模块,其他的基本可以靠合理的软件分层和编程技巧来解决。

2. 如果不可避免需要用到,那能藏多深就藏多深。

1)如果只有某.c文件用,就static到该文件中,顺便把结构体定义也收进来;2)如果只有一个函数用,那就static到函数里面去;3)如果非要开放出去让人读取,那就用函数return出去,这样就是只读属性了;4)如果非要遭人蹂躏赋值,好吧,我开放函数接口让你传参赋值;5)实在非要extern**我,我还可以严格控制包含我.h档的对象,而不是放到公共的includes.h中被人围观,丢人现眼。

如此,你可明白我对全局变量的感悟有多深刻。

悲催的我,已经把当年那些“老人”交给我维护的那些案子加班全部重新翻写了。

你能明白吗,不要让人背后唾弃你哦。

2011-12-29 续篇承蒙小编抬爱,推荐了本博文,感激之余心中惶恐,特地详细看了下回复。

这个主题最早是在论坛发表的,我发现那里的回复还是比较热烈的,也很高兴能够听到不同的声音。

对于一些网友提到的,如果大量使用局部变量也会容易造成栈溢出的问题,还提到程序模型的概念。

言之有理。

所以特地来补充一下意见:1.全局变量是不可避免要用到的,每一个设备底层几乎都需要它来记录当前状态,控制时序,起承转合。

但是尽量不要用来传递参数,这个很忌讳的。

2.尽量把变量的作用范围控制在使用它的模块里面,如果其他模块要访问,就开个读或写函数接口出来,严格控制访问范围。

这一点,C++的private属性就是这么干的。

这对将来程序的调试也很有好处。

C语言之所以有++版本,很大原因就是为了控制它的灵活性,要说面向对象的思想,C语言早已有之,亦可实现。

3.当一个模块里面的全局变量超过3个(含)时,就用结构体包起来吧。

要归0便一起归0,省得丢三落四的。

4.在函数里面开个静态的全局变量,全局数组,是不占用栈空间的。

只是有些编译器对于大块的全局数组,会放到和一般变量不同的地址区。

若是在keil C51,因为是静态编译,栈爆掉了会报警,所以大可以尽情驰骋,注意交通规则就是了。

5.单片机的os-less系统中,只有栈没有堆的用法,那些默认对堆分配空间的“startup.s”,可以大胆的把堆空间干掉。

6.程序模型?如何分析抽象出来呢,从哪个角度进行模型构建呢?很愿意聆听网友的意见。

本人一直以来都是从两个角度分析系统,事件--状态机迁移图和数据流图,前者分析控制流向,完善UI,后者可知晓系统数据的缘起缘灭。

这些理论,院校的《软件工程》教材都有,大家不妨借鉴下。

只不过那些理论,终究是起源于大型系统软件管理的,牛刀杀鸡,还是要裁剪一下的。

/********************************************************************* Filename: 一线研发之声:嵌入式C编程经验之只有一条清狗语句* Author:SedateFire E-mail:SedateFire@* Version:1.000 Time: 2012-01-05* key: 看门狗系统架构os-less 嵌入式********************************************************************/一个好的os-less系统,只有一条清狗语句,它位置就固定在main函数中的while(1) /* or for(;;;) */{__watchdog_reset();}如果你有两条以上看门狗语句,那么会有什么后果呢?在系统足够复杂的时候,很能引起当机,由于静电或者程序自身逻辑的原因,进入了某个思维的盲点,系统进入一个有清狗语句的死循环里面,退不出来。

这是最危险的,尴尬的,蒙羞的事情。

那么多出来的清狗语句,一般会用在哪里呢?1.系统初始化,有些设备初始化需要读取它的反馈状态,用while,担心复位,于是清狗。

我一般用While (dev_read_status() && (i--)),这个i,32位顶天了。

一般mcu没这么快法。

2. mcu睡眠前清狗。

有些人喜欢在系统进入睡眠前清狗一下,担心系统刚好在那一刻复位。

这只能说明你对自己的程序不了解,主回圈程序一圈下来,最大执行时间其实心中有数。

函数多少深度宽度心中要有低。

如果刚好睡眠前一刻复位,那也有可能在跑别的函数过程中复位。

3. 某些应用逻辑貌似要需要hold住,比如屏幕的暂停显示2秒钟等。

许多人生生地把这种逻辑做成“硬延时”,就是死等。

这是一个令人戚眉的做法,因为这意味麻烦的开始。

在你需要暂停显示n秒的过程中,我的一切用户体验你无法响应我了,按键没反应,蜂鸣器不响,led灯不闪烁,一切好像死机了一样。

等到系统显示完成后,用户心中大舒一口气,心中悬石落地,你终于又回气儿活过来了。

这是糟糕的体验。

好吧,为了改善体验,许多人就想办法来。

把用户体验搬到中断里面做,这是另外一个麻烦的开始,全局变量的增多和跨模块的判断,其根源之一始于此,弄个不好,就是随机性崩溃。

中断程序变胖,终究是不方便的,于是为了改进,就只好在中断程序中置标志位,然后在hold_delay(TIME)函数的循环中清狗,并且判断标志位作响应动作。

许多应用逻辑需要hold 住的地方何其多,上九天下地府处处添加,函数深度不可测,逻辑递归难判断,系统大乱的祸患就此埋下。

那如何解决呢,事件--状态机,一句话概括,在当前状态下,遇到某某事件,则执行什么动作后,进入下一个状态。

它似表非表,如水般自然,像空气般无痕……好了,其实是我不愿多讲,若要具体讲下去,恐怕涉及公司知识产权。

尽管这个事件状态机思想是个公开的秘密,原理大家都懂,但做得好的还不多见。

Hold住本身就是一种状态,看你如何抽象它了。

佛曰:菩萨畏因,凡夫畏果。

那灾难之源,是需要敬畏戒惧的,待到结果发生,悔之莫及。

/*************************************************************************************** Filename:一线研发之声:嵌入式C编程经验之请写可移植性高的模块* Author:SedateFire E-mail:SedateFire@* Version:1.000 Time: 2012-01-05* key: 嵌入式可移植性模块化依赖**************************************************************************************/我想你或许有这样的经验,你要实现的一个模块同事已经实现了。

老板发话说:你复用他的代码啊,半天给我搞定。

相关文档
最新文档