共2条
1/1 1 跳转至页
如何精确判定软体的运行时间?
大多数单片机都有看门狗定时器功能(WDT,Watch Dog Timer)以避免程序跑错。HOLTEK有一款基本I/O型单片机--HT48R05A-1,我们就以它为例做个说明吧。
首先了解一下WDT的基本结构,它其实是一个定时器,所谓的喂狗是指将此定时器清零。喂狗分为软件和硬件两种方法。软件喂狗就是用指令来清除WDT,即CLR WDT;硬件喂狗就是硬件复位RESET。当定时器溢出时,会造成WDT复位,也就是我们常说的看门狗起作用了。在程序正常执行时,我们并不希望WDT复位,所以要在看门狗溢出之前使用软件指令喂狗,也就是要计算WDT相隔多久时间会溢出一次。HT48R05A-1的WDT溢出时间计算公式是:256*Div*Tclock。其中Div是指wdt预分频数1~128,Tclock是指时钟来源周期。如果使用内部RC振荡作为WDT的时钟来源(RC时钟周期为65us/5V),最大的WDT溢出时间为2.1秒。
当我们得到了WDT溢出时间Twdt后,一般选择在Twdt/2左右的时间进行喂狗,以保证看门狗不会溢出,同时喂狗次数不会过多。
软件运行时间是根据不同的运行路线来决定的,如果可以预见软件运行的路线,那么可以根据T=n*T1来计算软件的运行时间。n是指运行的机器周期数,T1是指机器周期。HOLTEK单片机是RISC结构,大部分指令由一个机器周期组成,只需要知道软件运行了多少条指令,就可以算出运行时间了。HOLTEK的编译软件HT-IDE3000中,就有计算运行时间的工具。但是对于CISC结构的单片机,一条指令可以由若干个机器周期组成,那么就需要根据具体执行的指令来计算了。
共2条
1/1 1 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 片外存储Flash使用方法(Arduino IDE环境)被打赏¥22元 | |
| 三分钟快速上手ESP-NOW(ArduinoIDE环境)被打赏¥23元 | |
| 【S32K3XX】LPSPI参数配置说明被打赏¥21元 | |
| 在WT9932C61-TINY上实现超声波测距被打赏¥22元 | |
| 基于WT9932C61-TINY的环境构建及OLED屏驱动测试被打赏¥20元 | |
| 【S32K3XX】Core-to-Core 中断使用被打赏¥21元 | |
| 「AI编程记录--含源码」用一晚上的时间写一个esp32的示波器被打赏¥19元 | |
| STM32C0116DK开发探索记(3)被打赏¥30元 | |
| STM32C0116DK开发探索记(2)被打赏¥24元 | |
| STM32C0116DK开发探索记(1)被打赏¥29元 | |
我要赚赏金
