精确到微秒的倒计时代码

<DIV id=time_conter
style="DISPLAY: none; bgcolor:#ccffff; FONT-WEIGHT: bold; WIDTH: 100%; COLOR: #cc0000; PADDING-TOP: 150px; FONT-FAMILY: arial; TEXT-ALIGN: center;">
 
<P style="font-size:12px;">离国庆节倒计时还有</P>
 
 
<DIV style="FONT-SIZE: 38px"><SPAN id=h></SPAN>小时<SPAN id=m></SPAN>分<SPAN
id=s></SPAN>秒<SPAN id=ms></SPAN>微秒</DIV>
</DIV>
 
 
<SCRIPT language=javascript>
function n2(n)
{
if(n < 10)return "0" + n.toString();
return n.toString();
}
 
function n3(n)
{
if(n < 10)return "00" + n.toString();
if(n < 100)return "0" + n.toString();
return n.toString();
}
 
function setLeft()
{
var d1 = new Date();
var n;
 
n = (d.getTime() - d1.getTime());
document.getElementById("ms").innerHTML = n3(n % 1000);
n = (n - n % 1000) / 1000;
document.getElementById("s").innerHTML = n2(n % 60);
n = (n - n % 60) / 60;
document.getElementById("m").innerHTML = n2(n % 60);
n = (n - n % 60) / 60;
document.getElementById("h").innerHTML = n2(n);
 
setTimeout("setLeft();", 1);
}
 
var a, a1, a2;
a = unescape("2009-10-1 00:00:00").split(" ");
if(a.length > 1)
{
document.getElementById("time_conter").style.display="";
a1 = a[0].split("-");
a2 = a[1].split(":");
 
var d = new Date(a1[0], a1[1] - 1, a1[2], a2[0], a2[1]);
 
setLeft();
}
</SCRIPT>

转载于:https://www.cnblogs.com/silverLee/archive/2009/11/05/1596555.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在STM32F103微控制器中,滴答定时器是一个基于硬件的计时器,可以用于进行微秒精确计时。它的计时单位可以根据系统的时钟频率进行调整。 要实现微秒精确计时,首先需要初始化滴答定时器。可以使用SysTick_Config函数来配置SysTick定时器的时钟和重载值。 在初始化完成后,可以使用SysTick->VAL来获取当前计数器的数值。该寄存器的值是一个递减的计数器,它在滴答定时器的时钟周期内减少。默认情况下,滴答定时器的时钟频率等于系统时钟频率的1/8。 为了实现微秒级计时,可以通过计算当前计数器的值与重载值的差来获取经过的滴答定时器周期数。由于滴答定时器的时钟频率为系统时钟频率的1/8,因此可以通过简单的乘法运算将周期数转换为微秒。 例如,如果系统时钟为72MHz,滴答定时器的重载值为72-1(因为计数器从0开始),那么可以使用以下代码来进行微秒计时: ```c void delay_us(uint32_t us) { uint32_t start = SysTick->VAL; while((SysTick->VAL - start) < (us * 9)); //将周期数乘以9来转换为微秒 } ``` 在上述代码中,先记录开始计数器的数值,然后在循环中检查当前计数器的值与开始计数器的差,当差值大于等于所需的微秒数乘以9时,循环结束。这样就实现了微秒级的精确计时。 需要注意的是,滴答定时器的计数器是一个32位的寄存器,在超过最大计数值后会回绕为0。因此,在进行微秒计时时,需要考虑到计数器的溢出情况,并根据具体的应用场景进行处理。 希望以上信息对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值