一直在用但并没用深入的去了解,就好像你有一个网友平时经常聊条,但是彼此不了解各自的内心世界,这是一种尴尬只是一种不负责任。再加上感觉自己要老了记性也大不如以前了,好记性不如烂笔头,还是写下来吧,以后不懂了
不用问别人问问自己就锚索顿开了
。
剩下的时日不多了,赶紧搞起来吧。OSTaskCreate() 嗨man,知道干嘛的吧。
void OSTaskCreate (OS_TCB *p_tcb, //任务控制块指针
CPU_CHAR *p_name, //命名任务
OS_TASK_PTR p_task, //任务函数
void *p_arg, //传递给任务函数的参数
OS_PRIO prio, //任务优先级
CPU_STK *p_stk_base, //任务堆栈基地址
CPU_STK_SIZE stk_limit, //堆栈的剩余限值
CPU_STK_SIZE stk_size, //堆栈大小
OS_MSG_QTY q_size, //任务消息容量
OS_TICK time_quanta, //时间片
void *p_ext, //任务扩展
OS_OPT opt, //选项
OS_ERR *p_err) //返回错误类型
参数解释, *p_tcb 任务控制块指针,看名字很高大上很难直白的理解。 OS_TCB 就是一个结构体 struct os_tcb {};可以查看内核源码,这个结构体主要记录了与任务相关的信息数据 如结构体首地址存放了 CPU_STK *StkPtr; 当前栈顶指针。拿stm32f103来讲这个结构体就是一个内存空间在IRAM1指示的地址空间里,定义的位置不一样会影响运行时的内存地址也就是影响栈顶指针。我们要写的函数就是第三个参数就是任务,烧写程序后任务就放在IROM1的地址空间里。