现在的搞法
typedef struct //毫秒延时结构体
{
uint8_t En;
uint32_t Cnt;
}DelayMs_TypeDef;
DelayMs_TypeDef msTimer1;
//初始化定时器
msTimer1.En = 1;
msTimer1.Cnt = 2000; //2000ms
//计时
if(msTimer1.En==1)
{
if(--msTimer1.Cnt==0)
{
msTimer1.En = 0;
}
//这里定时器时间到执行一系列动作
}
这样如果定时器一多,好像就比较繁杂了,初始化和计时又不在同一个地方,求一简单的写法
如:将上诉过程全部封装起来,用一个函数 func1 实现初始化和计时,同时函数参数里面给另外一个函数 func2 的指针 ,func2 函数用来执行定时器时间到之后的动作,并且func2需要传参进去
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
https://github.com/GorgonMeducer ... time/multiple_delay
范例(以及范例工程)看这里:
https://github.com/GorgonMeducer ... er/example/system.c
你这种写法,SysTick_Timer溢出定时不就会错乱几个节拍吗?
是的,会出现这种情况,不过需要四十九天左右的时间
我之前的应用没有长时间开机超过这个时间的,所以一直就采用这个写法了
如果改成uint64_t会更好,基本不用考虑溢出问题了
一周热门 更多>