本帖最后由 eltonchang2001 于 2022-11-16 09:47 编辑
芯片基础属性时钟篇一时候不知应该从哪里开始写起。不过整体来说的话,这个系列的单片机时钟结构其实并不算复杂。 系统时钟![](https://img-blog.csdnimg.cn/e424f4ef75e4497db931837d2a785779.png)
主要是四个时钟的概念:
![](https://img-blog.csdnimg.cn/54107e0186db43ef9e6394ba82b3e953.png)
外部时钟都是要外接晶振的,内部时钟则是通过RC震荡电路来提供脉冲。
上电的时候默认是都选用内部时钟的。 fsys是系统时钟的意思,可以由高速时钟fH(即HXT或者HIRC其中一个)提供,也可以由低速时钟(即LXT或者LIRC其中一个)提供。高速时钟还提供了多种分频,相对来说比较灵活。 时钟,指令周期,时钟周期合泰的8位单片机大部分都是4T架构的,可以通过数据手册提供的信息推导出来。
![](https://img-blog.csdnimg.cn/24e05bd14ba44fd7a6624f79633016ac.png)
如果系统是16M的话,1个时钟周期则是1/16000000=0.0625us。
指令周期为0.25us的话也就是说明两者关系如下: 指令周期 = 时钟周期 * 4
同理可得,
8M的指令周期是0.5us,时钟周期是0.125us。
12M的指令周期是0.33us,时钟周期是0.08us,这个除不尽。 所有指令都可在 1~3 个指令周期内完成。
这个也是数据手册提到的,一条指令并不是指一句C语言代码,而是将这个C的代码转成的汇编指令,再看用了多少条汇编指令来完成。所以就算是看到的一个简单的C语言程序,转成汇编的话也是几条指令。
![](https://img-blog.csdnimg.cn/852b74542acf4618ac66554ae2df3df9.png)
如图只是把PB4翻转一下,这里用了18条汇编指令,如果是按照8M的时钟,指令周期位0.5us,一个简单的操作用了9us。 ![](https://img-blog.csdnimg.cn/c957cb4258ae4b538a3aaffd02ed98e7.png)
但是如果用异或来完成这个操作,转换成的汇编指令就只有6条,耗时3us。
所以用这种主频较低的单片机就很锻炼程序功底的。很多东西随便都能写出来,但是如果要保证效率,同时兼顾ROM和RAM空间,就要考虑非常多东西,我的意思是,没什么必要不要折腾自己,外面很多资源丰富的单片机
|