下载此文档

源代码分析.docx


文档分类:IT计算机 | 页数:约29页 举报非法文档有奖
1/29
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/29 下载此文档
文档列表 文档介绍
Pixhawk源码笔记一:APM代码基本结构
 
Pixhawk源码笔记一:APM代码基本结构
基础知识
详细参考:
第一部分:介绍
ArduPilot 代码分为5个主要部分,基本结构分xamples\GPS_AUTO_test),主要几个特点:
1、 pde文件包含很多 includes;
2、 定义了 hal 引用声明;
3、 代码非常粗糙;
4、 setup() 和 loop()函数
1、include文件
pde文件转变为C++文件后,提供必要的库引用支持。
2、hal引用声明
定义如下:
const AP_HAL::HAL& hal = AP_HAL_BOARD_DRIVER;// pixhawk等价于AP_HAL_PX4
该定义,方便访问硬件接口,比如console终端、定时器、I2C、SPI接口等。
,如下:
const HAL_PX4 AP_HAL_PX4;
hal是针对 AP_HAL_PX4 的引用。
经常使用的方法如下:
终端字符输出。->printf() and ->printf_P() to print strings (use the _P to use less memory on AVR)
获取当前运行时间。->millis() and ->micros() to get the time since boot
延时。->delay() and ->delay_microseconds() to sleep for a short time
IO输入输出。->pinMode(), ->read() and ->write() for accessing GPIO pins
I2C操作,
SPI操作,
3、setup()和loop()
每个sketch都有一个setup()和loop()函数。板子启动时,setup()被调用。这些调用都来自HAL代码中的main()函数调用(())。setup()函数只调用一次,用于初始化所有libraries。
Loop()循环被调用,执行主任务。
4、AP_HAL_MAIN()宏指令
每一个sketch(.pde文件)最底部,都有一个“AP_HAL_MAIN();”指令,它是一个HAL宏,用于定义一个C++ main函数,整个程序的入口。。
#define AP_HAL_MAIN() \
extern "C" __EXPORT int SKETCH_MAIN(int argc, char * const argv[]); \
int SKETCH_MAIN(int argc, char * const argv[]) { \
(argc, argv); \
return OK; \
}
作为程序的起点,在AP_HAL_MAIN()里,()初始化代码。
程序的执行过程就是:程序起点AP_HAL_MAIN() à () à () à sketch中的setup()和loop()。
Pixhawk源码笔记二:APM线程
Pixhawk源码笔记一:APM代码基本结构,参见:
        
        这里,我们对 APM 线程进行讲解。如有问题,可以交流。新浪***@WalkAnt,转载本博客文章,请注明出处,以便更大范围的交流,谢谢。
第三部分 APM线程
        详细参考:
        对于APM1、APM2硬件板,不支持多线程,所以只能通过简单的定时器加回调函数

源代码分析 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数29
  • 收藏数0 收藏
  • 顶次数0
  • 上传人wz_198613
  • 文件大小343 KB
  • 时间2022-03-27