pull/3/head
0x1abin 9 years ago
parent 5e7ef9c5f4
commit c59db9c949

@ -0,0 +1,83 @@
# MultiTimer
## 简介
MultiTimer 是一个软件定时器扩展模块,可无限扩展你所需的定时器任务,取代传统的标志位判断方式, 更优雅更便捷地管理你程序的时间触发时序。
## 使用方法
1.先申请一个定时器管理handle
```
struct Timer timer1;
```
2.初始化定时器对象注册定时器回调处理函数设置定时时间ms循环定时触发时间
```
timer_init(struct Timer* handle, void(*timeout_cb)(), uint32_t timeout, uint32_t repeat);
```
3.启动定时器
```
timer_start(&timer1);
```
4.设置1ms的硬件定时器循环调用 *timer_ticks()* 以提供时间基准
```
void HAL_SYSTICK_Callback(void)
{
timer_ticks();
}
```
5.在主循环调用定时器后台处理函数
```
int main()
{
...
while(1) {
...
timer_loop();
}
}
```
## Examples
```
#include "multi_timer.h"
struct Timer timer1;
struct Timer timer2;
void timer1_callback()
{
printf("timer1 timeout!\r\n");
}
void timer2_callback()
{
printf("timer2 timeout!\r\n");
}
int main()
{
timer_init(&timer1, timer1_callback, 1000, 1000); //1s loop
timer_start(&timer1);
timer_init(&timer2, timer2_callback, 50, 0); //50ms delay
timer_start(&timer2);
while(1) {
timer_loop();
}
}
void HAL_SYSTICK_Callback(void)
{
timer_ticks(); //1ms ticks
}
```

@ -0,0 +1,33 @@
#include "multi_timer.h"
struct Timer timer1;
struct Timer timer2;
void timer1_callback()
{
printf("timer1 timeout!\r\n");
}
void timer2_callback()
{
printf("timer2 timeout!\r\n");
}
int main()
{
timer_init(&timer1, timer1_callback, 1000, 1000); //1s loop
timer_start(&timer1);
timer_init(&timer2, timer2_callback, 50, 0); //50ms delay
timer_start(&timer2);
while(1) {
timer_loop();
}
}
void HAL_SYSTICK_Callback(void)
{
timer_ticks(); //1ms ticks
}

@ -62,7 +62,7 @@ void timer_stop(struct Timer* handle)
} }
/** /**
* @brief background ticks, timer repeat invoking interval 5ms. * @brief main loop.
* @param None. * @param None.
* @retval None * @retval None
*/ */
@ -84,7 +84,7 @@ void timer_loop()
/** /**
* @brief background ticks, timer repeat invoking interval 1ms. * @brief background ticks, timer repeat invoking interval 1ms.
* @param None. * @param None.
* @retval None * @retval None.
*/ */
void timer_ticks() void timer_ticks()
{ {

@ -7,7 +7,6 @@
#define _MULTI_TIMER_H_ #define _MULTI_TIMER_H_
#include "stdint.h" #include "stdint.h"
#include "string.h"
typedef struct Timer { typedef struct Timer {
uint32_t timeout; uint32_t timeout;

Loading…
Cancel
Save