也就是说,单片机你学的再好,如果,你对汽车,家电,仪表,都不懂。那你怎么应用单片机?在智能控制中,传感器很重要。我们学习,要掌握专业技术,还要了解电子行业知识。
还有就是常见的通信协议。比如spi,iic,uart,can(汽车电子应用广泛)。在编程方面,要把常用的模块整理成库函数。以后直接拿来用。比如键盘,lcd1602,18B20,DS1302等等。C语言的模块化编程很适合干这个。
大三,是最疯狂的时候,那个时候正式学习S3C2440A(ARM9),然后,就是嵌入式linux。不管是难度还是深度。都不是单片机能比的。现在看单片机,觉得单片机太简单了,都没什么,小儿科。我现在就是找的嵌入式linux软件工程师。公司主要做的是电信设备。关于嵌入式难的是入门,难的是深入下去。如果不跑操作系统,它就是一超级单片机,资源多点而已。IO口就有100多。串口3个,定时器,5个,还有各种控制器。
如果你要学习嵌入式就要抱着必死的心,耐得住寂寞。无比坚强的意志,毕竟学习技术不是谈恋爱。嵌入式跑操作系统那就更复杂了。要学好多,首先,C语言功底要好,英语不能太差。计算机体系结构很重要,操作系统重中之中。进程,线程,网络编程,文件系统,内存管理,linux系统编程,linux下各种工具的掌握。shell编程,makefile编写,等等。这只是linux,如果跑安卓,还要学java,跑wince要学c++。处理器除了ARM还有其它的处理器。我现在主要走的是ARM+linux+QT
接触嵌入式2年了,我基本上掌握了嵌入式,现在需要的只是不断地在项目中深化理论知识,总结经验。现在主要做linux应用程序开发,但是我一直在研究linux驱动开发。你不学习就落后了。学习的过程中,很多困难只要坚持都能解决。前段时间移植uboot花了一个星期,读了十几万行代码,终于把它的启动流程,工作原理搞通了。不得不说uboot移植很难的。它就是pc中的BIOS,初始化硬件,搬移代码,加载操作系统内核的。 在此,简单谈谈单片机的架构,以51为例。我们在单片机编程中,不能仅仅满足于单片机功能的实现。这不是PC编程。我们要注意单片机的实时性。还有功耗,以及提高CPU的利用率。尽量少用延迟函数,最好不用。当然,有些场合还是要用的。一般情况下,超过1MS的延迟就用中断。充分利用好定时器。我一般以100US为基准。
每隔100us设置一个标志位1,200us设置标志位2,以此类推。把最紧急的事放在标志位1,以此类推。CPU实在没事干,就让它睡觉去,千万别让它傻愣着。
还有设计子函数的时候,要让子函数完成单一的任务。比如,计算器中。加减乘除用四个函数实现而不是一个函数。当然,有些函数太简单,可以用宏来实现。
还有软件与硬件的关系。一般来说,好的硬件设计可以减轻软件的工作量。相反,有时候,为了节约成本,有些器件不能用,这就导致了软件工作量的增加。比如,有些单片机没有IIC接口,没办法,只好用软件模拟了。睡觉了。