cleanflight成功移植到MDK(keil)

玩過穿越機的朋友們都知道cleanflight飛控。這是一個完全開源的飛控。目前穿越機使用的飛控主要有CC3D、baseflight、cleanflight、betaflight、raceflight等等。在cleanflight前面的版本都沒有使用到操作系統。在cleanflight版本中使用了比較簡單的操作系統。目前像PIX、APM這樣的開源飛控是支持多種機型的(不僅僅是穿越機)。cleanflight飛控多被用於穿越機,但其實它也是支持多種機型的。
穿越機可以只用一個傳感器就夠了,陀螺儀加速度計(MPU6050\MPU6000),cleanflight飛控中也加入了許多其他的傳感器或接口,他們是:電子羅盤(HMC5883L、AK8975、AK8963)、氣壓計(BMP085、MS5611、BMP280)、GPS接口(USART)、光流計接口(I2C\SPI)。調整參數飛各種機型的飛行器都是可以的。但是cleanflight代碼是在linux系統上使用交叉編譯工具鏈編譯的。linux操作系統是開源的操作系統在國外版權意識比較濃厚,使用開源的操作系統和軟件不用付費。但是在國內的飛控開發者,大部分是大學生、研究生和以下小型的創業公司,對於linux操作系統是極其不熟悉的,況且交叉編譯工具鏈的配置極其繁瑣,所以只有少數高級的編程高手才能使用linux操作系統完成實際的項目。國內的對於只處於中低層次的學生和其他開發者大部分的項目的還是在windows操作系統上完成的。windows操作系統其傻瓜式操作,即使是三歲小孩稍加練習也是可以很好的使用的。cleanflight代碼完全開源,大家可以從github網站上下載到源代碼。有興趣可以使用普通的文本編輯器打開裏面的.c.h.s文件看看。要想看工程就需要移植了。下面說說我的移植過程!
首先,你需要製作一個硬件。在移植過程中會有許多的bug,需要在硬件上實驗然後解決。代碼編譯通過燒錄到芯片控制器裏面未必能正常運行,這需要不斷的做實驗,反正博主燒壞了兩塊板子。下面是我設計和製作的PCB:
top
bottom

我這邊只移植了stm32f103的代碼,使用的芯片是stm32f103rct6,mpu6050、ms5611、hmc5883。所有的這三塊芯片的通信方式都是I2C通信。在同一根總線上,另外在相同的總線上引出兩路路I2C接口。引出串口1用於下載程序和調試代碼,調試時打印出相印的數據,沒有SWD接口,再說似乎如此大的工程量的代碼SWD調試並不能運行。引出串口2(USART2)用於接收GPS信號,還引出一路聲吶(SONAR)接口(5V、trig、echo、GND)。8路PWM輸入由於捕獲遙控接收機的PWM脈寬,10路PWM輸出用於輸出控制電機的PWM波。三個LED信號顯示燈。用於顯示解鎖上鎖信息和飛行模式信息。一路SPI接口(PCB中沒有標出)。
PCB正面
正面
反面
反面

下面我們去github網站下載cleanflight的源代碼。下載下來的壓縮文件解壓後的文件夾目錄如下:
目錄
和庫有關的代碼,都在lib文件夾下。我們所需要的源碼在cleanflight-master\src\main文件夾中,這裏面又有分開多個文件夾,這些都是飛控代碼的內容。
目錄
lib文件夾下的文件我們暫時不管他,要移植我們可以先再mdk上建立stm32f103的工程,加入庫函數,在主函數裏面什麼都不加,然後編譯,通過說明工程建立沒有錯。然後再加入源文件頭文件。缺啥補啥,然後是各種修bug改錯,這邊需要很高的程序員修養,能夠看懂並想辦法解決編譯器打印出來的錯誤和警告。如果耐心的素養不夠高,我的建議是到此爲止你就放棄吧。因爲博主在下面的工作完成的週期是一個月,沒日沒夜的幹。對程序員一個建議,別像我這樣發狂的幹活,容易出事,我的牙痛就是從那個時候開始的,程序員們要照顧好自己身體。自己圖一時滿足感身體垮了便宜了誰,想必大家都清楚。下面是我移植好了的工程截圖。後面還有實際飛行的視頻鏈接
代碼工程
這些個是實際的飛行視頻網址:
http://v.youku.com/v_show/id_XMTcxNzk4MTI0NA==.html?spm=a2h3j.8428770.3416059.1
http://v.youku.com/v_show/id_XMTcxNzk5MDkzNg==.html?spm=a2h3j.8428770.3416059.1
後期還使用了S500在鄉下航拍視頻,航拍極美。

                          -----山東大學機器人研究中心(博主個人完成所有工作量)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章