allen

  • 2301 主题
  • 2447 帖子
  • 5698 积分
  • 身份:管理员
  • E币:2459

过来人告诉你:初学单片机不必纠结于此!

2018-1-26 14:46:24 显示全部楼层
本帖最后由 allen 于 2018-1-26 14:47 编辑

初学单片机会有以下几个误区,过来人这么说:
(1)很难记住繁杂的寄存器?

寄存器不用死记硬背,鸿哥我行走江湖多年,连一个寄存器都记不住。需要配置寄存器的时候,直接在网上或者书本上参考别人现成的配置程序是上策,查找芯片数据手册是中策,死记硬背寄存器是最最下策。

(2)很难记住繁杂的汇编语言指令?

除非是在校学生要应付考试或者少数工作中绕不开汇编,否则学汇编就是浪费时间。我行走江湖多年,从来就没有用汇编帮客户做过一个项目。

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

5条指令语句switch语句,if else语句,while语句,for语句,=赋值语句。
7个运算符+,-,*,/,|,&,!。
4个逻辑关系符||,&&,!=,==.
3个数据类型unsigned char, unsigned int, unsigned long。
3个进制相互转化,二进制,十六进制,十进制。
1个void函数。
1个一维数组code(或const) unsigned char array[]。

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

我当年刚毕业出来工作的时候才知道可以用C语言开发单片机,一开始只用if语句就把项目做出来了,没有用指针,没有用带形参的函数等复杂的功能。再到后来才慢慢开始用C语言其他的高级功能,但是我发现C语言其他的高级功能,本质上都是用我前面列举出来的最基本功能集合而成,只是书写更加简单方便了一点,编译后的机器码都大同小异。所以不会指针等高级功能你不用自卑,恰恰相反,当你会最简单的几个语句,就把这些高级功能的程序都做出来了,你才发现你对底层了解得更加透切,再学那些高级功能轻而易举。当你裸机跑的程序都能够协调得很好的时候,你才发现所谓高深的操作系统也不过如此,只要给你时间和金钱你也可以写个操作系统来玩玩。
1.jpg

(4)很难记住精确时间的计算公式?
经常看到时间公式等于晶振,时钟周期,执行指令次数他们之间的乘除关系式。我认为这些都是浮云,不用纠结也不用去记,大概了解一下就可以了。不管你对公式掌握得有多精确,你都不可能做出非常精确的时间。想用单片机做一个非常精确的时间这种想法一开始就是错的,不可能的。真想做一个比较精确的时间,应该用外围时钟芯片或者FPGA和CPLD,而不是单片机。
(5)很难记住繁杂的各种通信协议?

什么IIC、SPI、232串口通讯,CAN、USB等等。这些都是浮云,你不用记那么多,你只要理解两种通讯方式就够了,那就是串行通讯方式和并行通讯方式。不管世界上有多少种通讯协议,物理世界上只有这两种通讯方式,其他各种名称的通讯协议都基于此两种方式演变而来。
(6)很难写短小精悍的程序?
初学者不要纠结于此。做项目开发,程序容量不是刻意追求的目标,程序多一点少一点没关系,现在大容量的单片机品种非常多,容量不会是寸土寸金的事情,我们更加要关注程序的运行效率,可读性和可修改性。

作者:吴坚鸿
免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我联系删除内容。

回复 收藏 举报

最新评论

楼层直达:

1451262183_5848

  • 0 主题
  • 16 帖子
  • 383 积分
  • 身份:LV2 初级技术员
  • E币:306

通宵敲代码

  • 0 主题
  • 8 帖子
  • 109 积分
  • 身份:LV1 技术小白
  • E币:92
通宵敲代码 2018-1-29 13:20:20 显示全部楼层
刚想骂两句,一看作者,擦,老吴。
说句实在的,你这点观点本人不敢苟同啊。
按你说的这些,培养出来的最多是个码农,
而算不上是工程师,甚至连开发人员都不是。

allen_zhan_7528

  • 0 主题
  • 13 帖子
  • 243 积分
  • 身份:LV2 初级技术员
  • E币:160
allen_zhan_7528 2018-1-30 10:42:32 显示全部楼层
真可怕, 市面的设备难道不少就是这样的"初学者不害怕"的方式实现的产品?
打算在国际市场把中国品牌的声誉致以何地?

想学习, 可以在开发板上自己玩, 自己给自己提课题, 走项目.
1. 在实际参与工程前, 至少应了解系统与计划构架; 安排任务和中断; 开始考虑事务处理(生产者与消费者竞争不再是书面讲义, 几乎每个稍微复杂点的项目都会遇到);
2. 开发过程中同时安排功能测试与系统测试项目; 测试与各种配置调试端口连接软件(或者干脆也需要你在windows上写工具).
3. 最有价值的部分来了... 在一个嵌入式 target board 的工作环境中, 设想各种异常, 回到你的软件健壮性的实现要求上. 这往往又需要对 circuit 部分有相当的了解, 要检查出硬件不可靠不稳定, 电源纹波异常, 大功率module 工作时瞬间压降等现实. 要不你与硬件磨合的很好, 要不干脆这些也是你完成.
4.  现场测试必不可少, 这个阶段你准备好出差现场了吗?

这些必要开发步骤都没有, "嵌入式开发并不可怕"的准工程师们, 将把我们国货的声誉带往哪里去?
广告

tom2068_8973755

  • 0 主题
  • 1 帖子
  • 107 积分
  • 身份:LV1 技术小白
  • E币:99
tom2068_8973755 2018-1-31 08:25:30 显示全部楼层
这是谁呀?在此大放厥词,不用记寄存器那是不假,不学汇编,不懂指针和结构那还搞啥单片机?严重误导!直接玩硬币得,那好歹也是钱!

Unicorn

  • 1 主题
  • 233 帖子
  • 178 积分
  • 身份:LV1 技术小白
  • E币:131
Unicorn 2018-1-31 12:49:33 显示全部楼层
通宵敲代码 发表于 2018-1-29 13:20
刚想骂两句,一看作者,擦,老吴。
说句实在的,你这点观点本人不敢苟同啊。
按你说的这些,培养出来的最多 ...

码农都不能算上吧……

10378119

  • 0 主题
  • 14 帖子
  • 474 积分
  • 身份:LV2 初级技术员
  • E币:318
10378119 2018-2-2 09:11:30 显示全部楼层
這嚴重誤人子弟阿.....
這種想法就只玩玩Arduino而已

cooldog123pp_49

  • 16 主题
  • 61 帖子
  • 499 积分
  • 身份:版主
  • E币:327
说的 很对
广告

pwm55_704153681

  • 0 主题
  • 5 帖子
  • 112 积分
  • 身份:LV1 技术小白
  • E币:103
pwm55_704153681 2018-2-10 20:39:55 显示全部楼层
我想,他说的是对初学者而言的,这样可以激发和保持学习的兴趣,以后提高了是应该掌握那些知识点的。
我要评论
8
广告
关闭 热点推荐上一条 /2 下一条
快速回复 返回列表