高级会员

- 积分
- 727
- 金钱
- 727
- 注册时间
- 2016-5-27
- 在线时间
- 91 小时
|
发表于 2019-5-20 19:33:10
|
显示全部楼层
给你一个我的程序参考
中断函数 (T3可定为1ms 或 10ms)
#define T3MAXTIME 0xfffe
u16 t3TimerCount;
void TIM3_IRQHandler(void)
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM3,TIM_FLAG_Update);
if(t3TimerCount++>=T3MAXTIME) t3TimerCount=0;
}
}
再做个判断延时的函数
u8 Delay_Short (u16 *pClock,u16 bTimeNum)
{
u16 bTemp=0;
if(*pClock != 0)
{
if(*pClock != t3TimerCount)
{
if(t3TimerCount>*pClock) bTemp = t3TimerCount-*pClock;
else bTemp = t3TimerCount+(T3MAXTIME-*pClock);
if(bTemp >= bTimeNum)
{
*pClock = 0;
return 1;
}
}
}
else *pClock = t3TimerCount;
return 0;
}
然后在main中
void main()
{
u16 Clock=0;
......
while(1)
{
if(Delay_Short(&iClock,60000)) //T3定的1ms中断 60000=1分钟,把T3定为10ms,5000就是5分钟
{
// 这里写你要干的事
}
}
}
另外还可以把Clock定义为u32,那么可以想要多长就可以多长。 |
|