关于待机唤醒实验中WK_UP按下3s 是如何实现计时的问题

2019-07-21 05:09发布

在看待机唤醒的例程的时候,
u8 Check_WKUP(void)
{
u8 t=0; //记录按下的时间
LED0=0; //亮灯DS0
while(1)
{
  if(WKUP_KD)
  {
   t++;   //已经按下了
   delay_ms(30);
   if(t>=100)  //按下超过3秒钟
   {
    LED0=0;   //点亮DS0
    return 1;  //按下3s以上了
   }
  }else
  {
   LED0=1;
   return 0; //按下不足3秒
  }
}
}
所标注部分是怎么用t实现计时3s的啊?不是延迟了30ms吗,怎么变成3s的?
是要计算这个循环的执行时间吗?如果是的话又是怎么计算循环执行时间的呢?
因为是初学者,有很多简单问题还不太明白,在网上找了找也没有找到,希望大家不要嫌弃
感谢各位的解答!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
MrXiong
2019-07-21 11:07
其实这个挺好理解的,你想一下,当你按下按键时,程序就会跑到判断区域,t就会递增,首先查看原理图你会知道WKUP_KD这个按键是带了上拉,也就是按键后呈高电平,只要你按键后,就会进入if(WKUP_KD)的判断,然后你一直按着,那么t就一直递增,但你按的时间长的时候t的值势必会一直递增,那么值就自然会变大,30ms再加上100次循环,那么自然也就是3s了!

一周热门 更多>