wo142857 发表于 2016-12-9 22:18

用函数名做变量名?

菜鸟求大神指点,不知道这个是怎么样执行。比如这个函数:
OSTaskCreateExt(AppTaskStart, (void *) 0)
void AppTaskStart(void *p_arg)

函数里面又包含函数名,这个是多任务吗??里面是不是可以包括多个任务,比如这样

OSTaskCreate(AppTaskStart, (void *) 0,AppTaskStart1,AppTaskStart2,AppTaskStart3)

每个任务独立执行,如果我要写一个串口通信,一个网络通信,一个本地任务,是不是可以这样写:

OSTaskCreate(UART_TASK, NET_TASK,Local_TASK),然后可以通过约束条件来选择执行哪个任务

还有就是(void *) 0 它的作用是什么,为什么要加上它!

wo142857 发表于 2016-12-9 22:20

这个是STM32的底层代码,看见别人这样写的。。。。。。求大神指点啊,万分感谢!!

aozima 发表于 2016-12-9 22:25

函数指针,
参数类型强制转换

UCOS的代码,与STM32没有任何直接关系。

airwill 发表于 2016-12-10 13:43

一个 OSTaskCreate() 函数, 只能创建一个任务.
一旦创建, 任务就进入就绪状态. 等待调度器的调度

freeelectron 发表于 2016-12-10 17:03

函数指针,这种大多数协议栈里面都是这种写法

computer00 发表于 2016-12-15 08:51

OSTaskCreateExt(AppTaskStart, (void *) 0); //一次只能创建一个任务,这个任务要执行的函数为AppTaskStart,传递给它的参数就是后面的0。

void AppTaskStart(void *p_arg) { //这个是实际任务要执行的函数,参数p_arg可以在OSTaskCreateExt创建这个任务时的后面一个参数传递进来
}

如果你要创建多个任务,多调几次OSTaskCreateExt函数就好了:
OSTaskCreateExt(func1, arg1);
OSTaskCreateExt(func2, arg2);
OSTaskCreateExt(func3, arg3);
……
页: [1]
查看完整版本: 用函数名做变量名?