




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、摘要本文詳細(xì)介紹了六腳爬蟲機(jī)器人的機(jī)械結(jié)構(gòu)以及控制程序的編寫。機(jī)械結(jié)構(gòu)采用了對稱式設(shè)計,結(jié)構(gòu)簡單;其行走功能由六只腳、18個舵機(jī)實現(xiàn),自由度較高,穩(wěn)定性、靈活性較好??刂瞥绦虻闹黧w是C語言。包括基本步態(tài)的編寫,以及傳感器的在機(jī)器人上的高級應(yīng)用,這樣,機(jī)器人在滿足基本行走運動的同時,也能感知外界環(huán)境,并通過控制器對接收到的外界信號進(jìn)行處理,并控制機(jī)器人運動。關(guān)鍵詞: 對稱式結(jié)構(gòu),舵機(jī)控制器,步態(tài),傳感器AbstractThe thesis describes in detail that the mechanic design of Hexcrawler and the compiling of
2、 control program. The structure of the robot is in symmetric expression, a simple mechanism; the function of walking is supported by six legs, and eighteen motors, with multiple degrees of freedom. Besides, it is of high stability and flexibility. The program to control the robot is written in C lan
3、guage, including basic gait, the advanced application of sensors. Thereby, the robot can walk in several gaits. At the same time, it can sense the condition around it. Then, it will process the data it received, and control the motion of the robot.Keywords: symmetric expression,PSCU, gait, sensor目錄摘
4、要IAbstractII目錄III1 緒論- 1 -1.1課題來源- 1 -1.2本課題的目的及其意義- 1 -1.3國內(nèi)外發(fā)展現(xiàn)狀- 1 -1.4本課題的研究內(nèi)容- 5 -2 機(jī)械結(jié)構(gòu)設(shè)計介紹- 6 -2.1 功能需求與分析- 6 -2.2 材料選擇與結(jié)構(gòu)設(shè)計介紹- 6 -3 舵機(jī)控制板原理與應(yīng)用- 9 -3.1 舵機(jī)原理介紹- 9 -3.2 舵機(jī)控制板原理介紹- 10 -3.3 如何使用舵機(jī)控制板- 12 -3.4 控制板程序編寫- 14 -4 STM32開發(fā)板介紹與程序編寫- 18 -4.1 STM32F107芯片簡介- 18 -4.2 軟件與編程初始準(zhǔn)備- 18 -4.3 GPIO與A
5、FIO設(shè)置與應(yīng)用- 18 -4.31 GPIO設(shè)置與應(yīng)用.18 4.32 AFIO-I/O口重映射.22 4.4 USART設(shè)置與應(yīng)用- 22 -4.5外部中斷設(shè)置與應(yīng)用- 26 -4.6 系統(tǒng)時鐘設(shè)置與應(yīng)用- 29 -4.61 系統(tǒng)時鐘簡介與應(yīng)用.29 4.62 定時器配置31 4.7 機(jī)器人行走步態(tài)程序編寫- 32 -4.71 機(jī)器人行走步態(tài)簡介33 4.72 三腳步態(tài).35 4.73 四腳步態(tài).37 4.74 單腳(波動)步態(tài).384.75 轉(zhuǎn)彎與橫爬步態(tài).404.8 多傳感器應(yīng)用與程序編寫- 43 -4.81 指南針傳感器.434.82 紅外、光敏傳感器.454.83 柔性力傳感器.4
6、64.84 溫濕度、發(fā)聲、射頻識別(RFID)傳感器.484.85 無線(Zigbee)傳感器.494.86 超聲傳感器525總結(jié)- 55 -致謝- 56 -參考文獻(xiàn)- 57 -1 緒論1.1課題來源本項目來源于華中科技大學(xué)與伍斯特理工學(xué)院合作的WPI項目。1.2本課題的目的及其意義機(jī)器人是高級整合控制論、機(jī)械電子、計算機(jī)、材料和仿生學(xué)的產(chǎn)物?,F(xiàn)在,機(jī)器人已經(jīng)發(fā)展到一個全新階段,各種機(jī)器人應(yīng)運而生,從簡單地追求功能到神似,到個性化;從單單發(fā)展工業(yè)機(jī)器人到工業(yè)、家用機(jī)器人全面開花,并取得了長足進(jìn)步。六腳機(jī)器人作為行走機(jī)器人的一種,具有結(jié)構(gòu)簡單,穩(wěn)定性好等優(yōu)點,而本課題也并未在很高深的機(jī)器人理論花
7、大量功夫,而更多地著眼于為大專院校提供機(jī)器人教學(xué)平臺,或者用于科技館展覽。本課題所設(shè)計的機(jī)器人最大的特點是:理論通俗易懂、操作方便、便于二次開發(fā)。對于一些入門者(初步掌握控制論、機(jī)械設(shè)計、機(jī)械電子只是)來說,很容易便能被引領(lǐng)入機(jī)器人研究的殿堂。1.3 國內(nèi)外發(fā)展現(xiàn)狀對于仿生機(jī)器人,尤其是多足機(jī)器人,國內(nèi)外均有大量研究。1990年,美國卡內(nèi)基梅隆大學(xué)研制出用于外星探測的六腳步行機(jī)器人AMBLER。該機(jī)器人采用了新型的“腿機(jī)構(gòu),并由一臺32位的處理機(jī)來規(guī)劃系統(tǒng)運動路線、制運動和監(jiān)視系統(tǒng)的狀態(tài)。但由于體積和質(zhì)量太大,最終沒被用于行星探測計劃。1993年,卡內(nèi)基梅隆大學(xué)開發(fā)出有纜的八足步行機(jī)器人DAN
8、TE,用于對南極的埃里伯斯火山進(jìn)行了考察,其改進(jìn)型也在實際中得到了應(yīng)用。1994年二代對距離安克雷奇145km的斯伯火山進(jìn)行了考察,并傳回了各種數(shù)據(jù)及圖像。日本對多足步行機(jī)的研究從20世紀(jì)80年代開始,并不斷進(jìn)行著技術(shù)創(chuàng)新,隨著計算機(jī)和控制技術(shù)的發(fā)展,其機(jī)械結(jié)構(gòu)由復(fù)雜到簡單,其功能由單一功能到組合功能,并已研究出各種類型的步行機(jī)。主要有四足步行機(jī)、爬壁機(jī)器人、腿輪分離型步行機(jī)器人和手腳統(tǒng)一型步行機(jī)器人。1994年,日本電氣通信大學(xué)的木村浩等研制成功四足步行機(jī)器人Patrush二代。該機(jī)器人用兩個微處理機(jī)控制,采用直流伺服電機(jī)驅(qū)動,每個關(guān)節(jié)安裝了一個光電碼盤,每只腳安裝了兩個微開關(guān),采用基于神經(jīng)
9、振蕩子模型CPG的控制策略,能夠?qū)崿F(xiàn)不規(guī)則地面的自適應(yīng)動態(tài)步行,顯示了生物激勵控制對未知的不規(guī)則地面有自適應(yīng)能力的特點。20002003年,木村浩等又研制成功四足步行機(jī)器人Tekken。該機(jī)器人用一臺PC機(jī)系統(tǒng)控制,用瑞士Maxon直流伺服電機(jī)驅(qū)動,能適應(yīng)中等不規(guī)則表面的自適應(yīng)步行。我國對于多足機(jī)器人的研究起步則較晚。1989年,北京航空航天大學(xué)在張啟先教授的指導(dǎo)下,孫漢旭博士進(jìn)行了四足步行機(jī)的研究,試制成功一臺四足步行機(jī)。錢晉武博士研究地壁兩用六腳步行機(jī)器人,并進(jìn)行了步態(tài)和運動學(xué)方面的研究。1990年中國科學(xué)院沈陽自動化研究所研制出全方位六腳步行機(jī),不僅能在平地步行,還能上樓梯。1991年,
10、上海交通大學(xué)馬培蓀等研制出JTUWM 系列四足步行機(jī)器人。2000年,馬培蓀等對第一代形狀記憶合金SMA驅(qū)動的微型六腳機(jī)器人進(jìn)行改進(jìn),開發(fā)出具有全方位運動能力的微型雙三足步行機(jī)器人其每條腿的自由度變?yōu)?個自由度。2003年哈爾濱工程大學(xué)的孟慶鑫、袁鵬等進(jìn)行了兩棲仿生機(jī)器蟹的研究,通過研究多足步行機(jī)的單足周期運動規(guī)律,提出適合于兩棲仿生機(jī)器蟹的單足運動路線規(guī)劃方法,建立了生成周期運動的神經(jīng)振蕩子模型。目前市場上幾款六腳機(jī)器人對比如下:(一)DEPUSH HexCrawlerHexCrawlerCompanyDEPUSHMaterial5052 alloy aluminum, 1/16” thic
11、k with clear anodizingLeg Movement2 DOFDimensionsBody: 49.68 x 40 cm, Height: between 12.3 and 15.2 cmCost$350+(二)Lynxmotion RB-Lyn-248RB-Lyn-248CompanyLynxmotionMaterial5052 alloy aluminum, 1/16” thick with black anodizingLeg Movement3 DOFDimensionsBody: 19.1 x 14.9 cm, Height: between 5.1 and 13.3
12、 cm, Ground Clearance: up to 8.9 cmCost$261.35+(三)HexCrawler HDATSHexCrawler HDATSCompanyDEPUSHMaterial5052 alloy aluminum, 1/16” thick with clear anodizingLeg Movement3 DOFDimensionsBody: 52 x 49.7 cm, Height: between 12.3 and 15.2 cm, Ground clearance: 12.7 cmCost 10,000 (about $1,500)其中HexCrawler
13、一代機(jī)器人使用的編程軟件為Parallax公司提供的教育發(fā)展版芯片。圖1.1為Phoenix公司提供的六腳機(jī)器人,圖1.2則為Depush公司的六腳機(jī)器人一代外形,其每個腳僅有兩個自由度。圖1.1 Phoenix Hexapod圖1.2 DEPUSH HexCrawler 1.01.4本課題的研究內(nèi)容六腳機(jī)器人基本結(jié)構(gòu)的設(shè)計,首先使之能夠?qū)崿F(xiàn)三腳步態(tài)、四腳步態(tài)、波動步態(tài)等,以滿足行走要求;然后,能夠感知外界環(huán)境的變化,實現(xiàn)避障報警等功能;最后,實現(xiàn)對機(jī)器人的遠(yuǎn)距離控制。具體要求為:設(shè)計機(jī)器人機(jī)械結(jié)構(gòu),使其可以完成前進(jìn),后退,左轉(zhuǎn),右轉(zhuǎn),側(cè)移,扭動身軀等簡單動作;可以完成抬腳,簡單舞蹈等動作;1
14、、編寫機(jī)器人各種基本動作的軟件代碼,使其能完成以上動作;2、機(jī)器人可以接受電腦無線控制,編寫相應(yīng)無線控制程序;3、機(jī)器人可感知外界環(huán)境,編寫相應(yīng)傳感器處理程序;4、對所有程序進(jìn)行綜合處理,協(xié)調(diào)各程序之間的關(guān)系。2 六腳機(jī)器人機(jī)械結(jié)構(gòu)設(shè)計介紹2.1 功能需求與分析作為六腳仿生機(jī)器人,在追求神似的同時,關(guān)鍵在于能否像爬蟲一樣完成各種行走動作。本課題對機(jī)械結(jié)構(gòu)的要求不高,但需要滿足下面幾點:靈活度高、穩(wěn)定性好、能夠?qū)崿F(xiàn)多足機(jī)器人的基本步態(tài)。針對這幾點,同時按照德普士公司的要求,再參照目前市面上存在的六腳仿生機(jī)器人,最終擬定的機(jī)械結(jié)構(gòu)設(shè)計方案為:在DEPUSH HexCrawler 1.0(圖1.2)
15、的基礎(chǔ)上每只腳增加一個舵機(jī),即將自由度由兩個提升為三個。2.2材料選擇與結(jié)構(gòu)設(shè)計介紹根據(jù)目前市面上的六腳仿真機(jī)器人,本課題選用5052鋁合金作為機(jī)器人的主要材料,這樣機(jī)器人既能滿足強(qiáng)度要求,也能滿足輕便性要求。同時,對外表進(jìn)行烤漆處理,顯得厚實而穩(wěn)重,富有質(zhì)感。如圖2.1為機(jī)械結(jié)構(gòu)的總?cè)S圖。圖2.1 六腳機(jī)器人三維總圖機(jī)器人整體上采用對稱式結(jié)構(gòu),由六只腳和底架(身體)組成。每只腳有三個關(guān)節(jié),每個關(guān)節(jié)處為采用舵機(jī)連接,可在固定平面內(nèi)旋轉(zhuǎn)180,如圖2.2所示。其中舵機(jī)1控制機(jī)器人腳前后擺動;舵機(jī)2控制機(jī)器人上下擺動;舵機(jī)3控制機(jī)器人內(nèi)外伸縮。三個舵機(jī)配合即可實現(xiàn)機(jī)器人的走動。圖2.2 六腳機(jī)器
16、人單腳結(jié)構(gòu)圖機(jī)器人身體(圖2.3)、腳(圖2.2)上均布滿各種鏤空圖案,主要有兩點作用:一、減輕機(jī)器人重量;二、增加機(jī)器人的美觀度。由于機(jī)器人的完全對稱性結(jié)構(gòu),其前后由認(rèn)為設(shè)定,即圖2.1中Leg1、Leg4在前,Leg3、Leg6在后。圖2.3 六腳機(jī)器人底架結(jié)構(gòu)圖 機(jī)器人的主要尺寸為: 機(jī)器人全長:500.0mm; 底架(身體寬):228.0mm; 舵機(jī)1(Leg1)距底架最前方距離:60.0mm; Leg1與Leg2距離:195.0mm; Leg1與Leg3距離:390.0mm;每只腳上舵機(jī)2與舵機(jī)3距離:120.0mm; 舵機(jī)3與腳底距離:150.0mm。3 舵機(jī)及舵機(jī)控制板原理與應(yīng)用
17、 本章主要介紹舵機(jī)以及舵機(jī)控制板(PSCU)的原理、使用方法與程序編寫。3.1 舵機(jī)原理介紹舵機(jī)是一個通過輸出軸的轉(zhuǎn)動來控制物體轉(zhuǎn)動的裝置。它在特定編碼的驅(qū)使下可以轉(zhuǎn)動到工作范圍內(nèi)的任意給定位置。因為它的輕便,位置控制簡易且精確,在機(jī)器人中使用尤多。多舵機(jī)的協(xié)調(diào)工作可滿足機(jī)器人的多自由度要求。舵機(jī)可以實現(xiàn)0180的旋轉(zhuǎn),當(dāng)軸處于正確位置時,舵機(jī)將停止運動;當(dāng)所在位置不對時,電路則驅(qū)動電機(jī)運轉(zhuǎn)到需求位置。舵機(jī)是采用比例調(diào)節(jié)方式控制速度。當(dāng)舵機(jī)轉(zhuǎn)動的距離大時,則加載在舵機(jī)上的能量就大,反之亦然。而舵機(jī)的轉(zhuǎn)動角度控制是由加載在控制線上的脈沖周期完成的,即所謂的脈沖編碼調(diào)制。舵機(jī)設(shè)定為每隔20ms接受
18、一個脈沖,這樣的話,實際脈沖長度就可用來控制舵機(jī)轉(zhuǎn)動的角度。如圖3.1,例如1.5ms的脈沖可使舵機(jī)轉(zhuǎn)動90。圖3.1 舵機(jī)轉(zhuǎn)角與脈沖周期關(guān)系圖本項目采用的事Hi-Tec公司生產(chǎn)的HS-322HD舵機(jī),如圖3.6。圖3.6 HS-322HD舵機(jī)其主要技術(shù)參數(shù)如下:重量:43g尺寸:402036.5mm拉力:4.8V 3Kg 拉力:6.0V 3.7Kg 轉(zhuǎn)速:4.8V 0.19sec/60轉(zhuǎn)速:6.0V 0.15sec/60計算電流:0.35A當(dāng)舵機(jī)安裝好后,需要獲取其初始位置值,為編程做準(zhǔn)備,具體可見3.3節(jié)關(guān)于PSCI軟件的介紹。3.2 舵機(jī)控制板原理介紹由上述機(jī)械結(jié)構(gòu)介紹可知,本六腳機(jī)器人
19、是通過控制18個舵機(jī)來實現(xiàn)機(jī)器人的運動的。但如何協(xié)調(diào)好各舵機(jī)的動作,讓其滿足功能需求?這就需要用到舵機(jī)控制板。舵機(jī)控制板按控制舵機(jī)數(shù)目(接口數(shù))的多少,可分為8路舵機(jī)控制器,16路舵機(jī)控制器,32路舵機(jī)控制器等等??紤]到成本以及控制舵機(jī)的數(shù)量,本課題采用兩塊16路舵機(jī)控制器串聯(lián)的方式來控制舵機(jī)。選用型號為PARALLAX公司提供的Propeller Servo Controller USB(#28830,簡稱PSCU)。如圖3.2所示:圖3.2 舵機(jī)控制板PSCU具有下述多項特點:可串聯(lián)兩塊控制板實現(xiàn)32路舵機(jī)控制; 獨立的螺旋式接線柱為控制板供電,舵機(jī)則可通過開關(guān)控制關(guān)停; 其所用固件開放源
20、代碼; 可通過USB接口或者串行通信接口編程; 舵機(jī)速度可控。 PSCU規(guī)格及性能: 電源要求:邏輯電平5VDC60mA,4.87.5VDC控制舵機(jī); 通信:異步串行通信2400bps或者38.4kbps(TTL或USB); 工作溫度:32158F(070C); 尺寸:2.26x1.80x0.65in(57.3x45.7x16.5mm);3.3如何使用舵機(jī)控制板在使用控制板前,需通過螺旋式接線柱給控制板提供4.87.5V的直流電,同時為使舵機(jī)運動,還需給舵機(jī)提供5V的直流電。此項可通過USB接口(如圖3.3)或者通過舵機(jī)控制板左上方的Serial In 處的杜邦針供電(TTL電平,如圖3.4)
21、。圖3.3 PSCU-USB供電電路連接圖圖3.4 PSCU-主控制板供電電路連接圖USB調(diào)試:安裝FTDI VCP驅(qū)動(下載地址: parallax /usbdrivers);安裝PSCI軟件(訪問網(wǎng)址 parallax ,并搜索28823)。雙擊軟件圖標(biāo),即可獲得圖3.5所示,連接好USB線,在界面上選擇COM口,獲取PSC版本,即可使用。圖3.5 PSCI控制界面圖中每個channel的進(jìn)度條,可發(fā)現(xiàn)對應(yīng)舵機(jī)會向相應(yīng)方向發(fā)生一定度數(shù)的旋轉(zhuǎn)。這可用來進(jìn)行舵機(jī)控制調(diào)試,從而獲取舵機(jī)位置值,來書寫步態(tài)。注意:圖中數(shù)據(jù)在編入ARM程序中時,應(yīng)先除以2倍,才是實際數(shù)據(jù),即圖中的中心出1500對應(yīng)實
22、際的750。更多功能可參照PARALLAX公司提供的Propeller Servo Controller USB說明文檔。當(dāng)使用雙塊板時,其連接方式為:首先將主板的Serial In(兩排,選上排)引出按高低電平信號線要求插在主控制板(STM32板)上,其中紅色線接5V電源,黑色線接地,白色線接信號線,即PA9。然后將副板的Serial In(上排)引出插在主板的Serial In處(下排)。最后通上電源即可。了解了PSCI的基本功能,并按要求連接好電路后,首要做的就是將舵機(jī)位置的初始值找出。通過拖動進(jìn)度條,并觀察機(jī)器人各腿的位置,從而確定舵機(jī)初值。筆者提供的舵機(jī)初始值均為六腳與身體垂直時的值
23、,且2、3關(guān)節(jié)夾角近似為90。3.4 控制板程序編寫 基本工作準(zhǔn)備與注意事項:前述工作準(zhǔn)備停當(dāng),即可開始程序的編寫。PARALLAX公司提供的說明文檔中提供了BS2程序,需要通過C語言轉(zhuǎn)譯,才可供ARM板識別。首先注意的是PSCU板的默認(rèn)波特率為2400bps,所以在編寫串行通信程序時,應(yīng)將串行通信的波特率設(shè)置為2400bps(具體見4.4節(jié)關(guān)于USART設(shè)置的介紹)。當(dāng)然本控制板亦可通過程序設(shè)置,將波特率改為38.4kbps,具體內(nèi)容下面會介紹到。此外,控制板接收的異步通信數(shù)據(jù)格式要求還有,正相,8個數(shù)據(jù)位,無奇偶校驗位,1個或2個停止位。其次控制板分為主副板,則對應(yīng)的舵機(jī)控制通道號即為03
24、1;即副板的通道號再原號基礎(chǔ)上加16即可。如果按序連接舵機(jī),可使編程變得較為簡單,通過簡單的數(shù)學(xué)關(guān)系進(jìn)行數(shù)據(jù)處理,但線路凌亂,看起來不是很美觀;本課題采用的是對稱連線,即選用通道號08,2331;當(dāng)然,這樣編程相對就復(fù)雜一些。最后關(guān)于主副板的界定還需提醒一句,由于硬件可能出現(xiàn)bug,實際上控制板可能通道號等沒有按照說明書的來,在調(diào)試過程中,可多試幾次,按照實際結(jié)果編程。本課題在調(diào)試過程中即出現(xiàn)了問題,實際的主副板是顛倒的,且必須將副板與主控制板(STM32)連接才可使用。通信協(xié)議規(guī)則:PSCU為用戶提供了多種控制功能,但每種控制字符串均是以!SC開始,以0x0D結(jié)束,中間有間隔4個主控制字符,
25、下面將一一介紹:位置命令設(shè)置舵機(jī)的位置控制字符串為:“!SC” 其中channel為通道號,即前述的031;ramp speed為一字節(jié)值,用于舵機(jī)轉(zhuǎn)速控制,其變化范圍為063,且數(shù)值越大,轉(zhuǎn)速越??;lowbyte為舵機(jī)位置的低字節(jié),highbyte為舵機(jī)位置的高字節(jié)。通過改變lowbyte與highbyte值即可改變舵機(jī)位置,其值變化范圍為2501250。位置命令控制板最基本的命令,往往也是唯一用到的功能。通過此命令,可以實現(xiàn)舵機(jī)按要求的轉(zhuǎn)動,從而滿足行走等多功能要求。SBR設(shè)置波特率控制字符串為:“!SCSBR” 其中mode是用來設(shè)置波特率的,0代表2400bps,1代表38.4kbps
26、??刂瓢宓哪J(rèn)波特率為2400bps,無需設(shè)置,但如果需要使用38.4bps的波特率進(jìn)行通信時,可使用該程序?qū)Σㄌ芈蔬M(jìn)行更改。RSP返回位置值控制字符串為:“!SCRSP” 其中channel為通道號。與VER?一樣,需要進(jìn)行輸入輸出的設(shè)置,方能返回位置值,這對編程很有用處,可以通過讀取位置值,判斷其是否到位來實現(xiàn)延遲,精確性較高。本課題未使用。讀者可拓展功能。PSS設(shè)置軟件口控制字符串為: “!SCPSS” 其中mode為0代表015;1代表1631??赡苡捎诎遄拥膯栴},實際過程中并未起作用,當(dāng)控制板沒問題時,可以根據(jù)個人喜好設(shè)置控制板的端口號,為編程提供便利。PSD使端口無效控制字符串為:
27、 “!SCPSD” 其中channel為通道號。此功能與PSE功能配合使用,在適當(dāng)時候可能才生意想不到的效果。PSE使端口恢復(fù)有效控制字符串為: “!SCPSE” 其中channel為通道號。此功能用于PSD后,用來恢復(fù)端口的正常使用。其余的功能控制命令此處便不再贅述,因為一般情況下無法用到。C語言程序編寫簡介:由于說明書中只提供了BS2程序,較難普及,需使用應(yīng)用較廣的C語言編寫。從控制命令的格式可以看出,無論哪種方式,都是8字節(jié)的字符串,于是,可定義一個聯(lián)合體(結(jié)構(gòu)體亦可),來儲存這一串字節(jié):typedef union _SERVO_PACKET char stream8; struct c
28、har CR : 8; char B3 : 8; char B2 : 8; char B1 : 8; char B0 : 8; unsigned SC : 24; packet; SERVO_PACKET; SERVO_PACKET pac;并將三字節(jié)的SC初始化為0x215343或”!SC”,將CR初始化為0x0D。這樣在編寫各種控制命令函數(shù)時,只要改變B0B3的值即可。例,位置命令函數(shù):void SendPacket(char RS, char Channel, int Position) int i = 0; pac.packet.B0 = Channel; pac.packet.B1
29、= RS; pac.packet.B2 = LOWBYTE(Position); pac.packet.B3 = HIGHBYTE(Position); for(i = 7 ; i = 0 ; i-) ser_putbyte(pac.streami); /該函數(shù)4.4節(jié)介紹,作用為發(fā)送單個字節(jié) 其中LOWBYTE()、HIGHBYTE()函數(shù)的定義為:#define LOWBYTE(v) (unsigned char) (v) #define HIGHBYTE(v) (unsigned char) (unsigned int) (v) 8)其功能為獲取數(shù)值(位置值)的低八位與高八位。這即可為編
30、程提供很大方便。以此類推,其它命令的函數(shù)可以根據(jù)需要只要參考上述的位置命令函數(shù)編寫即可。在此基礎(chǔ)上以及之前用PSCI軟件調(diào)試出的舵機(jī)初始值,即可編寫舵機(jī)初始化程序了。void Initservo(void) int i=0; for(i=0;iCRL=(GPIOD-CRL&(0x0000000F04)|0x00000003CRL=(GPIOD-CRL&(0x0000000F04)|0x0000000404其中第一行將PD1設(shè)置為推挽輸出模式,第二行將PD1設(shè)置為浮空輸入模式。在使用時,只需在程序前,加入一行DAT_OUT;或者DAT_IN來切換PD1輸入輸出。當(dāng)書寫其它I/O口的程序時,只需將
31、GPIOD換成相應(yīng)I/O口,如果端口號為07,則只需將右邊的04改成端口號*4的積,例如PA0則為00,如果端口號為815,則需將CRL換成CRH,同時DR = (data & 0xFF); return (data); 函數(shù)二:int SendChar (int ch) USART_SendData(USART1, (unsigned char) ch); while (!(USART1-SR & USART_FLAG_TXE); return (ch); 上述兩個函數(shù)的功能等同,在寫程序時可以隨意調(diào)用,例如3.4節(jié)提到的SendPacket()函數(shù)便調(diào)用了上述的函數(shù)一。接收一個字節(jié)u8 R
32、Byte(void) u8 out=0;while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) = RESET) /等待接收完畢 out = (USART_ReceiveData(USART1); /接收一個字節(jié)return out; 該函數(shù)用于接收單個字節(jié),在無線通信時可用到。發(fā)送一個字符串void Print_String(u8 *p)/發(fā)送一串?dāng)?shù)據(jù) while(*p) USART_SendData(USART1, *p+); while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) = RESET)
33、當(dāng)連續(xù)發(fā)送的字符很多時,可以選用該函數(shù)以字符串形式發(fā)送。接收一個字符串void SerialIn(u8 *buf,u8 len) unsigned char i;for (i = 0; i len; i+) bufi = RByte(); 同樣,當(dāng)需要連續(xù)發(fā)送多個字節(jié)數(shù)據(jù)時,則可選用該函數(shù)。上面提到的都是USART1的設(shè)置以及拓展功能函數(shù)的書寫。而其它串口通信的設(shè)置與U1一致,功能函數(shù)則只需將U1換成U2或U3即可。由于主板的問題,本項目中并未使用U2、U3來實現(xiàn)其它串口通信,而是將所有的串口通信均由U1來實現(xiàn),這也是權(quán)宜之計,即采用分時復(fù)用的原理。具體說來,就是發(fā)聲傳感器和無線傳感器都需要通
34、過異步傳輸來與處理器通信。對于每個傳感器以及PSCU,它們能夠識別的信號是由特定字符串組成的。這樣,只要將PA9、PA10口多引出幾個引腳,分別接到傳感器以及PSCU的相應(yīng)口即可,在傳輸指令時,分時傳送,對于無法識別的字符串,則不處理,這樣便解決了串口不夠的問題。如果要實現(xiàn)搶占,則將它們配置成中斷模式即可,并配置好優(yōu)先級。4.5 外部中斷設(shè)置與應(yīng)用當(dāng)主控制板遇到異常時,便會觸發(fā)中斷,并進(jìn)行處理。NVIC,中文叫做嵌套矢量中斷控制器,是用來處理中斷的對于STM32F107的普通用戶來說,只要掌握EXTI線中斷,USART中斷以及TIM中斷即可。下面僅對EXTI中斷作簡略介紹。外部中斷/事件控制器
35、(EXTI)由19個產(chǎn)生事件/中斷請求的邊沿檢測器組成。每個輸入線可獨立地配置輸入類型和對應(yīng)的觸發(fā)事件(上升沿、下降沿或雙邊沿觸發(fā))每個輸入線都可以被獨立地屏蔽,由掛起寄存器保持著狀態(tài)線的中斷要求。如果要產(chǎn)生外部中斷,首先必須配置好并激活中斷線。配置內(nèi)容包括:根據(jù)需要的邊沿檢測設(shè)置2個觸發(fā)寄存器、在中斷屏蔽寄存器的相應(yīng)位寫1以允許中斷請求。當(dāng)外部中斷線上出現(xiàn)設(shè)定的邊沿信號時,將產(chǎn)生一個中斷請求等待處理。完成中斷服務(wù)后,可以清除該中斷請求。下面具體介紹如何配置硬件中斷/事件請求。(1)首先要了解中斷線與I/O口的關(guān)系,如圖4.2可知,PAPE的015口分別對應(yīng)EXTI的015口;EXTI16與P
36、VD輸出連接、EXTI17與RTC鬧鐘事件連接、EXTI18與USB喚醒事件連接。圖4.2 中斷線與GPIO口對應(yīng)關(guān)系(2)對EXTI線配置,以EXTI0為例,配置函數(shù)如下:void NVIC_Configuration(void) NVIC_InitTypeDef NVIC_InitStructure; #ifdef VECT_TAB_RAMNVIC_SetVectorTable(NVIC_VectTab_RAM,0x0); #elseNVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0); #endif NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NV
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 傳統(tǒng)文化對現(xiàn)代行政影響的探討試題及答案
- 勞動教育與素質(zhì)培養(yǎng)體系構(gòu)建
- 護(hù)理教育實踐中的創(chuàng)新實踐與2025年試題與答案
- 行政法學(xué)考試重要性試題及答案
- 經(jīng)濟(jì)法概論應(yīng)試技巧分享試題及答案
- 小學(xué)生班會課課件
- 執(zhí)業(yè)護(hù)士考試提高專業(yè)素養(yǎng)的途徑試題及答案
- 立體圖形的認(rèn)識課件
- 行政法學(xué)的理論性與試題及答案
- 勇闖2025年主管護(hù)師考試試題及答案
- 2025年廚師職業(yè)技能鑒定高級試卷:餐飲企業(yè)品牌建設(shè)與推廣
- 2024年浙江省仙居縣事業(yè)單位公開招聘教師崗筆試題帶答案
- 五年級數(shù)學(xué)下試卷及答案
- 2025年高考政治答題模板:選必修123主觀題答題語言總結(jié)
- 兒童性早熟課件
- 生活垃圾合同終止協(xié)議
- 山東能源電力集團(tuán)招聘筆試題庫2025
- 遼寧省沈陽市沈北新區(qū)2024-2025學(xué)年初三下學(xué)期質(zhì)量調(diào)研考試(一模)語文試題含解析
- 2025年九年級中考數(shù)學(xué)三輪沖刺訓(xùn)練一次函數(shù)中面積相關(guān)問題訓(xùn)練
- 醫(yī)療技術(shù)品牌的創(chuàng)新與傳播策略
- 湖北省武漢市2025屆高中畢業(yè)生四月調(diào)研考試生物試題及答案(武漢四調(diào))
評論
0/150
提交評論