×
单片机 > 单片机程序设计 > 详情

ATmega128串口0不工作

发布时间:2020-08-24 发布时间:
|

一直在做ATmega16的程序,因为比赛的需要,转战到ATmega128的开发。ATmega16和ATmega128都是AVR单片机,它两个主要的区别就是ATmega128资源更加丰富了。理论上来说,从16转到128基本没什么变化,主要的变化就是寄存器名称变化。拿我这次做的来说:16只有一个串口,而128有两个,对应的寄存器就有区别了(128在寄存器名称上,区别串口0和串口1)。


按照ATmega128芯片手册很快的编写了程序(有了16的基础,编写不是太难)。编译,连接,生成HEX文件,ISP烧写,打开串口调试助手……满心期待的等待出现效果,但是它像死掉了一样,一动不动。开始还以为是硬件连接不好,就逐渐排查硬件问题,发现硬件电路毫无问题。这就郁闷了,怎么就不好使呢?我开始怀疑是我自己的代码没有写对。到网上搜了一堆别人写的串口程序,希望找到解决之路,不过还是不好用。


无意之中把一个别人做好的HEX烧到片子上,效果出现了,它又神奇的活了过来。我把对应的代码粘贴到C文件,加载到工程,编译,生成HEX文件,烧写到片子还是不好用。我这就郁闷了,一样的程序,一样的编译器,生成的HEX文件,一个好用,一个不好用,这样我情何以堪呢?


伟大的柱哥出现了,随意的瞥了两眼,来了句“看看你的编译器设置对了吗?”


我迅速打开Project--Option,弹出对话框,找到Target---Device Configuration选择对应的芯片型号,OK关闭对话框。再次编译,烧写,如预想的一样,它动了。


从来没有想到是编译器的问题,一方面是自己还需要学习的很多,一方面是自己对问题看到太浅了。这次的问题让我反思,工欲善其事必先利其器,连工具都没有充分的了解,怎么能让工具发挥它最大的作用呢?怎么才能善其事呢?引以为戒!




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
浅谈AVR中定时器几种工作模式