STC32F12 到底能够执行速度有多快?

STC32F12 到底速度有多快?

 

01 行速度


一、前言

  昨天测试单片机STC32F软件的时候, 碰到一个问题。 也就是当设置单片机 IRC 频率高于 32MHz 的时候, 单片机不运行。  最后才发现是在 程序初始化的时候 设置 WTST 寄存器引起的。 ·这个寄存器是单片机到FLASH取指令所需要的等待时间。 下面对此进行测试。

GM1686974028_1280_800.MPG|_-3

二、测试结果

1、WTST寄存器

  这里将 WTST的设置命令去除,  在程序里不在设置 WTST,  在程序运行前, 将WTST寄存器的缺省值输出。 这是输出信息,  可以看到WTST被设置为 2。

GM1686970825_1280_800.MPG|_-5

  在 STC ISP 程序中,  单片机 IRC 运行频率选择 64 MHz,  此时运行在单片机最高速状态下。  在主程序中, 通过 P2.0 输出一个方波信号。  测量该信号的波形可以判断程序是否运行,   并且可以测量程序运行的时间 延迟。  通过修改 WTST的值,  可以看到, 只要当WTST 的值大于等于 1时, STC32F 单片机才能够运行在 64MHz下, ·如果 WTST的值设置等于0, 在64MHz下, STC32F无法运行。 -只有当 IRC 频率小于等于 32MHz时, STC32F才能够运行。

GM1686971552_1280_800.MPG|_-8

2、连续端口操作命令

  在主程序中, LED 对应的 P2.0, 通过连续的 ON,OFF 宏指令改变它的状态。  利用示波器测量 P2.0 电压波形,  可以测量指令执行时间。  这是在主频 64MHz, WTST等于1 的情况下,测量的结果。  这里测量端口上下改变 6 次状态之间的时间,  总时间为 140 ns。 执行了 ON, OFF 六次指令。  对应每次指令执行时间大约 23.3 ns。 是 64MHz下指令周期的1.5倍。  这说明这六条指令 使用了9个指令时间。 ·从另一方面说明了, 在这个过程中存在着三次取指等待时间。

GM1686972371_1280_800.MPG|_-11

  这里将 WTST 的 取指改为 2,  重新测量 P2.0 的波形,  可以看到它低电平明显增加了。 在这三个脉冲之间的时间间隔大约为 148ns, 对应着 5条指令, 执行时间长度大约为 64MHz 下的周期的 9.5倍。 这说明两点, 一是WTST可以影响每条指令的实际执行时钟数字, 二是这个增加时钟数字似乎还存在着半个时钟周期的情况。 具体原因不详。

GM1686972879_1280_800.MPG|_-7

3、最大等待时间

  在 STC32F 数据手册上,  对于WTST数值可以设置等待 0 到 7 个时钟,  后面写作保留。  那么问题来了, 这个保留是否是指不能够设置呢?  下面测试一下 WTST最大可以设置多少,  这里将 WTST设置为 0xff。 重新测量连续端口操作命令,  可以看到低电平的时间增加到 4 微秒。 它等于 64 MHz 时钟周期的 256 倍。  可以看出 STC32F是在两次命令下才对外取指一次, 延迟了 256 个时钟周期。 这只是个测试, 谁也不会真的浪费这么多的等待周期。

GM1686973848_1280_800.MPG|_-11

 

论 ※


  文对于 STC32F单片机在时钟64MHz下的速度进行测量,  通过实际测试可以看到 WTST 只能够取大于等于 1 以上的数值。  如果等 0 则只能在 时钟 32MHz 以内 执行。  那么问题来了, 虽然STC32F号称单指令单片机, 时钟可以高达 64MHz,  但取值需要等待至少 1 个指令周期以上, ·那么单片机实际指令速度只能小于 32 MIPS。 这个64MHz的时钟速度的意义又在哪里呢?

GM1686973209_1280_800.MPG|_-6


■ 相关文献链接:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卓晴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值