我记得刚开始自学单片机的时候,虽然把每个外设都用起来了,但是一到做项目就不知道怎么下手。
只能照着一些开发板的例程,自己按照他们的思路写一遍,如果没有例程就完全是懵逼状态。
那时还以为自己的基础不行,又去好好把c语言、单片机系统复习了一遍,如果你也试过,那一定知道其实没什么鸟用。
做不出项目,最主要的原因不是你的基础不行,当然也有这方面的因素,但不是最主要的。
下面,我来说下自己是怎么从一个做不出项目,到最后能够独立完成各种项目的,看完你一定知道下一步该怎么做,毕竟真正走成功过的路才具备参考的意义,文末有彩蛋哦。
我从以下几个方面来剖析。
1. 为什么做项目无从下手?
2. 接下来怎么做?
一、为什么做项目没思路?
做项目无从下手,最大的原因是你缺代码组织能力,即项目经验。
外设你都能用起来,但是一个产品功能肯定是是需要把各种输入型外设采集到的数据进行一个逻辑处理,再通过芯片的输出型外设去控制外围电路最终实现产品的功能。
很多人就是这个环节出了问题,多个外设组合在一起使用,必定会增大代码量。
比如说又要检测按键短按、短按释放、长按、长按释放,中间最头痛的是有没有一个好的消抖和延时方法。
除了按键以外,可能同时你的串口还在一直接收数据,然后解析数据,最后还要通过串口发送一组响应数据出去,要怎么写函数才能保证数据完整度,同时还要保证写的代码表现得不业余?
或许还要驱动一些指示灯完成一些效果,比如说隔3秒快闪2次等等。
有些功能如果代码处理不好是会相互冲突的。
如果你没经验,没处理过这样的问题,那肯定没有头绪对吧?这跟你的经历有关而不是说基础。
二、接下来怎么做?
那我们找到问题了,接下来该怎么做?
其实一个产品功能涉及到的外设啊,协议啊,常用的来来去去就这么几种:
从功能划分就是:按键功能、串口数据收发、SPI通讯、IIC通讯、LCD显示、模拟量采集、输出控制(继电器、LED等等)
涉及到的外设:GPIO、定时器、中断、ADC、串口、PWM、DMA、FSMC
不管产品功能多么复杂,最终到单片机处理的肯定就是这么些东西。
你只需要每种外设,不管是需要采集的,还是需要控制的功能代码怎么写比较好以后就可以彻底解决这个问题了。
当然说起来简单,实际做起来还是有很多细节的问题。
前面没思路是正常的,也不用自己去想,直接去看别人怎么写,最好是看一些写的比较好的。
比如说按键检测的功能别人都是怎么写的,如果没参加工作接触不到这种代码,完全可以在网上搜。
先模仿,吃透以后分析这种写法的弊端,而创新就是怎么去把这个弊端解决。
其实就是这么个过程,并没有能够让你一下从菜鸟秒变大神的神丹妙药,如果有捷径,那肯定就是有一个大神带着你,教你实现原理,给你提供实现源码,并且指导自己重写过程中碰到的问题。
如果你再网上还是有很多类似功能代码搜不到,或者你觉得不够好。
那么,彩蛋来啦!
我在2019年专门录制的一套程序架构的视频,录着玩的,不要抱有专业讲师水平的期望,我一边录还一边点烟,但是内容价值绝对能让你少走几年弯路,公益分享不用钱!
这套教程就是专门讲怎么解决这些实际产品开发当中的痛点,比如说本文说的按键处理,串口数据处理,LED灯处理等等。
其中涉及到了一些c语言高级的应用,比如指针、结构体,并通过这些高级应用实现了一些实用的功能,比如队列算法、回调函数、任务创建、任务调度等,同时也为准备学习操作系统的童鞋打下基础。
这里不能放链接,怎么拿,不用我教你了趴?记得先三连哦!