[金错刀]pixhawk多线程程序编写
pixhawk源码多线程程序的编写
主要是针对pixhawk源码进行第二次开发的学习笔记,记录下以便日后查阅。
期望达到的目标
添加一个app应用,在nsh的后台中运行该应用,能够正常运行和关闭,而且在运行过程中不会影响运行其他的app。
添加的应用功能为:禁用telem2串口的mavlink消息,通过telem2读写数据。
参考examples/fixedwing_control/main.cpp
实现过程
主要使用的函数是
px4_task_t px4_task_spawn_cmd(const char *name, int scheduler, int priority, int stack_size, px4_main_t entry, char *const argv[])
具体使用情况可以参考main.cpp中的例子
deamon_task = px4_task_spawn_cmd("ex_fixedwing_control",
SCHED_DEFAULT,
SCHED_PRIORITY_MAX - 20,
2048,
fixedwing_control_thread_main,
(argv) ? (char *const *)&argv[2] : (char *const *)nullptr);
第一个参数是:运行的线程名字
stack_size是给的堆栈大小,给的打大了的话会出现堆栈崩溃的现象(暂未解决)
px4_main_t entry 是线程中要运行的程序名字,这里的程序入口参数必须是
fixedwing_control_thread_main(int argc, char *argv[])