参考文献
https://blog.csdn.net/guanzhiyuan1994/article/details/51327451
前言
本文主要介绍Ardupilot任务调度,Ardupilot通过定时器定时调度一系列任务实现任务调度
一、定义任务
Ardupilot程序与arduino的形式类似,包含一个setup()函数与一个loop()函数。setup()只执行一次,loop()函数在setup()函数执行后循环执行。
为了执行任务首先要将任务定义出来。在ArduCopter.cpp程序中,首先在 AP_Scheduler::Task Copter::scheduler_tasks[]中定义了一系列要完成的任务。
第一个参数是要调用的函数,
第二个参数通过定义tick的个数(一个tick为1/400Hz=2.5ms)来定义执行的频率。
第三个参数为该任务的最大执行时间,这在后面scheduler.run(time_available)函数中将用来判断是否要继续执行该任务。
二、任务调度
1.run函数调用
代码如下(示例):
这些AP_Scheduler::Task Copter::scheduler_tasks[]数组中定义的任务将在loop()