|
粗粗实测了一下stm8s105c6t6的一些执行时间
[复制链接]
做着ds18b20,用的stm8s discover的开发板。
上头载的是 stm8s105c6t6,因为写出来的程序始终没读到想要的结果——能够初始化复位,发现线上的ds18b20.
手头有一个淘宝上买的48快的 逻辑分析仪。其实这玩意还真挺牛的。
一个最好的实证的是,当初我买它也是因为在用51做ds18b20.
当时为了评估一下这个48快的玩意有多管用。
我用at89s52写了一段基本的 IO写高写低的汇编程序。
实际测出来的波形非常漂亮——当时是12M晶振,大家都知道传统51是12分频时钟周期的机器周期。因此但是我看到的可是1us级别的波形,波形非常漂亮,和我写的时序丝毫不差,由此建立了我对这个逻辑分析仪的信心。
这次,用的STM8的HSE,内部16M主频。
为了真切测出执行写IO高低的时间。
我直接写 GPIOX的ODR。
1.在最基本的写的时间下,可以从波形看出,它写一个花费的时间是两个 时钟周期。
2.而调用一个函数,不带参,不带返回,就是一个过程,要12个时钟周期。
如果带一个U8型的,要14个时钟周期。
3.有一个带4个分支的switch-case语句,它在1的基础上对比运行,增加的时钟大概是16个时钟周期。
4.我还试图通过一个带PORT口型和PIN口型的结构体来抽象IO口,但是,它增加的负担也很大。
粗略估计要10个时钟周期。当然,这也许和结构体的内部结构有关系。
把这些值写在这里,是为了一个参考。
另外,要进一步,因为实际上ds18b20的单总线设计的相当好,它回避了对时序的敏感要求。
比如说,在上述时间里,很多的负担,比如结构体 比如 case都可以回避,但是函数开销则很难。
而我记得写一个位的时间间隔可以是无限长,而通过一个短暂的写低启动一个新写时间slot。
所以回头我要再仔细看看它的时序,尽量让它在1M下满足要求——实际上这和51的12M主频是一回事了,所以一定是可以做到的。
之所以要1M,是因为这是一个比较低的主频,而且后续要做sht10,它是IIC总线,IIC总线有两个标准时钟模式,1M普通模式,4M高速模式,我也是为了两者兼容。
|
|