新手上路
- 积分
- 45
- 金钱
- 45
- 注册时间
- 2019-6-4
- 在线时间
- 9 小时
|
1金钱
static void runLedseq( xTimerHandle xTimer )
{
bool leave = false;
const ledseq_t *step;
led_e led = (led_e)pvTimerGetTimerID(xTimer);
if (!ledseqEnabled) return;
while(!leave)
{
int prio = activeSeq[led];
if (prio == LEDSEQ_STOP)
return;
step = &sequences[prio][state[led][prio]];
state[led][prio]++;
xSemaphoreTake(ledseqSem, portMAX_DELAY);
switch(step->action)
{
case LEDSEQ_LOOP:
state[led][prio] = 0;
break;
case LEDSEQ_STOP:
state[led][prio] = LEDSEQ_STOP;
updateActive(led);
break;
default: /*LED定时*/
ledSet(led, step->value); /*定时step->value*/
if (step->action == 0)
break;
xTimerChangePeriod(xTimer, step->action, 0);
xTimerStart(xTimer, 0);
leave=true;
break;
}
xSemaphoreGive(ledseqSem);
}
我想不明白这个文件是怎么确定led的逻辑的,想大佬解释一下,卡了很久了
|
|