20年前坐在北京一个高校的教室里听老先生讲51单片机的课程。岁月荏苒,时过境迁,科技发展的潮流不可阻挡,技术的发展更是一日千里:“单片机”成了“嵌入式”,“51”等8位机完全被32位的arm取代,编程语言经历了汇编、c、固件库,程序结构(所谓固件,firmware)从“裸跑”转变为嵌入式实时操作系统(rtos,如uc/os)。初学者一脸茫然:想掌握单片机,如何下手?
这是我的忠告:
1、实际的工作中、开发项目中,51单片机已很少用,pic、avr也在没落,arm cortex-m 单片机(严格讲称为mcu)成为主流,尤其是st公司的stm32系列,近5年在市场上取得绝对优势。刚刚诞生的stm32f030,号称售价30美分,将是传统8位单片机的终结者。
2、开发工具:使用“固件库”成为主流。固件库是厂家写好的一组c接口函数,是“标准化的”,开发者只需调用这些函数(即api)就能实现想要的功能。开发效率大大提高。熟练掌握c语言,成为嵌入式工程师的必备技能。这又成为初学者的拦路虎了。
3、调试工具:jtag!这是业界标准,舍不得花60元rmb买个j-link做开发将是非常愚蠢的。51“仿真器”?这个东东是历史了,没用了。
4、stm32入门难!即使是pic、avr,也没那么简单!比如:最简单的io口控制,如果没有事先正确设置io口的传输方向,想点亮个led也得折腾你一天!所以,先从51开始学起,然后过度到stm32,这是一个可行的选择!(貌似很多高校还在开51的课程吧?但51只能作为“课程”,如果认为以后就靠51吃饭了,可就大错特错了!)
5、初学者最关心的问题来了:买个什么样的开发板?我的答案是:无所谓的!尤其51开发板,真得别指着这个板子能带给你全部你想要的东西。板子唯一的作用是做实验。使用开发板的目的是学会编程、尤其是排错(debug)和调试方法,找到一个好教程、遇到一个好老师就很重要了。
最新型的无线血压计,配合安卓手机、苹果手机使用,内置stm32芯片: