目前我们正在学习如何编程AVR微控制器(仅限Ansi C89标准)。部分包含的驱动程序是处理调度的头部,即以不同速率运行任务。我的问题是从文档报价做:“每个任务必须保持自己的状态,用静态局部 变量”void *用于维护状态...(C编程)
这是什么意思呢?他们似乎通过一个void*
到该功能来维持状态,但然后不使用它?
综观文件中的代码,我收集这是他们的意思:
{.func = led_flash_task, .period = TASK_RATE/LED_TASK_RATE, .data = 0}
/* Last term the pointer term */
然而有与阵列中的上述参数运行的函数,它只是充当调度。然后函数led_flash_task
是
static void led_flash_task (__unused__ void *data)
{
static uint8_t state = 0;
led_set (LED1, state); /*Not reall important what this task is */
state = !state; /*Turn the LED on or off */
}
而且从头部
#define __unused__ __attribute__ ((unused))
而且的void *data
传球是为了维护任务的状态?这是什么意思?
感谢您的帮助
+1提到线程安全。鉴于这种情况,以及uC上的多线程操作系统,我会在所有这些模块的顶部包含一个大型横幅:“主要静态状态数据 - 不能从多个线程中调用”。 –