内容纲要
为提升学习效果,建议在阅读完题目后先自行尝试解答。
等待解答完毕之后,再与参考答案对照。参考答案并不一定准确,欢迎你提供自己不同的答案!
思考题一(答案获取码:0132)
我们知道,创建任务时会向任务传递参数,请问对于下面的代码:
tTaskInit(&task3, task3Entry, (void *)0x123456, TASK3_PRIO, task3Env, sizeof(task3Env));
上面的参数值0x123456是怎样传递给param的?
void task3Entry (void * param) {
for (;;) {
task3Flag = 1;
tTaskDelay(1);
task3Flag = 0;
tTaskDelay(1);
}
}
以下是4个选项,请选择:
- A:将参数值写入任务堆栈,在运行需要时从堆栈直接取值
- B:将参数值写入任务堆栈,运行前堆栈弹出到R0寄存器
- C:将参数值写入任务堆栈,内核将值赋值变量param
- D:将参数值写入tTask4结构,内核运行前赋值给param
思考题二(答案获取码:9328)
对于学习RTOS而言,最核心的是理解任务切换的原理。请结合之前的课程,回答以下内容:
- 为什么在创建任务时,要对任务的堆栈预先填入一些初始化数值?
- 为什么要按指定的次序依次填入?为什么要填入这些数值,而不是其它数值?
答案获取
练习题的答案,请关注微信公众号i01ketang 01课堂,发送相应的答案获取码,即可获得。