说一说我学习STC单片机踩过的坑。
入门单片机编程是从杜洋的《爱上单片机》开始的。看过这本书的朋友可能都有所了解,这本入门性质的书籍,语言风趣幽默,能够吸引人不停的读下去,从而提高学习的兴趣。刚开始是从STC12C2052AD这款型号的单片机开始的,并使用面包板搭建简单电路。随书籍附赠的光盘提供了一些丰富的例程,对于刚开始学习单片机的我,对照着例程,把一个个程序下载进去,看着单片机按照相应程序执行,玩儿的不亦乐乎,别提多高兴了。但该来的总会来,悲剧这就发生了!谁又能保证自己学习单片机没有踩过坑呢? 记得有一次下载程序,没反应,怎么回事?然后就开始各种检查,百度大家在学习单片机下载程序出现过的类似情况,对照着逐一排查,一连折腾了好几天,最后还是不行只能放弃。将这块芯片做好标记——串口不能下载程序,放到一旁吃灰去了。 后面由于工作需要,就直接买了STM32的开发板,学习ARM单片机了。最近整理房间的时候,又把之前学习51单片机的相关东西翻了出来,准备打包扔掉了。但转念又想到当时的悲剧,是自己当时操作有误,还是设置有问题?还是那块单片机彻底坏掉了?抱着试一试的态度,又把它拿了出来,连接好电路后,重新下载程序,可惜奇迹并没有发生!就在我准备放弃的时候,想着用万用表测一下各个引脚,看看有没有异常的情况。P1口都是5v,RXD、TXD都是3v左右,也没发现什么不正常的地方呀!但当我将红表笔搭到4脚和5脚时,黑表笔当然是搭到GND了,准备测量XTAL1和XTAL2的电压情况时,面包板上没有晶振?随便找了一颗晶振给装上去。就在晶振装上的那一瞬间奇迹发生了,USB转TTL小板的下载灯闪烁,程序下载进去了。But Why?之前为什么不行?装了晶振就行了?这是什么鬼? 静下心来重新打开STC12C2052AD的数据手册,翻开时钟部分的介绍,通过仔细阅读,终于让我发现问题所在。原来按照《爱上单片机》书里面的那些例程,一个一个程序下载进去,刚开始的时候由于精简化电路,并没有使用外部晶振,但后面的例程由于对时钟频率要求较高,所以在STC-ISP下载的时候设置的是外部时钟,电路当然也接了外部晶振。随后当我再次搭建不需要晶振的电路,比如下载流水灯的那些例程时,由于没有外接晶振,所以冷启动后一直没有反应。而当我误打误撞装上晶振后,程序下载成功了!问题完美解决,这块单片机又能“再战五百年”了,又能和它愉快的玩耍了! 通过这次“教训”,让我更加知道细节的重要性!虽然这种情况在实际的单片机电路里可能不会出现,但由于没有仔细阅读数据手册,而忽略掉了一些重要的细节问题,从而导致当初的窘境。现在将我的心得与大家分享,希望大家可以共同学习、共同进步!
|