历史上的今天
今天是:2025年01月18日(星期六)
2020年01月18日 | 玩转单片机STM8(一)
2020-01-18 来源:eefocus
最初从单片机学习整个计算机系统是个非常正常的阶梯学习方法。因为直到今天,计算机系统的那些事,也没逃离这个最基础的架构。可惜我当年直接跳过了这个过程,直接从intel 486学起的,那时每天带着无数的疑问在艰难的前行。
单片机不一定要学习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发布了标准外设库函数,使你不再需要关心寄存器细节。但如果你是单片机初学者,我建议阅读标准外设库代码,以及阅读芯片手册。当你阅读到一定量以后,你会找到市面上所有芯片的共性,以及明白他们设计的优缺点。做到心中有数,甚至不看手册,就能八九不离十的猜到任意芯片的寄存器设计,这就到了,驱动程序最高境界。
史海拾趣
|
30MHzp频段无线收发简单电路的资料比较少,是因为这个频段传输速率受到很大的限制.。这个收发电路使用3V供电,使用直径34MM的电感线圈作为收发的共用天线,使用半双工收发,距离可以到数十米远,现把电路传上,仅共参考。 发现问题及时交流。… 查看全部问答> |
|
pxa270wince下大页面nandflash驱动的问题? 我最近在做pxa270wince下大页面nandflash的驱动,更改了read,write函数后,在控制面板里可以看到这个设备,容量显示也是正确的,可是一格式化,就在FMD_SetBlockStatus中把每一个block立刻mark成bad,不知道该如何解决,有做过这个的大大给我讲一下 ...… 查看全部问答> |
|
想在wince下用内存映射文件的方式读文件,这样会快些,在VC上试过了,可行.所以想移动wince下,但现在有个问题就是在CreateFileMapping就过不去了,返回为空.有人做过的指点下吧..多谢 & ...… 查看全部问答> |
|
几周来学习STM32的小实验:用STM32内置的高速ADC实现简易示波 这几周一直在埋头学习STM32,在论坛上学到了不少知识,得到了大家的帮助,这里衷心的向大家表示感谢,尤其是特别要感谢论坛上GRANT_JX大大:)正是有幸得到了他热心相赠的STM32F103VB芯片以及评估版的PCB,我才能够顺 ...… 查看全部问答> |




