用函数名做变量名?

[复制链接]
1013|5
 楼主| 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);
……
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部