关于adk LED闪烁例程的理解
怎么理解这个函数,怎么是运行的函数自己呢?
MessageSendLater(t, 0, 0, DELAY1);
看起来进去main函数后,led_controller1送入底层运行,只是不明白MessageSendLater(t, 0, 0, DELAY1)怎么实现函数无限循环了。没看出来t就是led_controller1。
static void led_controller1(Task t, MessageId id, Message payload)
{
PioSet32(LED1, (PioGet32() ^ LED1));
printf("LED1 PioGet32() = %ld\n", PioGet32() & LED1);
MessageSendLater(t, 0, 0, DELAY1);
}
/* static void led_controller2(Task t, MessageId id, Message payload)
{
PioSet32(LED2, (PioGet32() ^ LED2));
printf("LED2 PioGet32() = %ld\n", PioGet32() & LED2);
MessageSendLater(t, 0, 0, DELAY2);
} */
static TaskData led_controller1_task = {led_controller1};
/* static TaskData led_controller2_task = {led_controller2}; */
int main(void)
{
PioSetDir32(0xFF, 0xFF); /* Set all PIO to be output */
PioSet32(0xFF, 0); /* Set all PIO off (0) */
MessageSend(&led_controller1_task, 0, 0);
/* MessageSend(&led_controller2_task, 0, 0); */
MessageLoop();
return 0;
}
你函数里又调用延后调用这个函数了,自己延后发消息给自己 qq635822782 发表于 2020-3-10 18:28
你函数里又调用延后调用这个函数了,自己延后发消息给自己
怎么理解延时函数里面的t就是函数自己呢? MessageSend(&led_controller1_task, 0, 0);这里你自己传的函数指针啊&led_controller1_task
页:
[1]