已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
學(xué)號(hào)1102424021基于STM32的自行車轉(zhuǎn)向剎車燈設(shè)計(jì)學(xué)院名稱物理與電子工程學(xué)院專業(yè)名稱電氣工程及其自動(dòng)化年級(jí)班別2011級(jí)姓名指導(dǎo)教師2015年5月河南師范大學(xué)本科畢業(yè)論文基于STM32單片機(jī)的自行車轉(zhuǎn)向剎車燈設(shè)計(jì)摘要本課題選用了STM32F103C8T6單片機(jī)和ADXL345三軸加速度傳感器,來(lái)控制全彩燈珠和紅外線激光燈,達(dá)到指示自行車的剎車或者轉(zhuǎn)向的功能。本文首先介紹了STM32系列芯片和ADXL345加速度芯片的功能和特點(diǎn)。之后詳細(xì)介紹了剎車燈系統(tǒng)的硬件和軟件設(shè)計(jì)。難點(diǎn)是硬件設(shè)計(jì)中的問(wèn)題與思考,重點(diǎn)軟件設(shè)計(jì)中運(yùn)用模塊化編程的方法組建代碼的過(guò)程。經(jīng)過(guò)調(diào)試運(yùn)行結(jié)果分析,該設(shè)計(jì)實(shí)現(xiàn)了剎車時(shí)全彩燈珠自動(dòng)亮起,轉(zhuǎn)向前主動(dòng)觸發(fā),使紅外線激光燈產(chǎn)生顯著的轉(zhuǎn)向信號(hào)的功能,滿足了設(shè)計(jì)的要求。論文最后總結(jié)了設(shè)計(jì)中出現(xiàn)的問(wèn)題以及解決方法。關(guān)鍵字STM32,ADXL345,自行車剎車燈,轉(zhuǎn)向燈THEBICYCLEBREAKLIGHTANDSTEERINGLAMPBASEDONSTM32ABSTRACTTHISSUBJECTSELECTSTHESTM32F103C8T6MICROCONTROLLERANDADXL345THREEAXISACCELERATIONSENSOR,TOCONTROLTHERGBLEDANDINFRAREDLASERLIGHT,TOINDICATEABICYCLEBRAKINGORSTEERINGFUNCTIONFIRSTTHISPAPERINTRODUCESSOMEINFORMATIONANDCHARACTERISTICSOFSTM32SERIESCHIPANDADXL345ACCELERATIONCHIPANDTHENINTRODUCESTHEDESIGNOFHARDWAREANDSOFTWAREOFTHESYSTEMTHEDIFFICULTYISTHEPROBLEMANDTHINKINGINTHEPROCESSOFHARDWAREDESIGN,USINGTHEMETHODOFMODULARPROGRAMMINGKEYSOFTWAREDESIGNBUILDINGCODETHROUGHTHEDETAILEDANALYSISOFTHEOPERATIONRESULT,THEDESIGNANDIMPLEMENTATIONOFTHERGBLEDAUTOMATICALLYLIGHTSUPWHENBRAKING,ACTIVETRIGGERINGMAKESTHEINFRAREDLASERLIGHTGENERATEDSIGNALFUNCTIONSIGNIFICANTLYBEFORESTEERING,INACCORDANCEWITHTHEDESIGNREQUIREMENTSTHETHESISFINALLYSUMMARIZESTHEPROBLEMSOCCURREDINDESIGNANDTHEIRSOLUTIONSKEYWORDSSTM32,ADXL345,THEBICYCLEBREAKLIGHTS,STEERINGLAMP目錄基于STM32的自行車轉(zhuǎn)向剎車燈I摘要I前言11CORTEXM3與STM32簡(jiǎn)介311CORTEXM3與STM32的關(guān)系312STM32的優(yōu)越性313STM32的系統(tǒng)結(jié)構(gòu)、內(nèi)核及指令集示意圖414STM32F103C8T6的基本參數(shù)、內(nèi)設(shè)與引腳位52ADXL345與SPI簡(jiǎn)介721ADXL345簡(jiǎn)介722SPI介紹83硬件設(shè)計(jì)1031硬件設(shè)計(jì)概述1032電源部分的硬件設(shè)計(jì)1233STM32和ADXL345硬件設(shè)計(jì)1334全彩燈珠的設(shè)計(jì)1535轉(zhuǎn)向按鍵與紅外線激光燈的設(shè)計(jì)1636其它硬件設(shè)計(jì)184軟件設(shè)計(jì)2141STM32固件庫(kù)開(kāi)發(fā)概述2142程序代碼結(jié)構(gòu)2143MAINC結(jié)構(gòu)說(shuō)明2244按鍵功能軟件設(shè)計(jì)2345ADXL345的軟件設(shè)計(jì)2646模式切換的軟件設(shè)計(jì)275總結(jié)3051在調(diào)試過(guò)程中出現(xiàn)的問(wèn)題和解決辦法3052在軟件設(shè)計(jì)中總結(jié)的技巧3153個(gè)人成長(zhǎng)31參考文獻(xiàn)33致謝34前言騎自行車既是一種環(huán)保的出行方式,又是一種健康的運(yùn)動(dòng)方式。對(duì)于個(gè)人來(lái)說(shuō),騎自行車不僅可以減肥,使身體勻稱,同時(shí)可以強(qiáng)化心臟功能,有避免高血壓等疾病的功能。騎自行車可以使騎行者血液循環(huán)加速,主動(dòng)吸入大量新鮮空氣,從而使騎行者腦筋更清楚。有研究顯示,騎自行車上班或者上學(xué),可以提升人的幸福感。特別是在風(fēng)景優(yōu)美的地方騎行,會(huì)讓人覺(jué)得心曠神怡,充分感受到運(yùn)動(dòng)的快樂(lè)和自然的美好。對(duì)于自然來(lái)說(shuō),騎自行車出行可節(jié)約能源、降低噪音、減少污染,生態(tài)效應(yīng)明顯。建設(shè)“資源節(jié)約型、環(huán)境友好型”社會(huì)是我國(guó)經(jīng)濟(jì)社會(huì)發(fā)展的客觀要求。個(gè)人開(kāi)車上下班會(huì)對(duì)環(huán)境產(chǎn)生巨大危害,給城市交通也帶來(lái)巨大壓力。因此積極提倡自行車出行,是利國(guó)利民的好事。然而,中國(guó)的自行車騎行氛圍非常不樂(lè)觀。中國(guó)曾是自行車的王國(guó),卻像一些發(fā)達(dá)國(guó)家一樣過(guò)度強(qiáng)調(diào)汽車經(jīng)濟(jì),各個(gè)城市汽車保有量連年上升,冷落自行車成為常見(jiàn)社會(huì)現(xiàn)象,鄙視普通騎行者更是成為大眾心理。另外,由于汽車尾氣,工廠排污等造成的環(huán)境污染,導(dǎo)致許多城市適合戶外運(yùn)動(dòng)的天數(shù)越來(lái)越少。加之中國(guó)司機(jī)普遍素質(zhì)不高,在駕駛機(jī)動(dòng)車行車過(guò)程中常常占用自行車道。特別是從自行車道超車這種行為,給騎行者帶來(lái)很大的威脅。尤其是在夜間,機(jī)動(dòng)車占道超車的危害更大。與機(jī)動(dòng)車不同,自行車出現(xiàn)剎車、轉(zhuǎn)向等行駛狀態(tài)的變化時(shí),沒(méi)有顯著的指示。如果在轉(zhuǎn)向或者剎車時(shí)自行車道被機(jī)動(dòng)車占用的話,對(duì)于騎行者來(lái)說(shuō)將是非常危險(xiǎn)的事情。本設(shè)計(jì)可以歸類為騎行裝備的一種,設(shè)計(jì)初衷是為了給騎行者提供一種較為顯著的可以警示轉(zhuǎn)向或者剎車的工具。與頭盔、護(hù)膝之類傳統(tǒng)的騎行裝備相比,可以在危險(xiǎn)發(fā)生前提供預(yù)警,減小危險(xiǎn)發(fā)生的幾率。按照實(shí)現(xiàn)方法來(lái)說(shuō)的話,本設(shè)計(jì)屬于基于STM32單片機(jī)的一個(gè)小型電子設(shè)備。與常見(jiàn)的長(zhǎng)亮型市售剎車燈相比,更加智能,功耗也更低。與無(wú)光源反射式的后座警示燈相比,本設(shè)計(jì)的警示方式更加顯眼,也更加時(shí)尚。綜上,本設(shè)計(jì)與其它騎行裝備相比,是具有一定的獨(dú)創(chuàng)性的智能化警示設(shè)備。本設(shè)計(jì)雖然只是為了檢驗(yàn)學(xué)習(xí)情況,而做的一個(gè)小制作性質(zhì)的發(fā)明,但其設(shè)計(jì)思路卻以正規(guī)產(chǎn)品思路為指導(dǎo),沒(méi)有追求一味地多添加功能,以增加其技術(shù)含量,而是真正考慮到如果要作為實(shí)際產(chǎn)品的話,需要考慮的功能、成本和功耗。因此,本設(shè)計(jì)最大程度追求降低功耗,裁去多余硬件,功能求專而不求多。本文共分為5部來(lái)寫,首先介紹了STM32系列芯片的和ADXL345芯片的特點(diǎn),然后是系統(tǒng)硬件設(shè)計(jì)和系統(tǒng)軟件設(shè)計(jì),最后是總結(jié)設(shè)計(jì)中出現(xiàn)的問(wèn)題及其解決辦法,個(gè)人收獲。1CORTEXM3與STM32簡(jiǎn)介11CORTEXM3與STM32的關(guān)系STM32是采用CORTEXM3的內(nèi)核的一種CPU,CORTEXM3是ARM架構(gòu)的一種。CORTEXM3采用ARMV7構(gòu)架,支持THUMB2指令集,同時(shí)具有很多強(qiáng)大的特性。較之ARM7TDMI,CORTEXM3不僅擁有更強(qiáng)的性能、更高的代碼密度、而且可以位帶操作、中斷嵌套、低成本、低功耗。國(guó)內(nèi)CORTEXM3市場(chǎng),意法半導(dǎo)體公司的STM32是毋庸置疑的領(lǐng)跑者,不論是在市場(chǎng)占有率,技術(shù)支持還是使用氛圍等方面,都遠(yuǎn)超其他對(duì)手。所以本設(shè)計(jì)在CORTEXM3芯片的時(shí)候,自然而然地就考慮了STM32。12STM32的優(yōu)越性STM32的優(yōu)越性體現(xiàn)在以下幾個(gè)方面1超低的價(jià)格。幾乎與8位單片機(jī)的價(jià)格持平是STM32最大的優(yōu)勢(shì)。就本設(shè)計(jì)所選的STM32F103C8T6而言,在北京中發(fā)電子市場(chǎng)買10片的話,每片僅需105元。而一塊STC89C52RC就需要9元。兩者的性能差別卻非常之大。2豐富的外設(shè)。STM32擁有包括TIMER定時(shí)器、SPI通訊協(xié)議、I2C總線、USB通訊協(xié)議、CAN總線、數(shù)模轉(zhuǎn)換器、模數(shù)轉(zhuǎn)換器、RTC、DMA等眾多外設(shè)或者功能,具有很高的集成度。本設(shè)計(jì)中單片機(jī)通過(guò)SPI與ADXL345三軸加速度芯片進(jìn)行通信。3豐富的型號(hào)。STM32中的M3系列內(nèi)核擁有多個(gè)系列上百種型號(hào),十分豐富。其封裝庫(kù)也有較多的選擇,如QFN、LQFP、BGA等。本設(shè)計(jì)選取了LQFP48L封裝,是一種方便手工焊接,且體積較小的封裝。4優(yōu)異的實(shí)時(shí)性能。由于STM32芯片的多數(shù)IO口都可以通過(guò)不同的映射設(shè)置,來(lái)作為中斷輸入,所以提供了較多的中斷數(shù)量,最多可達(dá)84個(gè),且具有16級(jí)可編程的優(yōu)先級(jí),合理地規(guī)劃中斷數(shù)量和優(yōu)先級(jí)可以有效保障實(shí)時(shí)性能。5杰出的功耗控制。STM32所有的外設(shè)都有自身的獨(dú)立時(shí)鐘開(kāi)關(guān),相應(yīng)外設(shè)的時(shí)鐘被設(shè)置為關(guān)閉的話可以有效降低功耗。本設(shè)計(jì)充分應(yīng)用了STM32的這個(gè)特性,所有的外設(shè)全部以中斷的方式來(lái)控制,在不使用的時(shí)候關(guān)閉相應(yīng)時(shí)鐘,追求最大程度降低功耗。6較快的開(kāi)發(fā)速度。ST將各個(gè)寄存器的操作集成了一個(gè)官方固件庫(kù),將寄存器的使用方法封裝到不同的函數(shù)中,開(kāi)發(fā)者通過(guò)API直接調(diào)用這些函數(shù)即可操作寄存器,不需要深入底層注重這些寄存器的操作細(xì)節(jié),因此大大提升了開(kāi)發(fā)速度。7極低的開(kāi)發(fā)成本。STM32的官方仿真器價(jià)格很低,且國(guó)產(chǎn)的仿真器質(zhì)量也可以接受,不像某些單片機(jī)仿真器動(dòng)輒上千,另外支持SWD和JTAG兩種調(diào)試辦法,方便使用。本設(shè)計(jì)使用SWD調(diào)試,只需要2個(gè)IO口,即可實(shí)現(xiàn)仿真調(diào)試。13STM32的系統(tǒng)結(jié)構(gòu)、內(nèi)核及指令集示意圖圖11STM32的系統(tǒng)結(jié)構(gòu)圖12CORTEXM3處理器內(nèi)核與CORTEXM3芯片的關(guān)系圖13THUMB2指令集與THUMB指令集的關(guān)系示意圖14STM32F103C8T6的基本參數(shù)、內(nèi)設(shè)與引腳位基本參數(shù)類別集成電路IC所屬嵌入式微控制器位數(shù)32位最高速度72MHZ輸入/輸出IO數(shù)37程序存儲(chǔ)器容量中型64K程序存儲(chǔ)器類型FLASH閃存RAM容量20KX8電源電壓2V36VADC10X12B工作溫度40C85C封裝/外殼LQFP48L貼片式圖14STM32F103C8T6內(nèi)設(shè)與引腳圖2ADXL345與SPI簡(jiǎn)介21ADXL345簡(jiǎn)介概述ADXL345是一種體積小巧的低功耗三軸加速度芯片傳感器,擁有可達(dá)13位的分辨率和16G的測(cè)量范圍。輸出16位補(bǔ)碼數(shù)據(jù),可通過(guò)SPI或I2C接口訪問(wèn)。ADXL345可以在傾斜檢測(cè)中測(cè)量靜態(tài)重力加速度,由于高達(dá)39MG/LSB的分辨率,小于1度的傾斜角變化可以檢測(cè)到。還可以測(cè)量運(yùn)動(dòng)或沖擊導(dǎo)致的動(dòng)態(tài)加速度。本設(shè)計(jì)中使用的功能就是在運(yùn)動(dòng)狀態(tài)中檢測(cè)動(dòng)態(tài)加速度,屬于移動(dòng)設(shè)備應(yīng)用的ADXL345,可以說(shuō)是恰如其分的選擇。該器件提供以下幾種特殊檢測(cè)功能活動(dòng)與否檢測(cè)功能通過(guò)比較某軸上的加速度與用戶自定義的值來(lái)檢測(cè)是否運(yùn)動(dòng)。震動(dòng)檢測(cè)功能檢測(cè)任意方向的有無(wú)震動(dòng)。掉落檢測(cè)功能判斷傳感器是否處在在掉落過(guò)程中。這些功能可以獨(dú)立映射到兩個(gè)中斷輸出引腳(第8腳和第9腳)中的一個(gè)。參數(shù)功耗測(cè)量模式23UA(VS25V),待機(jī)模式01UA分辨率10位固定分辨率,最大可調(diào)分辨率13位電源電壓VS2V63V引腳高電平17VVS工作溫度40C至85引腳結(jié)構(gòu)與功能圖21引腳配置圖表21引腳功能描述表22SPI介紹SPI是串行外設(shè)接口(SERIALPERIPHERALINTERFACE)的縮寫,SPI是一種簡(jiǎn)單易用的通訊協(xié)議,正在被越來(lái)越多的芯片采用,它可進(jìn)行全雙工通訊,所以速度很快,可同步。只占用四根線,不但節(jié)省了寶貴的芯片IO口資源,而且有利于進(jìn)行PCB布局設(shè)計(jì)。表22SPI功能描述表名稱功能描述SDO數(shù)據(jù)輸出主要的通訊線,負(fù)責(zé)輸入主設(shè)備的數(shù)據(jù),輸出從設(shè)備的數(shù)據(jù)SDI數(shù)據(jù)輸入主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入,在單向傳輸時(shí)可以不使用此線SCLK時(shí)鐘時(shí)鐘信號(hào),主設(shè)備負(fù)責(zé)提供時(shí)鐘脈沖,允許數(shù)據(jù)按位傳輸,共數(shù)據(jù)輸入線和輸出線按照這個(gè)脈沖傳輸數(shù)據(jù)CS片選從設(shè)備使能信號(hào),由主設(shè)備控制某從設(shè)備是否被選中,因此同一總線上可以連接多個(gè)SPI從設(shè)備。SPI是串行通訊協(xié)議,即數(shù)據(jù)是按位的傳輸?shù)?。由SCLK提供時(shí)鐘脈沖。從設(shè)備向主設(shè)備的數(shù)據(jù)輸出通過(guò)SDO線,數(shù)據(jù)在時(shí)鐘上升沿(或下降沿時(shí))改變,在下一個(gè)下降沿(或上升沿)被讀取。這樣,在SCKL提供不少于8次脈沖時(shí),就可以完成一個(gè)8位數(shù)據(jù)的傳輸。一個(gè)滿足SPI協(xié)議的設(shè)備中,至少需要一個(gè)主設(shè)備。只可以主設(shè)備控制SCKL,從設(shè)備不允許控制。當(dāng)主設(shè)備未曾控制SCKL時(shí)鐘信號(hào)線產(chǎn)生跳變時(shí),從設(shè)備不進(jìn)行數(shù)據(jù)的采集和傳輸。這樣的好處是,主設(shè)備只需要控制SCKL時(shí)鐘線就可以控制與從設(shè)備的通訊。時(shí)序介紹圖22SPI時(shí)序圖3硬件設(shè)計(jì)31硬件設(shè)計(jì)概述本設(shè)計(jì)的硬件設(shè)計(jì)經(jīng)歷了兩個(gè)版本,V10和V20。本設(shè)計(jì)采用的設(shè)計(jì)流程是1考慮預(yù)期功能,進(jìn)行器件的類別選擇。2廣泛搜集資料,設(shè)計(jì)原理圖。3考慮板子與器件大小,設(shè)計(jì)PCB。4焊接第一版PCB,調(diào)試程序。5修改錯(cuò)誤,優(yōu)化布局,設(shè)計(jì)第二版PCB。本設(shè)計(jì)的硬件電路設(shè)計(jì)軟件是ALTIUMDESIGNER13。最初的想法是設(shè)計(jì)一個(gè)自行車的剎車燈,看上去要酷炫。當(dāng)時(shí)有兩個(gè)方案其1是直接改裝自行車的剎車手柄,使手柄的活動(dòng)處與車把的固定端導(dǎo)電連通,剎車的時(shí)候這兩處分離,則電氣連接斷開(kāi)。這樣子幾乎可以保證百分之百亮起剎車燈。缺點(diǎn)是不具備普適性,每個(gè)自行車需要不同的改裝,另外技術(shù)含量也大大降低。其2是使用加速度傳感器芯片。通過(guò)MCU控制傳感器芯片,讀取加速度值來(lái)判斷剎車狀態(tài)。這種方案是很難達(dá)到很高的準(zhǔn)確率的,因?yàn)閷?duì)于芯片來(lái)說(shuō),它無(wú)法判斷產(chǎn)生的加速度是在加速還是在剎車。假設(shè)自行車勻速前進(jìn)的時(shí)候,三軸加速度的值與靜止?fàn)顟B(tài)是一樣的,因此無(wú)法判斷此時(shí)的加速度值與前進(jìn)方向的關(guān)系。本設(shè)計(jì)選擇方案2,選擇加速度芯片。考慮到酷炫,所以采用了全彩燈珠。根據(jù)色光三原色原理,紅綠藍(lán)三種顏色的LED燈珠足以產(chǎn)生絢麗的色彩。在設(shè)計(jì)原理圖的時(shí)候,主要參考了正點(diǎn)原子的戰(zhàn)艦STM32開(kāi)發(fā)板和GITHUB上的項(xiàng)目PROGRAMMABLELED。在設(shè)計(jì)PCB的時(shí)候,首先考慮了板子的尺寸。由于要使用電池供電,所以板子的大小就有了限制。查閱到電池盒的尺寸后,確定了板子的尺寸為33CM6CM,雙面板,單面放置貼片元器件。在確定器件封裝的時(shí)候,充分考慮了手工焊接的限制和本人焊接的水平,多數(shù)阻容器件采用了0805這樣的較大封裝。值得一提的是,在PCB設(shè)計(jì)過(guò)程中得到了專業(yè)硬件工程師的指導(dǎo),在確定板子尺寸和器件封裝后,器件采用了手工布局,具體的布局和布線流程是這樣的1將MCU放在最中間的位置上。2根據(jù)接插件的特殊要求放置接插件。比如電源接入口必須放在左端,而紅外激光燈放在上端。3放置有特殊要求的器件,如為了美觀,要將兩個(gè)全彩燈珠對(duì)稱放在MCU兩端。易發(fā)熱的器件離其它器件遠(yuǎn)一點(diǎn)。4將電源相關(guān)的器件放置在電源接入口的附近。主要是一些電容,將這些電容排列整齊并且大容值的放在前邊。5根據(jù)與MCU管腳的連接關(guān)系,選取器件的放置區(qū)域。如某器件與芯片連接的管腳在右邊,則盡量將此器件放置在芯片右邊。6考慮到減小焊接難度,將相似器件放在一塊。完成布局以后一定要手工布線。一是因?yàn)槭止げ季€可以加深對(duì)板子的理解,調(diào)試的時(shí)候效率會(huì)高很多。二是因?yàn)樽詣?dòng)布線會(huì)產(chǎn)生較多的過(guò)孔,而打過(guò)孔的鉆頭是易壞部件,會(huì)增加成本,并且如果大批量生產(chǎn)的話板子擺放層數(shù)較多,則下層的過(guò)孔可能很小,不合乎要求。雖然這個(gè)設(shè)計(jì)很簡(jiǎn)單,自動(dòng)布線是有效的,但是為了養(yǎng)成良好習(xí)慣,指導(dǎo)老師建議我手工布線。手工布線中需要注意頂層和底層的線不要平行,防止信號(hào)干擾。不要有小于90度的拐角。根據(jù)通過(guò)的電流設(shè)置線寬,等等。將第一版印制出來(lái)后,焊接完成,燒錄程序。發(fā)現(xiàn)一些錯(cuò)誤,不得不通過(guò)割線,飛線等方式來(lái)調(diào)試。然后在第一版上調(diào)試軟件,然后基本實(shí)現(xiàn)了預(yù)期功能。有些問(wèn)題無(wú)法確定是軟件問(wèn)題還是硬件問(wèn)題,所以這一步很艱難。雖然,較為穩(wěn)妥的開(kāi)發(fā)流程是,先在開(kāi)發(fā)板上調(diào)試代碼,確認(rèn)代碼無(wú)誤后根據(jù)預(yù)期功能對(duì)開(kāi)發(fā)板進(jìn)行硬件裁剪,然后制版。這樣子可以避免軟件硬件問(wèn)題混淆,這也是學(xué)生學(xué)習(xí)常用的開(kāi)發(fā)手段。但是工業(yè)開(kāi)發(fā)是沒(méi)有開(kāi)發(fā)板的,直接由硬件工程師設(shè)計(jì)好板子,軟件工程師寫程序。為了更好地鍛煉自己,所以我采用了后者。艱難地修正了一些錯(cuò)誤,優(yōu)化了器件布局后,發(fā)出第二版。圖31器件布局3D效果圖32電源部分的硬件設(shè)計(jì)考慮到本設(shè)計(jì)將采用電池供電,且各個(gè)器件均可在3V電壓下工作,因此電源部分設(shè)計(jì)較為簡(jiǎn)單,只采用了磁珠和電容,抑制高頻噪聲和信號(hào)干擾。電池使用一段時(shí)間后會(huì)使供電電壓下降,這個(gè)問(wèn)題本可以通過(guò)采用升壓電路來(lái)解決。但是考慮到升壓電路的效率最高只有80多,會(huì)浪費(fèi)較多電量,所以放棄了這個(gè)設(shè)計(jì)。圖32電源和芯片濾波電路原理圖圖33電源模塊3D效果圖33STM32和ADXL345硬件設(shè)計(jì)MCU與加速度芯片都是較小的封裝,手工焊接難度大。MCU的封裝為L(zhǎng)QFP48,相鄰管腳的中心距離僅僅05MM,手工焊接需要格外小心,要想成功焊接需要掌握一些方法。首先,用烙鐵對(duì)一個(gè)最邊角的焊盤上錫,建議是1號(hào)引腳(在PCB上是小白圈標(biāo)記的,在單片機(jī)封裝上是凹陷的小坑標(biāo)記的),然后用鑷子將單片機(jī)按照正確的方位擺正,用烙鐵焊接上1號(hào)引腳,多焊接周邊的幾個(gè)一腳也是可以的,因?yàn)檫@一步的目的是固定,而不是一步到位,如果歪斜,可以加熱焊錫重新調(diào)整位置。在烙鐵溫度350度的情況下,時(shí)間不是太長(zhǎng)的話,芯片一般不會(huì)被燒壞。MCU固定好之后,用較多的焊錫把其它三個(gè)邊的引腳全焊上,同時(shí)要稍微用力向下按一下引腳,使引腳可以貼在焊盤上。這時(shí)肯定會(huì)出現(xiàn)引腳的粘連的,這不是焊接失敗,只要沿著引腳的平行方向把多余的錫帶走就好。使用烙鐵帶走焊錫的過(guò)程既要注意烙鐵頭的運(yùn)動(dòng)軌跡,不可貼著PCB板,以免燙斷走線,又要注意操作速度,太慢的話無(wú)法帶走多余的焊錫。最后仔觀察,確保沒(méi)有短路。ADXL345的芯片封裝看上去好像間距較大,實(shí)則是板子焊接過(guò)程中最艱難的部分。由于它的引腳全在底面,只能使用熱風(fēng)槍焊接。首先要用酒精擦一擦焊盤,確保沒(méi)有灰塵或者雜物;然后在焊盤上小心的涂上一點(diǎn)焊錫膏,需要保證每個(gè)觸點(diǎn)上都有焊錫膏且焊錫膏不能過(guò)多。然后將芯片小心放在焊盤上,注意1號(hào)引腳的位置,各個(gè)引腳與焊盤的位置對(duì)正。用鑷子固定住芯片,將熱風(fēng)槍的溫度調(diào)整到350度左右,對(duì)準(zhǔn)芯片加熱約10秒。小心鑷子也可能會(huì)變燙,最好使用帶有膠皮的鑷子。熱風(fēng)槍需要用最大風(fēng)嘴最小風(fēng)量對(duì)準(zhǔn)芯片吹。焊錫膏融化時(shí),要確認(rèn)芯片引腳與焊盤對(duì)準(zhǔn)。注意此時(shí)PCB非常燙,不要立即用手接觸PCB板。檢查的時(shí)候可以用萬(wàn)用表確定有沒(méi)有短路,根據(jù)原理圖可以看到,1、6引腳聯(lián)通,2、4、5引腳聯(lián)通,其它腳聯(lián)通的話就說(shuō)明短路了。如果有虛焊,可以用烙鐵尖沾一點(diǎn)焊錫壓一下焊盤,焊錫就會(huì)自動(dòng)補(bǔ)到引腳和焊盤之間;如果短路就只能用風(fēng)槍把ADXL345取下來(lái)重新焊接。圖34STM32F103C8T6原理圖圖35ADXL345原理圖圖36STM32F103C8T6的3D效果圖圖37加速度芯片貼盤效果圖34全彩燈珠的設(shè)計(jì)全彩燈珠可簡(jiǎn)稱為RGBLED,本設(shè)計(jì)采用的是5050封裝。本質(zhì)上來(lái)說(shuō)RGBLED就是三個(gè)LED燈。根據(jù)色光三原色原理,紅,綠,藍(lán)三種色的色光就足以產(chǎn)生其它各種顏色的光。燈珠本身白色的,配合變換的燈光,非常漂亮。LED燈的焊接十分簡(jiǎn)單,卻容易犯錯(cuò),需要注意焊接溫度,不能超過(guò)315度,且盡可能在3秒鐘之內(nèi)完成焊接。因?yàn)镽GBLED非常容易燒壞。LED的正負(fù)極需要事先用萬(wàn)用表確認(rèn)。注意3個(gè)限流電阻的阻值是不一樣的,藍(lán)色LED阻值較小。圖38全彩燈珠原理圖圖39全彩燈珠貼盤效果圖35轉(zhuǎn)向按鍵與紅外線激光燈的設(shè)計(jì)本設(shè)計(jì)的預(yù)期要實(shí)現(xiàn)轉(zhuǎn)向燈功能,至少有兩種方案其1是通過(guò)讀取ADXL345的值。轉(zhuǎn)彎的時(shí)候在轉(zhuǎn)彎的方向會(huì)有一個(gè)小的加速度,單純檢測(cè)這個(gè)加速度難度較大。不過(guò)正常騎行的時(shí)候,轉(zhuǎn)彎一般是需要減速的,這兩個(gè)條件放在一起來(lái)檢測(cè)的話可以減小難度。這個(gè)方案的弊端是,只能在轉(zhuǎn)向的操作發(fā)生之后,才顯示轉(zhuǎn)彎,無(wú)法在轉(zhuǎn)向之前就給出指示和預(yù)警,所以舍棄此方案。其2是主動(dòng)觸發(fā)的方案。主動(dòng)觸發(fā)至少包括兩個(gè)方法。1是利用車架與車把的傾角變化。直線騎行的時(shí)候車架與車把夾角是垂直的,但是轉(zhuǎn)向的時(shí)候夾角就會(huì)發(fā)生變化。如果在車架與車把之間放置金屬片,使之向前騎行的時(shí)候不接觸,轉(zhuǎn)動(dòng)車把,也就是轉(zhuǎn)向的時(shí)候接觸,就可以檢測(cè)到轉(zhuǎn)向。這個(gè)方法的缺點(diǎn)也是在轉(zhuǎn)向操作之后才可以做出指示,故舍棄。2是有騎行者主動(dòng)按下按鍵觸發(fā),就是本設(shè)計(jì)采用的方案。轉(zhuǎn)向按鍵是控制紅外線激光燈的開(kāi)關(guān),也是模式切換的開(kāi)關(guān)。紅外線激光燈是指示左右轉(zhuǎn)向的信號(hào)燈。激光燈發(fā)射出來(lái)的光投影到地面是一字線狀,而不是點(diǎn)狀。在光線較暗的情況下可以清楚地看到地上是平行于自行車的紅色線條,這樣就可以警示其它車輛注意自行車的轉(zhuǎn)向。兩者的邏輯關(guān)系非常簡(jiǎn)單,按左轉(zhuǎn)按鍵,則左邊的紅外線激光的閃爍,左側(cè)地面形成線狀投影。右側(cè)亦然。但真正實(shí)現(xiàn)的時(shí)候還需要考慮一些別的因素。首先是按鍵的選型。在實(shí)際使用中肯定是不能用輕觸開(kāi)關(guān)的,太小了。我選擇了一款較大的按鍵開(kāi)關(guān),有彈簧結(jié)構(gòu),自動(dòng)復(fù)位。也有螺絲與金屬片,可以方便地固定線。圖310轉(zhuǎn)向按鍵電路原理圖紅外線激光頭選用了一款3V,5MW的工業(yè)級(jí)激光燈頭。由于工作電流可能達(dá)到20MA,所以直接用單片機(jī)的引腳驅(qū)動(dòng)可能是有一定的危險(xiǎn)的,因此電路設(shè)計(jì)中采用了NPN型三極管驅(qū)動(dòng)。三極管工作在開(kāi)關(guān)狀態(tài),這樣子單片機(jī)的引腳只需要很小的驅(qū)動(dòng)電流就可以控制紅外線激光頭的亮滅。圖311紅外線激光頭電路原理圖關(guān)于紅外線激光頭的選型也是很麻煩的一件事。在多數(shù)人的印象中紅外線激光頭非常亮,但是那只是點(diǎn)狀光源,換成線狀的就會(huì)發(fā)現(xiàn)亮度比較低。采用較大功率的紅外線激光頭的話會(huì)浪費(fèi)較多的電量,同時(shí)低電壓大功率的激光頭非常容易損壞。即便是本設(shè)計(jì)選用了一款工業(yè)級(jí)的激光頭,也還是在調(diào)試過(guò)程中就壞掉了好幾個(gè)。如果升壓,采用5V或者更高的電壓,會(huì)使整個(gè)設(shè)計(jì)復(fù)雜得多。不但需要更大的體積,來(lái)至少串聯(lián)3個(gè)電池,還需要穩(wěn)壓管來(lái)給芯片提供合適的電壓。多次比較,本設(shè)計(jì)最終選取了這款3V,5MW的工業(yè)級(jí)激光燈頭。36其它硬件設(shè)計(jì)SWD調(diào)試接口調(diào)試接口采用了SWD接口。用標(biāo)準(zhǔn)的JTAG調(diào)試口需要5個(gè),而用SWD調(diào)試接口只用4根線,2個(gè)IO口,但它們達(dá)到的效果是一樣的,加上SWD調(diào)試也可以使用JLINK仿真器,所以選擇SWD調(diào)試。圖312SWD調(diào)試接口原理圖串口和BOOT接口串口調(diào)試是調(diào)試過(guò)程中非常有力的工具,它可以直接將需要的數(shù)據(jù)通過(guò)串口調(diào)試助手打印到電腦屏幕上,直觀的看到某個(gè)變量的值或者IO口的電平狀況,是單片機(jī)開(kāi)發(fā)的必備接口。所以本設(shè)計(jì)也保留了STM32的串口。BOOT可以確定STM32的啟動(dòng)模式,本設(shè)計(jì)出于調(diào)試加速度芯片設(shè)定值的需要,保留了BOOT0接口,這樣子就可以將加速度值寫入系統(tǒng)存儲(chǔ)器,再?gòu)南到y(tǒng)存儲(chǔ)器驅(qū)動(dòng)程序,在上位機(jī)上就可以看到加速度值,極大提升了調(diào)試效率。表31啟動(dòng)模式說(shuō)明表啟動(dòng)模式選擇引腳BOOT1BOOT0啟動(dòng)模式說(shuō)明X0主閃存存儲(chǔ)器主閃存存儲(chǔ)器被選為啟動(dòng)區(qū)域01系統(tǒng)存儲(chǔ)器系統(tǒng)存儲(chǔ)器被選為啟動(dòng)區(qū)域11內(nèi)置SRAM內(nèi)置SRAM被選為啟動(dòng)區(qū)域圖313串口和BOOT接口原理晶振由于本設(shè)計(jì)中沒(méi)有對(duì)時(shí)鐘要求較高的部分,STM32F103C8T6自帶的8MHZ內(nèi)部RC振蕩器就足夠使用了,所以就沒(méi)有采用外部晶振。圖314HSI與系統(tǒng)時(shí)鐘(SYSCLK)的關(guān)系4軟件設(shè)計(jì)41STM32固件庫(kù)開(kāi)發(fā)概述意法半導(dǎo)體公司開(kāi)發(fā)了一套STM32固件庫(kù)。所謂的固件庫(kù),其實(shí)就是函數(shù)的組合,而這些函數(shù)操作的對(duì)象,就是單片機(jī)的各個(gè)寄存器。把完成某一功能,比如初始化IO口或者初始化定時(shí)器的寄存器集成在一個(gè)或者幾個(gè)函數(shù)中,這樣子開(kāi)發(fā)人員在寫代碼的時(shí)候就不必直接操作寄存器。STM32當(dāng)然也可以像51系列單片機(jī)一樣直接操作寄存器,但是這種開(kāi)發(fā)方式需要開(kāi)發(fā)人員熟練掌握這些寄存器的用法。STM32這種級(jí)別的CPU至少集成了幾百個(gè)寄存器,全部熟悉這些寄存器對(duì)開(kāi)發(fā)者來(lái)說(shuō)時(shí)間花費(fèi)太大,不能快速上手。由于單片機(jī)的代碼主要有C語(yǔ)言編寫(仍有一些對(duì)效率要求較高的地方用匯編語(yǔ)言),C語(yǔ)言是一種面向過(guò)程的語(yǔ)言,函數(shù)是面向過(guò)程的語(yǔ)言中最重要的組成部分,所以直接將寄存器操作封裝在函數(shù)中是可行的,方便的。STM32的固件庫(kù)開(kāi)發(fā)方式是高效的。由于官方固件庫(kù)的強(qiáng)大,在軟件設(shè)計(jì)中與其說(shuō)是寫代碼,不如說(shuō)是組建代碼。本次軟件設(shè)計(jì)基本流程就是考慮函數(shù)的預(yù)期功能,了解固件庫(kù)函數(shù)的使用方法,調(diào)用函數(shù)實(shí)現(xiàn)功能。42程序代碼結(jié)構(gòu)本設(shè)計(jì)的代碼遵行著可讀性高,易調(diào)試,易維護(hù)的原則,經(jīng)過(guò)了多次修改,最終實(shí)現(xiàn)了以下的幾點(diǎn)要求1按照硬件區(qū)分,不同的程序模塊放在不同的C文件中。2同一個(gè)硬件按照不同的功能區(qū)分,封裝在不同的函數(shù)中。3不同的函數(shù)根據(jù)自己的作用域和工作特點(diǎn),使用特定的關(guān)鍵字。4函數(shù)的命名根據(jù)其功能來(lái)確定,多是其功能的英文簡(jiǎn)寫。5使用到的管腳、中斷和中斷處理函數(shù)按其功能進(jìn)行全英文大寫宏定義。6謹(jǐn)慎地使用了全局變量和局部靜態(tài)變量。以上這幾點(diǎn)也是單片機(jī)模塊化編程需要注意的地方。表41程序中C文件功能說(shuō)明表程序中的文件名功能ACC_SENSORC加速度傳感器的讀、寫、中斷函數(shù)初始化以及中斷處理函數(shù)BREAK_LIGHTC剎車燈模式定時(shí)器初始化和處理函數(shù)BUTTONC按鍵定義,中斷初始化和處理函數(shù)COLOR_LIGHTC呼吸燈模式(也可稱為彩燈模式)中斷初始化和處理函數(shù)DISPLAY_STATEC模式選擇的初始化和處理函數(shù)LEDC全彩燈珠和紅外線激光燈的定義、初始化和中斷處理POWERC定義未使用的引腳,初始化用電模式轉(zhuǎn)換函數(shù)XL345C加速度芯片初始化和SPI接口處理函數(shù)以上C文件的功能雖然不相同,但基本結(jié)構(gòu)都是一樣的,以BUTTONC為例說(shuō)明,別的就不再贅述。表42BUTTONC的代碼結(jié)構(gòu)說(shuō)明結(jié)構(gòu)功能舉例頭文件將系統(tǒng)寄存器定義和其它文件函數(shù)定義添加到文件INCLUDE“STM32F10XH“INCLUDE“UTILSH“INCLUDE“BUTTONH“宏定義將引腳、中斷處理等系統(tǒng)底層的功能起別名,方便閱讀DEFINEBTN_RIGHT_PINGPIO_PIN_1DEFINEBTN_RIGHT_IRQEXTI1_IRQN中斷初始化設(shè)定中斷的名字、優(yōu)先級(jí)、觸發(fā)方式,管腳映射等STATICVOID_INITBUTTONVOIDSTATICVOID_INITANTISHAKETIMERVOID中斷處理函數(shù)或者功能處理函數(shù)根據(jù)預(yù)期功能執(zhí)行相應(yīng)的處理任務(wù)VOIDBTN_LEFT_IRQROUTINEVOIDVOIDBTN_ANTISHAKE_IRQROUTINEVOID43MAINC結(jié)構(gòu)說(shuō)明與常見(jiàn)的裸機(jī)程序不同,本設(shè)計(jì)的主函數(shù)非常簡(jiǎn)潔。這是因?yàn)槟K化設(shè)計(jì),將不同的功能封裝到不同的函數(shù)中,所以主函數(shù)得以一目了然。MAINC中代碼如下INCLUDE“STM32F10XH“INCLUDE“UTILSH“INCLUDE“ACC_SENSORH“INCLUDE“DISPLAY_STATEH“INCLUDE“BUTTONH“INCLUDE“LEDH“INCLUDE“XL345H“INCLUDE“POWERH“INTMAINPWR_SETUNUSEDPIN/設(shè)置未使用的引腳HW_COMMONINIT/硬件配置,設(shè)置中斷優(yōu)先級(jí)和上拉輸入LED_INIT/初始化LED引腳和升壓電路引腳HW_INITSYSTICK/配置05MS系統(tǒng)時(shí)鐘的中斷和優(yōu)先級(jí)ACC_INIT/三軸加速度芯片的初始化STATE_INIT/開(kāi)啟剎車燈模式(默認(rèn)模式),從ADXL讀數(shù)據(jù),開(kāi)啟定時(shí)器BTN_INIT/按鍵和定時(shí)器的初始化WHILE1PWR_ENTERSLEEPMODE/開(kāi)始休眠,等待中斷可以看到其結(jié)構(gòu)僅僅包括頭文件和主函數(shù)兩部分。而主函數(shù)內(nèi)部?jī)H僅做得是初始化,然后在死循環(huán)中進(jìn)入睡眠,等待中斷。這里的WHILE(1)內(nèi)并不是不斷輪詢,而是進(jìn)入睡眠模式,降低功耗。在睡眠模式中CORTEXM3內(nèi)核停止,所有外設(shè)包括CORTEXM3核心的外設(shè),如NVIC、系統(tǒng)時(shí)鐘等仍在運(yùn)行,也就是說(shuō)仍然可以通過(guò)ADXL345芯片的中斷或者按鍵中斷來(lái)喚醒MCU。44按鍵功能軟件設(shè)計(jì)模式切換在一般情況下是需要一個(gè)按鍵的,但是左右轉(zhuǎn)向已經(jīng)各分配一個(gè)按鍵了,3個(gè)按鍵全部放在車把上的話既不美觀,也不方便,出于簡(jiǎn)化設(shè)備的需要,設(shè)定為長(zhǎng)按(2秒以上)左按鍵或者右按鍵則改變模式。按鍵功能的邏輯很簡(jiǎn)單檢測(cè)到外部中斷線1和2電平為高就消抖,電平仍然變?yōu)楦呔褪前存I按下了,然后閃爍紅外線激光燈,同時(shí)進(jìn)行長(zhǎng)按檢測(cè)。確是長(zhǎng)按的話就切換模式。關(guān)于消抖和確定按鍵時(shí)長(zhǎng)的延時(shí)功能也是本設(shè)計(jì)考慮的地方。延時(shí)可以通過(guò)DELAY函數(shù),也就是讓單片機(jī)不斷地做加法來(lái)消耗時(shí)間這種方法,或者設(shè)置定時(shí)器,采用定時(shí)器中斷的方法。反復(fù)對(duì)比效果,最終決定由定時(shí)器來(lái)消抖,用延時(shí)函數(shù)來(lái)確定按鍵時(shí)長(zhǎng)。原因如下在正常騎行中,由于顛簸等因素,按鍵的外部中斷引腳很可能經(jīng)常產(chǎn)生瞬間的干擾電流。也就是說(shuō),在沒(méi)有按下按鍵的情況下,也可能在外部中斷線上讀到上升電流。嚴(yán)格來(lái)說(shuō),這里所指的消抖功能并不是消除按鍵按下的過(guò)程中瞬間的電平不穩(wěn)定,而是消除沒(méi)有按下按鍵,由別的因素產(chǎn)生的干擾電平。如果此時(shí)喚醒單片機(jī),執(zhí)行延時(shí)函數(shù),則很多的喚醒是不必要的,省電效果不如用定時(shí)器,即便CPU繼續(xù)休眠,也可以實(shí)現(xiàn)延時(shí)功能。確定按下按鍵后,判斷長(zhǎng)按還是短按則由延時(shí)函數(shù)來(lái)判斷。看似是讓單片機(jī)做無(wú)意義的數(shù)數(shù),實(shí)則是因?yàn)橐环矫鎲纹瑱C(jī)已經(jīng)喚醒,執(zhí)行延時(shí)函數(shù)不會(huì)額外浪費(fèi)電量;另一方面為了防止按鍵的定時(shí)器中斷被按鍵外部中斷打斷,定時(shí)器中斷的優(yōu)先級(jí)是比較高的,此時(shí)仍然使用定時(shí)器中斷可能丟失其它中斷。這里需要說(shuō)明的是按鍵的定時(shí)器中斷和外部中斷的關(guān)系。兩者優(yōu)先級(jí)均為1,但定時(shí)器中斷不會(huì)被外部中斷打斷。定時(shí)器中斷的開(kāi)啟是在外部中斷的執(zhí)行函數(shù)中進(jìn)行的。外部中斷線的第二次電平判斷發(fā)生在定時(shí)器中斷的處理函數(shù)中。定時(shí)器設(shè)定的時(shí)長(zhǎng)就是外部中斷線(也就是按鍵的檢測(cè)引腳)兩次有效高電平之間的延時(shí)函數(shù)。30毫秒過(guò)后低電平高電平PB2為高電平PB1為高電平圖41按鍵觸發(fā)流程圖設(shè)定定時(shí)器2開(kāi)啟等待外部中斷1或者2觸發(fā)進(jìn)入定時(shí)器2處理函數(shù),關(guān)閉定時(shí)器,檢測(cè)案件引腳電平讀取PB1和PB2的電平干擾,不處理判斷按鍵進(jìn)入左按鍵處理函數(shù)進(jìn)入右按鍵處理函數(shù)沒(méi)有按下,是短按仍然按下,長(zhǎng)按圖42按鍵處理流程圖45ADXL345的軟件設(shè)計(jì)ADXL345與單片機(jī)之間通過(guò)SPI協(xié)議連接,本文22已經(jīng)介紹過(guò)了。剎車狀態(tài)的判斷方法是計(jì)算X,Y,Z軸加速度的平均值,每次比較當(dāng)前加速度和平均加速度的差值,從而判斷是否有狀態(tài)變化。這樣可以減小安裝傾斜造成的測(cè)量誤差。不過(guò)安裝的時(shí)候仍然要盡量使加速度芯片與地面垂直,否則會(huì)增加錯(cuò)誤率。比較加速度的時(shí)候除了水平方向,豎直方向的加速度也考慮在內(nèi),因?yàn)轭A(yù)期功能中有檢測(cè)到連續(xù)震動(dòng)時(shí)喚醒的功能。參數(shù)的調(diào)整時(shí)使用了STM32的BOOT啟動(dòng)功能,將測(cè)量到的加速度值記錄在單片機(jī)的FLASH中,下次啟動(dòng)時(shí)輸出。這樣可以收集到騎行狀態(tài)中的加速度值,下次調(diào)整參數(shù)時(shí)依據(jù)記錄的數(shù)值來(lái)調(diào),提高了效率。現(xiàn)在加速度傳感器的參數(shù)基本上是一個(gè)可用的狀態(tài),靈敏度還算比較高,誤亮的幾率很小(加速較快時(shí)誤亮)。ADXL芯片與單片機(jī)之間通信的邏輯很簡(jiǎn)單,見(jiàn)下邊的流程圖。左/右按鍵處理函數(shù)紅外線激光燈頭閃爍2次,用時(shí)約2秒再次檢測(cè)左/右按鍵閃爍8次結(jié)束按鍵處理切換模式剎車沒(méi)有剎車剎車沒(méi)有剎車沒(méi)超過(guò)超過(guò)30秒圖43加速度芯片與單片機(jī)通信流程圖46模式切換的軟件設(shè)計(jì)本設(shè)計(jì)中單片機(jī)主要工作在正常模式和睡眠模式。正常工作模式包括了剎車燈模式和呼吸燈模式。它們的區(qū)別和聯(lián)系見(jiàn)下圖加速度芯片檢測(cè)到連續(xù)震動(dòng)喚醒單片機(jī)單片機(jī)推出睡眠模式,進(jìn)入剎車燈模式?jīng)]接受加速度值判斷加速度亮黃燈,計(jì)時(shí)30秒判斷剎車狀態(tài)變化亮紅燈,剎車判斷是否超過(guò)30秒哦關(guān)閉LED,休眠圖43正常模式與睡眠模式關(guān)系示意圖剎車燈模式和呼吸燈模式的轉(zhuǎn)換是由一個(gè)模式標(biāo)志位G_DISSTATE決定的。G_DISSTATE的值取自一個(gè)枚舉類型。ENUMDISPLAY_STATESTATE_BREAK_LIGHT,/剎車燈STATE_COLORLIGHT,/呼吸燈STATE_MAX,/此模式重新回到剎車燈這個(gè)枚舉類型決定了剎車燈是初始狀態(tài)。狀態(tài)的轉(zhuǎn)換是靠函數(shù)STATE_NEXTSTATE來(lái)執(zhí)行的。轉(zhuǎn)換時(shí)只需要G_DISSTATE,就可以改變標(biāo)志位。邏輯上是非常簡(jiǎn)單的。VOIDSTATE_NEXTSTATEVOIDG_DISSTATEIFSTATE_MAXG_DISSTATE/再按一下回到默認(rèn)狀態(tài)G_DISSTATESTATE_BREAK_LIGHTSTATE_SETSTATEENUMDISPLAY_STATEG_DISSTATERETURN不同模式的處理函數(shù)都是通過(guò)一個(gè)指針函數(shù)切換的。TYPEDEFVOIDACC_IRQHANDLERU8IRQ定義了一個(gè)函數(shù)指針,相當(dāng)于把類型VOIDU8IRQ,取了一個(gè)別名叫做ACC_IRQHANDLER。然后通過(guò)語(yǔ)句ACC_IRQHANDLERHANDLER,G_HANDLERHANDLER就傳遞了處理函數(shù)。HANDLER在BLK_START,COLOR_START,這兩個(gè)模式開(kāi)始函數(shù)中被賦值。表43剎車燈模式和呼吸燈模式的對(duì)比表模式全彩燈珠紅外線激光燈加速度傳感器退出剎車燈模式紅色高亮表示剎車,紫色(青色)表示正常行駛無(wú)操作不亮按下按鍵對(duì)應(yīng)方向的閃爍工作,不停向單片機(jī)提供加速度值以供判斷剎車與否長(zhǎng)按轉(zhuǎn)向按鍵進(jìn)入呼吸燈模式靜止30秒睡眠呼吸燈模式色彩漸變,兩燈交替閃爍常亮,在地面上投影出兩條光線按下按鍵對(duì)應(yīng)方向仍閃爍不工作長(zhǎng)按轉(zhuǎn)向按鍵進(jìn)入剎車燈模式靜止不會(huì)進(jìn)入睡眠狀態(tài)5總結(jié)51在調(diào)試過(guò)程中出現(xiàn)的問(wèn)題和解決辦法1網(wǎng)絡(luò)標(biāo)號(hào)寫錯(cuò)導(dǎo)致的PCB錯(cuò)誤。由于原理圖中,ADXL345與STM32的喚醒線網(wǎng)絡(luò)標(biāo)號(hào)不一致,一個(gè)是WKUP,一個(gè)是WAKEUP,導(dǎo)致PCB中這兩個(gè)本該連接的引腳沒(méi)能連接。解決辦法跳線。由于單片機(jī)引腳很小,加速度芯片特殊的封裝更是看不到引腳,所以這個(gè)跳線的難度設(shè)置比焊接還大。并且即便跳線的一段粘到來(lái)對(duì)應(yīng)引腳上,由于受力面積太小,輕輕一拽就掉了(我因?yàn)檫@個(gè)原因直接拽掉了加速度芯片的焊盤,報(bào)廢了一個(gè)板子),所以跳線成功后就直接用熱膠槍把線固定在了板子上。2全彩燈珠封裝畫錯(cuò),正負(fù)極畫反了。解決辦法還好是二極管,接反了也不會(huì)有太大損害。在原理圖中看不出來(lái)畫錯(cuò)了,是因?yàn)殄e(cuò)在這個(gè)元器件的原理圖和封裝是自己畫的,沒(méi)能看出來(lái)引腳反了。第一個(gè)燈的解決方案是跳線6根。用笨的方法修正,但是板子也變得很難看。第二個(gè)燈的解決方案是把全彩燈珠進(jìn)行中心對(duì)稱,由下列左圖的方位改成了右邊的樣子,不過(guò)原先的燈的順序中第1個(gè)和第3個(gè)就互換了,由BRG變?yōu)镚RB。相應(yīng)的藍(lán)色和綠色燈珠的限流電阻也需要換一下。3接插件封裝沒(méi)有注意,直接使用了標(biāo)準(zhǔn)庫(kù)中HEADER41的封裝,所以SWD的封裝僅僅是254間距的單排插針。解決辦法手頭有一個(gè)正點(diǎn)原子的戰(zhàn)艦開(kāi)發(fā)板,里邊有一個(gè)JLINK,翻了一下數(shù)據(jù)手冊(cè),發(fā)現(xiàn)JTAG接口可以用4根線完成SWD調(diào)試,就按照引腳說(shuō)明接了4跟杜邦線在板子的4根單排插針上。1號(hào)引腳VCCVCC7號(hào)引腳TMSSWDIO9號(hào)引腳TCKSWDCLK4號(hào)引腳GNDGND圖51JTAG用作SWD調(diào)試示意圖52在軟件設(shè)計(jì)中總結(jié)的技巧1先測(cè)試硬件,再進(jìn)行模塊化編程。由于硬件電路是自己設(shè)計(jì)并且手工焊接的,很可能不可靠,所以在寫代碼之前先寫一些非常簡(jiǎn)單的小程序測(cè)試一下某塊硬件是否可用。如LED與紅外線激光燈的測(cè)試,僅僅需要一個(gè)GPIO_SETBITS函數(shù)就可以看到亮不亮。隨后進(jìn)行模塊化編程,各個(gè)模塊分開(kāi)來(lái)寫,將這個(gè)模塊的功能調(diào)試完畢再進(jìn)行下一個(gè)模塊。調(diào)試好的模塊函數(shù)直接用關(guān)鍵字STATIC隱藏在本文件中。2了解嵌入式C語(yǔ)言的特點(diǎn),結(jié)合實(shí)際使用嵌入式C語(yǔ)言編程技巧由于在學(xué)校時(shí)老師講述的C語(yǔ)言課程與嵌入式并沒(méi)有什么聯(lián)系,其深度與效果差不多只能讓學(xué)生記住黑窗口與PRINTF,這樣的C基礎(chǔ)在組建本設(shè)計(jì)的代碼的時(shí)候還是很有壓力的,因?yàn)榍度胧紺與C的知識(shí)重點(diǎn)是不太一樣的。如STATICINLINEVOID_DISPLAYDECELERATIONVOID關(guān)鍵字,INLINE,表明這是一個(gè)內(nèi)聯(lián)函數(shù),類似于宏定義,用預(yù)處理器實(shí)現(xiàn),不用顧忌函數(shù)的參數(shù)壓棧,代碼生成等一系列操作,所以效率很高。再如TYPEDEF,EXTERN,STRUCT等,這些關(guān)鍵字在C語(yǔ)言學(xué)習(xí)的時(shí)候不算事重點(diǎn),但卻是嵌入式開(kāi)發(fā)中必須注意的,掌握這些技巧可以使嵌入式軟件開(kāi)發(fā)更有效率。53個(gè)人成長(zhǎng)借由這次畢業(yè)設(shè)計(jì)的機(jī)會(huì),在軟件設(shè)計(jì)方面,我重新全面地學(xué)習(xí)了STM32單片機(jī)的的使用。以前僅僅是看過(guò)教學(xué)視頻,把單片機(jī)的例程下載到開(kāi)發(fā)板中看一下,實(shí)則過(guò)后即忘,沒(méi)有多大的收獲。這次是實(shí)實(shí)在在自己獨(dú)立開(kāi)發(fā)一個(gè)電子設(shè)備,從硬件到軟件有許許多多細(xì)節(jié)需要考慮,這是以前學(xué)習(xí)所沒(méi)有想過(guò)的。遇到的一些問(wèn)題,也無(wú)法像從前一樣,直接問(wèn)別人或者去開(kāi)發(fā)板的技術(shù)論壇發(fā)問(wèn),而是自己參考數(shù)據(jù)手冊(cè)來(lái)解決問(wèn)題。我發(fā)現(xiàn)善于使用數(shù)據(jù)手冊(cè)可以解決大多數(shù)的嵌入式軟件問(wèn)題。在硬件設(shè)計(jì)的方面我也收獲很多。重新學(xué)習(xí)了AD13的使用,繪制原理圖和PCB。這些倒還是書(shū)本中可以學(xué)到的知識(shí),器件采購(gòu)的知識(shí)真是無(wú)從學(xué)起,很多細(xì)節(jié)需要考慮。雖然淘寶上有很多根據(jù)BOM表配單的電子器件商人,但是具體的細(xì)節(jié)人家問(wèn)起,我還是不清楚。比如紅外線激光燈,我告訴人家我需要3V,電流20MA以下,尺寸較小,卻沒(méi)注意我想要的是線狀的,最終人家給我發(fā)來(lái)點(diǎn)狀的。諸如此類的問(wèn)題是需要注意的。發(fā)現(xiàn)了很多問(wèn)題是讓人開(kāi)心的事,解決這些問(wèn)題可以讓自己成長(zhǎng)。這次畢業(yè)設(shè)計(jì)實(shí)施的過(guò)程中,常常感覺(jué)在技術(shù)方面心有余而力不足,知識(shí)體系上有較多欠缺。但令人遺憾的是,大學(xué)馬上就要結(jié)束,沒(méi)有足夠的時(shí)間來(lái)彌補(bǔ)自己的不足了。只有爭(zhēng)取以后的時(shí)間里加倍努力了。參考文獻(xiàn)1邱關(guān)源,羅先覺(jué)電路M北京高等教育出版社M,20061681702余孟嘗數(shù)字電子技術(shù)基礎(chǔ)簡(jiǎn)明教程M北京高等教育出版社,20062592633楊素行模擬電子技術(shù)基礎(chǔ)簡(jiǎn)明教程M北京高等教育出版社,20061391584黃智偉,王兵朱衛(wèi)華STM3232位ARM微控制器應(yīng)用設(shè)計(jì)與實(shí)踐M北京北京航空航天大學(xué)出版社,20125劉軍例說(shuō)STM32M北京北京航空航天大學(xué)出版社M,201169756STEPHENPRATACPRIMERPLUS北京人民郵電出版社M,20081251547正點(diǎn)原子STM32開(kāi)發(fā)指南V13數(shù)據(jù)手冊(cè)8JOSEPHYIUC0RTEXM3權(quán)威指南V12數(shù)據(jù)手冊(cè)9STM3F10XXXV12參考手冊(cè)致謝我的畢業(yè)設(shè)計(jì)可以圓滿完成,首先要感謝我們的學(xué)院物理與電子工程學(xué)院。大學(xué)四年,我在物理院學(xué)到了很多知識(shí),也感謝物理院從大一就開(kāi)始給予學(xué)生各種創(chuàng)新實(shí)踐的機(jī)會(huì)。這些創(chuàng)新實(shí)踐對(duì)我個(gè)人來(lái)說(shuō)影響非凡。借此機(jī)會(huì),我也要感謝XXX老師。從大一開(kāi)始,XXX老師就指導(dǎo)我開(kāi)始學(xué)習(xí)嵌入式的知識(shí),讓我可以在物理院的嵌入式實(shí)驗(yàn)室內(nèi)學(xué)習(xí)。袁老師對(duì)技術(shù)的執(zhí)著和對(duì)嵌入式行業(yè)的理解一直鼓舞著我,不斷鉆研技術(shù),提高動(dòng)手。在我的畢業(yè)設(shè)計(jì)的過(guò)程中,袁老師也給予了我很大的支持。也要感謝XXX老師,是他鼓勵(lì)我走出去,見(jiàn)識(shí)更廣闊的世界,我才得以接觸到真正的嵌入式工作環(huán)境,快速成長(zhǎng)。在此謹(jǐn)向XXX老師、XXX老師以及其它電氣專業(yè)的老師致以誠(chéng)摯的謝意和崇高的敬意。在畢業(yè)設(shè)計(jì)的實(shí)施過(guò)程中,我總能感覺(jué)到科技對(duì)人們生活的改變是多么巨大。雖然我的畢業(yè)設(shè)計(jì)只是個(gè)小發(fā)明性質(zhì)的電子作品,但還是對(duì)我個(gè)人產(chǎn)生了很大的影響。最顯著的就是讓我變得熱愛(ài)騎行,特別是夜間騎行,知道我的畢業(yè)設(shè)計(jì)會(huì)在我剎車的時(shí)候自動(dòng)亮起,在呼吸燈的模式下漸變光芒,是非常開(kāi)心的一件事。當(dāng)然我也看到了自身能力和知識(shí)儲(chǔ)備的不足,在未來(lái)的工作中我一定會(huì)不斷提高自己的動(dòng)手能力。從開(kāi)始進(jìn)入課題到論文的順利完成,需要感謝很多可敬的師長(zhǎng)、同學(xué)、朋友,他們給了我無(wú)言的幫助。還有我的室友以及11級(jí)電氣班的每一位同學(xué)們,謝謝你們給我了愉快的大學(xué)時(shí)光。最后,再次對(duì)關(guān)心、幫助我的老師和同學(xué)表示衷心地感謝XXX2015年5月于XXX大學(xué)您好,為你提供優(yōu)秀的畢業(yè)論文參考資料,請(qǐng)您刪除以下內(nèi)容,O_O謝謝ANATIONALSURVEYWASRECENTLYLAUNCHEDTOEVALUATETHEEYEHEALTHOFCHINESECHILDRENANDTEENAGERSONJUNE6,CHINASANNUALNATIONALDAYFOREYECARE,THECHINAYOUTHDEVELOPMENTSERVICECENTERANDZHEJIANGMEDICINE,ALEADINGLISTEDCHINESEPHARMACEUTICALCOMPANY,JOINTLYANNOUNCEDTHEKICKOFFOFTHESURVEYINABOUTONEMONTH,AQUESTIONNAIRECOMPILEDBYTOPEYECAREMEDICALEXPERTSINCHINAWILLBEDISTRIBUTEDTHROUGHMULTIPLEONLINEPARTNERS,INCLUDINGHEALTHSOHUCOM,ASWELLASTHROUGHOFFLINESURVEYEVENTSHELDINUNIVERSITIES,MIDDLESCHOOLSANDPRIMARYSCHOOLSACROSSTHECOUNTRYAREPORTWILLBERELEASEDBASEDONTHESURVEYSTATISTICSANDANALYSIS,ANDMOSTIMPORTANTLY,GUIDELINESFORPARENTSANDYOUTHONHOWTOCAREFORTHEEYESANDPREVENTMYOPIAAGROWINGPROBLEMINCHINASDIGITIZEDSOCIETY,WILLALSOBEATTACHEDONTHEREPORT“MYOPIAISNOTONLYADISEASETHATMAKESPEOPLESEETHINGSBLURRILY,BUTALSOLEADSTOSEVERECOMPLICATIONS,SUCHASGLAUCOMAINCREASEDPRESSUREWITHINTHEEYEBALL,ANDCANCAUSEBLINDNESS,“SAIDZHOUYUEHUA,ANESTABLISHEDEYECARESPECIALISTWITHBEIJINGTONGRENHOSPITAL“ITISVERYIMPORTANTFORPARENTSANDCHILDRENTOKNOWABOUTTHERISKANDCAREFORTHEIREYES“THEREAREABOUT450MILLIONMYOPIAPATIENTSINCHINAAMONGCHINESEMYOPIAPATIENTS,30MILLIONARESEVEREPATIENTS,ACCORDINGTOZHOUTHEPREVALENCEOFMYOPIAAMONGHIGHSCHOOLANDCOLLEGESTUDENTSISMORETHAN70PERCENT,ANDTHESITUATIONISCONTINUOUSLYWORSENING,HEADDEDSUNZHU,DIRECTORWITHTHECHINAYOUTHDEVELOPMENTSERVICECENTER,SAIDLONGHOURSOFSTUDY,LACKOFEXERCISE,ESPECIALLYOUTDOORACTIVITIES,ANDATTACHMENTTOELECTRONICSCREENARESOMEOFTHETOPREASONSBEHINDTHEWIDESPREADMYOPIAPROBLEMS,ANDTHEINCREASEOFYOUNGERPATIENTS,ALTHOUGHCHI
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物業(yè)管理企業(yè)運(yùn)營(yíng)規(guī)范
- 建筑行業(yè)施工質(zhì)量檢驗(yàn)標(biāo)準(zhǔn)
- 企業(yè)銷售管理與客戶關(guān)系手冊(cè)
- 市場(chǎng)營(yíng)銷策略制定與應(yīng)用指南
- 醫(yī)療機(jī)構(gòu)消毒隔離操作培訓(xùn)手冊(cè)(標(biāo)準(zhǔn)版)
- 機(jī)器人編程與維護(hù)手冊(cè)
- 信息化系統(tǒng)開(kāi)發(fā)與測(cè)試手冊(cè)
- 房地產(chǎn)經(jīng)紀(jì)服務(wù)規(guī)范與操作流程
- 汽車維修配件供應(yīng)與銷售指南
- 基礎(chǔ)設(shè)施設(shè)備采購(gòu)與驗(yàn)收指南
- 2025年北京東城區(qū)天街集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 結(jié)腸炎與腸道菌群的關(guān)系
- 婚前教育手冊(cè)
- 2024家用電視機(jī)定制合同2篇
- 護(hù)理壓瘡應(yīng)急預(yù)案
- 工地灌漿包工合同范例
- 咨詢合同模板
- 2024年《國(guó)際貨運(yùn)代理實(shí)務(wù)》考試復(fù)習(xí)題庫(kù)資料(含答案)
- 時(shí)速160公里動(dòng)力集中動(dòng)車組動(dòng)力車講解
- 楊樹(shù)病蟲(chóng)害防治方法
- 乳腺炎與乳腺癌關(guān)聯(lián)研究
評(píng)論
0/150
提交評(píng)論