带着问题学习:
1.什么是单片机?
2.单片机能做什么呢?
3.如何使用单片机?
4.如何学习单片机?
1.什么是单片机?
单片机全称叫做单片微型计算机,顾名思义单芯片的微型计算机。由此可以联想一下计算机的组成,一般计算机由CPU、RAM、ROM、输入输出设备组成。在PC上,一般会拆分独立的模块,具体的硬件由CPU、存储硬盘、SSD、键鼠、显示器等等。而在单片机上面全部集成在一块芯片上。故此简称单片机,英文简称MCU。下文可能会直接使用MCU代替单片机。
2.单片机能做什么呢?
从单片机的组成上来看,主要功能就是CPU的功能,处理指令,计算数据。指令就是程序 code,数据就是data,然后是加减程序的运算。
RAM:主要特点就是掉电容易丢失,不能用来保存数据
ROM:用于存储数据,掉电不丢失
输入输出:一颗单片机有很多管脚,这些管脚有做通讯、有做ADC/DAC、中断、普通IO使用。
3.如何使用单片机?
既然单片机里面有CPU,所以只需要写一段程序,最终编译生成bin或hex文件,烧录到MCU内部,让其运行起来。
操作硬件离不开操作寄存器地址,而C/C++里面的指针可以直接操作地址,所以一般做硬件的公司C/C++都是首选的开发语言,尤其C语言。这块后面C语言的专题会展开讲解。
会C语言还不完全就是能写MCU的程序,需要熟悉MCU,才能去编写MCU的程序。
说一个题外话:生活有很多接口,而程序员的一部分作用就是将这些接口对接起来。比如会了C语言需要了解MCU寄存器控制方式,MCU的属性等等,才能上手写MCU程序;假如要控制个电机,需要了解电机的控制方式,再结合MCU去真正的实现电机控制。所以很多做MCU开发的人员,MCU的熟练掌握只是其中一项,还要有一些项目经验。有了项目经验的加持,处理问题会更从容,效率更高,踩得坑会少,这样的人才是对企业有价值的人。
很多初学者学习单片机,可能觉得把单片机的基础例程、基本外设跑一边就觉的自己是一个单片机工程师了,其实不然。所以本教程也着重于这一点,会针对的做一些单片机的实战项目,让大家能够融会贯通的使用单片机开发项目。
4.如何学习单片机?
单片机这个工具对于有的人来说很困难,对于有的人来说很简单,看个人水品的。我这里介绍我的单片机学习方法,不一定适合你,仅供参考。
上面已经说了,单片机的开发主要是使用C/C++开发的,所以从软件开发的角度来说,打好基础就很关键,在开篇也有提到一些。
基础知识:
C语言:基本语法、数据类型结构体、指针、字符串、文件、预处理、堆栈内存。
数据结构:在单片机中比较常用的一些数据结构:队列、链表,还有一些不常用的树、图、栈等等,最起码将队列和链表的用法以及相关算法要掌握了。如果对算法比较感兴趣的同学也可以去力扣上面找一些算法题,去一些硬件大厂这些知识都是必要的。
编程提高知识
设计思想:虽然C语言是一种面向过程的编程语言,不妨碍我们采用面向对象的设计思想去编程。可以去学一门面向对象的语言体会一下面向对象的设计思想,比如C++\Java。
设计模式、编程规范、数据驱动编程思想,这些找一些书籍或者网上的文章看一看。