stm8s电机库vtimer_SetTimer()函数的使用
2017-06-21 20:45
302 查看
作用就是在延时msec的时间后,调用pCallback指向的函数。
注:这个延时并不是在原地等着延时完毕再去调用,和deley_ms()这样的延时是有区别的。
函数原型在MC_vtimer.c文件中
void vtimer_SetTimer(VtimerName_t name,timer_res_t msec,void* pCallback)
{
sVtimer[name].msec = msec;
sVtimer[name].pCallback = pCallback;
}
第一眼看到这个函数原型的时候还是一脸懵逼,这都是啥?
实际上电机库中还有一个定时器是专门与之相关的。dev_vtimerInit()初始化函数中将TIM6设置为定时器中断,中断函数如下:
@far @interrupt void TIM6_UPD_OVF_TRG_IRQHandler(void)
{
TIM6_ClearITPendingBit(TIM6_IT_UPDATE);
vtimer_UpdateHandler();
return;
}/*
在中断中会调用vtimer_UpdateHandler();这个函数,关键的地方来了,这个函数原型也在MC_vtimer.c文件中。函数原型如下:
void vtimer_UpdateHandler(void)
{
//Enter each DELTAT_MS ms
u8 i;
for (i = 0; i < VTIMER_NUM; i++)
{
if (sVtimer[i].msec != 0)
{
sVtimer[i].msec--;
if (sVtimer[i].pCallback != 0)
{
if (sVtimer[i].msec == 0)
{
((PFN_Callback_t)sVtimer[i].pCallback)();
}
}
}
}
}
这下弄明白了吧,定时器6实际上被当做一个心跳作用了(不知道这样形容对不对),每跳一次就进来做一下for循环,直到msec等于0,(PS:这个msec就是你自己设置的延时时间),然后调用你设置好的要去调用的函数。
注:这个延时并不是在原地等着延时完毕再去调用,和deley_ms()这样的延时是有区别的。
函数原型在MC_vtimer.c文件中
void vtimer_SetTimer(VtimerName_t name,timer_res_t msec,void* pCallback)
{
sVtimer[name].msec = msec;
sVtimer[name].pCallback = pCallback;
}
第一眼看到这个函数原型的时候还是一脸懵逼,这都是啥?
实际上电机库中还有一个定时器是专门与之相关的。dev_vtimerInit()初始化函数中将TIM6设置为定时器中断,中断函数如下:
@far @interrupt void TIM6_UPD_OVF_TRG_IRQHandler(void)
{
TIM6_ClearITPendingBit(TIM6_IT_UPDATE);
vtimer_UpdateHandler();
return;
}/*
在中断中会调用vtimer_UpdateHandler();这个函数,关键的地方来了,这个函数原型也在MC_vtimer.c文件中。函数原型如下:
void vtimer_UpdateHandler(void)
{
//Enter each DELTAT_MS ms
u8 i;
for (i = 0; i < VTIMER_NUM; i++)
{
if (sVtimer[i].msec != 0)
{
sVtimer[i].msec--;
if (sVtimer[i].pCallback != 0)
{
if (sVtimer[i].msec == 0)
{
((PFN_Callback_t)sVtimer[i].pCallback)();
}
}
}
}
}
这下弄明白了吧,定时器6实际上被当做一个心跳作用了(不知道这样形容对不对),每跳一次就进来做一下for循环,直到msec等于0,(PS:这个msec就是你自己设置的延时时间),然后调用你设置好的要去调用的函数。
相关文章推荐
- VC++中通过SetTimer函数创建并使用定时器
- SetTimer 函数在控制台应用程序中的应用 (在控制台应用程序中使用定时器)
- SetTimer函数的使用
- SetTimer()函数使用
- SetTimer()函数使用
- SetTimer函数的使用(转)
- 使用SetTimer函数为Delphi的Win控件设置时钟
- 我的理解:在有返回值的函数内是否应该使用异常处理?欢迎大家斧正
- 创建和使用不定数目参数的函数
- 使用未公开关键字在 C# 中导入外部 printf 等参数数量可变函数
- VC中使用低级音频函数WaveX播放声音文件
- 使用Windows API函数显示打开文件对话框
- 事件处理函数OnEnter OnExit 使用一例
- 大胆使用指向成员函数的指针
- 使用未公开关键字在 C# 中导入外部 printf 等参数数量可变函数 [1] CLR 支持
- 钩子技术介绍及函数使用
- 刚才遇到了关于C#使用外部DLL函数上的char*的问题。
- Effective STL: Item 44:优先使用与泛型算法同名的成员函数
- ADO & ADO.NET中使用存储过程的两个共用的函数
- 内存分配——realloc()函数的使用