OnboardSDK3.8.1(一)

stm32下开发sdk的准备工作

Posted by 婷 on August 30, 2019 本文总阅读量

引言

    今年六月份因为比赛需求大概看了一个月大疆N3飞控的SDK代码吧,那时候还没学C++,又是第一次接触,而OnboardSDK3.3版本的代码对前面的代码进行了大改很多写法命名也不一样,八月份比完赛后官方开源了一个室内定位的方案,而且据说guidance也要停产,现在也即将大三了,我想把我大二没做完的事情做完,说不定今年比赛就真的要用上SDK了,也可以帮助到新队员。

准备

硬件配置

板子用的是stm32 F405RG,飞控用的是N3飞控

修改代码

修改晶振

    首先自己的板子是用的F405RG,晶振是25Mhz,需要对官方的例程做点修改,改外部晶振,有两个地方要改一个是头文件stm32f4xx.h,一个是源文件system_stm32f4xx.c

①修改HSE_VALUE,修改为25Mhz

1.png

②修改PLL_M 修改为25

2.png

③选芯片型号

3.png

删繁就简

接下来我会把大疆的库osdk-core这个文件夹里面的.c .h弄成一个只包含src inc 的文件夹(只能说是个人习惯吧,用不上的东西我只想删,断舍离)

4.png

下面的这几个被我选中的文件我是直接删掉的,然后在剩下的的文件夹里面头文件放在inc,源文件放在src

5.png

有一点要注意的是这个platform文件夹,如下图所示,被我选中的都删掉,最后只需要剩下default跟STM32两个文件夹里面的内容就好

6.png

处理之后的osdk-core文件夹的内部就是这样的啦

0000.png

接下来在keil5里面的选项卡那一栏将DJIlib删掉,然后再重新添加文件

7.png

点击那个 X 移除懂得都懂吧

再重新建一个DJIlib

8.png

添加osdkcore/src里面的所有c++源文件

8.png

9.png

添加完成之后修改包含的头文件的路径

11111.png

编译0 Error(s),0 Warning(s).

还有说明的一点是,编译之前会有一个这个编译器的warning

10.png

*** Warning: You are compiling one or more files of source type C++ and have selected 'use MicroLIB'. MicroLIB does not support C++!

这句话的意思是指MicoLIB不支持C++,但是不用担心这一部分,因为勾选MicroLIB只是为了重定向printf函数,而那部分代码已经用extern "C"修饰。

` extern “C” 的作用是让 C++ 编译器将 extern “C”` 声明的代码当作 C 语言代码处理,可以避免 C++ 因符号修饰导致代码不能和C语言库中的符号进行链接的问题。