打印
[51单片机]

从业将近十年!手把手教你单片机程序框架(连载)

[复制链接]
楼主: jianhong_wu
手机看帖
扫描二维码
随时随地手机跟帖
21
readlove1| | 2014-3-6 08:58 | 只看该作者 回帖奖励 |倒序浏览
两年前看你在电子发烧友发过贴,现在来21IC。发的都是些基本单片机知识,个人想法,来点实际价值东西。

使用特权

评论回复
22
mylsf| | 2014-3-6 09:37 | 只看该作者
标记一下

使用特权

评论回复
23
mtlsh168| | 2014-3-6 09:38 | 只看该作者
switch(ucLedStep)
  {
     case 0:
/* 注释一:
* uiTimeCnt累加定时中断的次数,每一次定时中断它都会在中断函数里自加一。
* 只有当它的次数大于或等于设定上限const_time_level时,
* 才会去改变LED灯的状态,否则CPU退出led_flicker()任务,继续快速扫描其他的任务,
* 这样的程序结构就可以达到多任务并行处理的目的。这就是鸿哥在所有开发项目中的核心框架。
*/
                  if(uiTimeCnt>=const_time_level) //时间到
                  {

/* 注释二:
* ET0=0;uiTimeCnt=0;ET0=1;----在清零uiTimeCnt之前,为什么要先禁止定时中断?
* 因为uiTimeCnt是unsigned int类型,本质上是由两个字节组成。
* 在C语言中uiTimeCnt=0看似一条指令,实际上经过编译之后它不只一条汇编指令。
* 由于定时中断函数里也对这个变量进行累加操作,如果不禁止定时中断,
* 那么uiTimeCnt这个变量在main()函数中还没被完全清零的时候,如果这个时候
* 突然来一个定时中断,并且在中断里又更改了此变量,这种情况在某些要求高的
* 项目上会是一个不容易察觉的漏洞,为项目带来隐患。当然,大部分的普通项目,
* 都可以不用那么严格,可以不用禁止定时中断。在这里只是提醒各位初学者有这种情况。
*/
             ET0=0;  //禁止定时中断
                     uiTimeCnt=0; //时间计数器清零



把一大片的注释插入在两行语句之间,实在是严重影响了阅读。 个人觉得如果注释比较长,放在函数名之前就可以了; 如果是几个字的注释,就紧接着放在相应语句后面。

使用特权

评论回复
24
jianhong_wu|  楼主 | 2014-3-6 09:53 | 只看该作者
readlove1 发表于 2014-3-6 08:58
两年前看你在电子发烧友发过贴,现在来21IC。发的都是些基本单片机知识,个人想法,来点实际价值东西。 ...

我个人认为,做单片机项目开发,初学者最缺的就是如何搭建系统,组织框架。而我现在分享的恰好就是我做所有项目的固定套路和程序框架,只要沿着这个程序框架思路,不管再复杂的项目都会显得很清晰简单。当然,你说的“实际价值的东西”,我在后面肯定会分享到的,比如各种项目的算法,常用各类外围芯片的驱动程序代码,等等,后面一定会有。但是为了兼顾初学者,先从简单易懂的项目入手,帮助他们建立系统思想。

使用特权

评论回复
25
jianhong_wu|  楼主 | 2014-3-6 09:58 | 只看该作者
mtlsh168 发表于 2014-3-6 09:38
switch(ucLedStep)
  {
     case 0:

谢谢你的建议。但是我觉得这样也有这样的好处,比如可以在关键的地方及时提醒。

使用特权

评论回复
26
liaohongcai8204| | 2014-3-6 10:00 | 只看该作者
感觉你主要目的还是在推广你的方案公司!别的就“呵呵”!

使用特权

评论回复
27
vkic007| | 2014-3-6 10:09 | 只看该作者
去年就见你写过,我感觉楼主更过是在推销自己的学习板吧!!!!其实你为什么不直接把你们学习板的用户手册拿出来和大家分享一下呀,其实如果真的有学习需要的肯定还是会购买的。

使用特权

评论回复
28
jianhong_wu|  楼主 | 2014-3-6 10:10 | 只看该作者
liaohongcai8204 发表于 2014-3-6 10:00
感觉你主要目的还是在推广你的方案公司!别的就“呵呵”!

我没有明目张胆地推广我的方案公司,我也没必要去推广我的方案公司,因为我不缺项目,我在深圳的圈子里,就是熟人给我的项目就做不完。做项目,几乎都是我挑客户的。我以前刚刚在论坛上发帖的时候,是想混点名气,但是现在已经30多岁了,我对这些看得比较淡。我觉得我能分享一些我认为有价值的东西给初学者,此生无憾。

使用特权

评论回复
评论
lgq_123 2015-6-8 13:16 回复TA
32个赞,难得啊 
评分
参与人数 7威望 +16 收起 理由
第九度 + 2 赞一个!
yang_r + 1 赞一个!
nmzyfeng + 2
ONE16 + 3 淡定
xiaoyuan_ly + 4 坚决给分!!! 好同志,除了任务抢占没有.

查看全部评分

29
jianhong_wu|  楼主 | 2014-3-6 10:17 | 只看该作者
本帖最后由 jianhong_wu 于 2014-3-7 13:14 编辑
vkic007 发表于 2014-3-6 10:09
去年就见你写过,我感觉楼主更过是在推销自己的学习板吧!!!!其实你为什么不直接把你们学习板的用户手册 ...


学习板能赚几个钱?我不靠这个养家糊口。而且我分享的程序代码,几乎在任何一个厂家的学习板上都可以运行,初学者可以不用买朱兆祺的学习板,他们可以自己动手来焊板来实验我的程序代码,他们也可以用其他厂家的学习板来实验。但是你站在我的角度考虑问题,我写的是单片机的程序软件,要是没有一个学习板作为硬件平台去讲课,这样也很不方便,有些知识点也讲不清楚。分享技术,我会很有成就感和满足感,这个是我最大的动力。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
chunyu1120 + 1 很给力!
30
liaohongcai8204| | 2014-3-6 10:21 | 只看该作者
在电子发烧友我就关注你了!不错不错!很有自己有思想。希望你的技术贴能由浅入深,不要一直停留在这几篇,论坛里面有好几个大学教授还有研究生注视着,不要让人觉得你在唱高调打广告就OK了!声明一点,我不是牛人,只是一个爱好学习的人!

使用特权

评论回复
31
zwp0822| | 2014-3-6 10:32 | 只看该作者
一大早打开论坛就看到了你的帖子,看到开头觉得是个说大话的家伙学了点皮毛在卖弄,看到后面方觉楼主是深入浅出,推测楼主应该是对汇编、指针一类也是了如指掌的,只是为了不打消初学者的积极性故意言之,其实学到高深之处后对汇编、指针一类也应该是要掌握的,毕竟在内存优化、程序精简、高效执行等方面还是需要的,太多的if嵌套对程序运行效率影响太大了。楼主你说是不是?

使用特权

评论回复
32
jianhong_wu|  楼主 | 2014-3-6 10:33 | 只看该作者
本帖最后由 jianhong_wu 于 2014-3-6 10:43 编辑
liaohongcai8204 发表于 2014-3-6 10:21
在电子发烧友我就关注你了!不错不错!很有自己有思想。希望你的技术贴能由浅入深,不要一直停留在这几篇, ...


我的帖子肯定不会停留在这几篇,这些年做了那么多项目,我有很多东西要整理一下然后分享出去,但是大家需要有点耐心,我后面的东西还很多,不要急着给我盖棺定论,应该允许我发出不同的见解和声音。我会尊重各位教授和研究生的博学,会虚心向他们学习。但是不要因为我讲的简单而马上否认它的价值,因为我从一开始就在底层自己摸索单片机,我懂初学者的需求。我遇到很多初学者,有很多年纪比我还大的朋友,他们在学单片机的时候,都会遇到一个瓶颈,不知道如何组织程序结构,把各种输入输出器件关联起来,成为一个产品,我现在就是要帮他们解决这个问题,深入浅出,让本来就很简单的系统框架水落石出。

使用特权

评论回复
评分
参与人数 3威望 +7 收起 理由
sljzyjj + 3 很给力!
xouou_53320 + 2 很给力!
xyz549040622 + 2
33
jianhong_wu|  楼主 | 2014-3-6 10:40 | 只看该作者
zwp0822 发表于 2014-3-6 10:32
一大早打开论坛就看到了你的帖子,看到开头觉得是个说大话的家伙学了点皮毛在卖弄,看到后面方觉楼主是深入 ...

是的。你说的很对。我刚开始学单片机的时候,也不懂指针,但是照样把项目做了出来。现在回想起来当年,那是我用数组和变量来代替了指针,当我经历了那个最原始的阶段之后,我后来再学指针,就轻而易举了,而且对它了解得比较透彻。同样的代码,用指针确实会让我们书写得更加简洁。

使用特权

评论回复
34
youss| | 2014-3-6 10:50 | 只看该作者
我学pic的时候只有汇编,一用十几二十年,标志跟楼主学习c :P

使用特权

评论回复
35
jianhong_wu|  楼主 | 2014-3-6 10:56 | 只看该作者
youss 发表于 2014-3-6 10:50
我学pic的时候只有汇编,一用十几二十年,标志跟楼主学习c

呵呵,我这些年做的项目,用得最多的就是PIC单片机,从PIC12,PIC16,PIC18,PIC24这些系列都覆盖过了,这些项目我都是用C语言写的。真正用C语言遇到过一次坎坷的,是在做一个医疗项目的时候要驱动步进电机,但是后来我还是用C语言实现了,没有用汇编。

使用特权

评论回复
36
巾凡舟亢| | 2014-3-6 11:01 | 只看该作者
学习了

使用特权

评论回复
37
菜鸟同学| | 2014-3-6 11:02 | 只看该作者
如果真的是做了十年,差不多就是固步自封吧。

使用特权

评论回复
38
菜鸟同学| | 2014-3-6 11:02 | 只看该作者
如果真的是做了十年,差不多就是固步自封吧。

使用特权

评论回复
39
jianhong_wu|  楼主 | 2014-3-6 11:08 | 只看该作者
菜鸟同学 发表于 2014-3-6 11:02
如果真的是做了十年,差不多就是固步自封吧。

做的项目满足了客户的需求才是目的。这些年我就是靠这个简单的思路框架和套路,做的项目战无不胜,攻无不克。我觉得把它分享给初学者很有价值。

使用特权

评论回复
40
菜鸟同学| | 2014-3-6 11:08 | 只看该作者
指针个人认为没那么神奇,就是一个地址,类型不同而已,所以很多人就觉得麻烦难。我出来没几年,我觉得我们这行,多看别人写的。自己的想法太有限。然后综合慢慢的套路就多了。

使用特权

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

本版积分规则