小编Lhh*_*h92的帖子

void*用于维持状态...(C编程)

目前我们正在学习如何编程AVR微控制器(仅限Ansi C89标准).部分包含的驱动程序是一个标题,用于处理调度,即以不同的速率运行任务.我的问题是与文档中的引用有关:

"每个任务必须通过使用静态局部 变量来维护自己的状态."

那是什么意思呢?他们似乎传递void*给维持状态的功能但是不使用它?

看一下我收集的文件中的代码,这就是他们的意思:

{.func = led_flash_task, .period = TASK_RATE / LED_TASK_RATE, .data = 0} 
/* Last term the pointer term */
Run Code Online (Sandbox Code Playgroud)

有一个函数在数组中使用上述参数运行,但它只作为调度程序.然后功能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 */
}
Run Code Online (Sandbox Code Playgroud)

并从标题

#define  __unused__ __attribute__ ((unused))
Run Code Online (Sandbox Code Playgroud)

而传递void *data是为了维持任务的状态?这是什么意思?

谢谢您的帮助

c microcontroller avr void

6
推荐指数
1
解决办法
445
查看次数

标签 统计

avr ×1

c ×1

microcontroller ×1

void ×1