forked from MermaidFAR/H7_BSP
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathalg_pulse.cpp
More file actions
32 lines (29 loc) · 835 Bytes
/
Copy pathalg_pulse.cpp
File metadata and controls
32 lines (29 loc) · 835 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include "alg_pulse.h"
#include <stdarg.h>
#include <stdint.h>
/** @brief pulse() 内部状态, 记录当前 timesmode 计数 */
timesmode_t tick;
/**
* @brief 定时器回调注册器 (可变参数)
*
* @param timesnum 调用周期 (ms), 1 表示每 ms 都调
* @param Number 注册的函数指针数量
* @param ... 可变数量的 void (*)(void) 函数指针
*
* @note 内部通过 tick.timesmode 计数取模实现分频调度
*/
void pulse(uint8_t timesnum, const int& Number, ...)
{
va_list callback_ptr;
tick.timesnum = timesnum;
va_start(callback_ptr, Number);
for (int i = 0; i < Number; i++)
{
tick.task = (void (*)(void)) va_arg(callback_ptr, int);
if (tick.timesmode % tick.timesnum == 0)
{
tick.task();
}
}
va_end(callback_ptr);
}