单片机不一定要学习51,实在随便选一家都是一样的。从实际出发要选,便宜的,外围器件少的,里面功能的,所以为大家挑选了STM8L。
STM8L是个8位单片机,我在论坛中的确看到一些小兄弟在问8位是怎么回事?我至少欣慰这位兄弟确实在思考。常日我说的8位是指CPU打算时,详细点说,不如说加法,是指两个8位二进制数相加的能力。同理,32位,便是32位二进制数相加。

其余,也是最难的部分,这8位单片机的寻范围可不一定是8位的,这点要把稳。寻址范围,听不懂?不如说是地址范围。想象一下,8根地址线,每根线上用电压高或者低表示1和0,那么这8根线,一共能表示多少个数字,你可以一个个数,当然最好是打算,2的8次方种组合。那也就算256个数字,每个数字表示一个地址访问一个字节的数据,也就只能访问256个字节。这个空间太小了。以是意法半导体是不会如此设计的,那就增加地址线,增到16根地址线,2的16次方,即是65536个地址。我记得有门课程《打算机事理》,本是本很实用的书,可惜老师讲的太烂,毫无吸引力。
65536是64KB,对付STM8L151K4T6,拥有16KB flash,以及2KB ram是足够寻址了。单片机的全体地址空间常日很大略,便是一个连续的线性空间0x0000~0xFFFF。只是个中分散着一块块的内存,有的是flash,有的是ram,有的是register set,有的是ROM。仅此而已,别以为有多么繁芜。
Flash和Ram是存储代码和数据,包括堆栈。
Registers便是软件掌握外设的唯一的接口。写驱动程序便是和这些寄存器打交道。每家芯片的寄存器的设计都不同,你须要阅读厂商的大量资料,一样平常是英文的。
光彩的是ST发布了标准外设库函数,使你不再须要关心寄存器细节。但如果你是单片机初学者,我建议阅读标准外设库代码,以及阅读芯片手册。当你阅读到一定量往后,你会找到市情上所有芯片的共性,以及明白他们设计的优缺陷。做到心中有数,乃至不看手册,就能八九不离十的猜到任意芯片的寄存器设计,这就到了,驱动程序最高境界。
现在学习STM8,由于ST已经供应标准驱动库函数,对C措辞能力哀求已经很弱了,只要上过大学C措辞课程,都可以进行编程。
但是我建议大家把C措辞学深点。它的核心便是指针,玩转指针,就玩懂了C措辞。它的其他功能和其他措辞没有任何差别。只是逻辑掌握而已。能把C的指针真正弄懂,你还不得不学习一下机器措辞,万变不离其宗。见多识广,千万不要疑惑自己大脑的影象能力,也不要认为多学会学混,我的履历是,学得越多,只会让你你看得更明白。
STM8系统的机器指令的长度是8位的。固定长度,你可以大致看看每个Bit是什么意思。这都是工程师精确设计的,也是人设计的。别人能做到的,你为什么弗成?多问问自己。
机器指令的先容,一定会花大篇幅先容寻址。你可以想象,机器天下里,你的资源,实在只有内存和寄存器。内存是靠地址的,才能知道访问的是哪一块,而寄存器便是靠唯一的名字访问,当然外部设备的地址,也是靠地址访问。以是可以推断,机器指令手册,必须先容,如何把寄存器的内容搬移到内存,或者如何把内存特定地址的内容搬移到寄存器。更有可能你是期望把直接的一个数字放入寄存器。等等的各种组合。不是任意一条连线都是被许可的,一样平常都不会支持直接把一条内存,搬移到另一条内存。中间须要寄存器暂存一下。等等的规律,你读多了自然会懂。
不过上手STM8不须要懂这些,一样可以玩。它内置bootROM,一启动,当跳进你的main函数时,该做的初始化已经完成,你直接可以开始操作GPIO了,clock如果没有额外须要,不须要配置,内置的16MHz的晶振,默认8分频,2MHz用来跑core,也便是运行你的程序。STM8L151K4T6最小系统板,我会供应一个最小的工程文件,里面包含一个操作GPIO的代码,也便是让开发板上的 LED灯点亮,并且闪烁。基本的逻辑是拉高,拉低交替,中间加延时,这里的延时,用的最大略的的去世循环delay,代码逻辑大略,便是不足环保。去世循环是靠电耗换来的,但是这种代码有时候也是必要的,上MHz的CPU,运行每条指令都是ns级别的,如果你须要的delay也是ns级别的,那么去世循环确实便是最好的选择。










