freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于mc9s12xs128微控制器智能車的軟件設(shè)計(jì)-文庫(kù)吧

2025-06-08 17:18 本頁(yè)面


【正文】 境。 CodeWarrior介紹CodeWarrior[9]包括構(gòu)建平臺(tái)和應(yīng)用所必需的所有主要工具: IDE、編譯器、調(diào)試器、編輯器、鏈接器、匯編程序等。另外,CodeWarrior IDE支持開(kāi)發(fā)人員插入他們所喜愛(ài)的工具,使他們可以自由地以希望的方式工作。   CodeWarrior開(kāi)發(fā)工作室將尖端的調(diào)試技術(shù)與健全開(kāi)發(fā)環(huán)境的簡(jiǎn)易性結(jié)合在一起,將C/C++源級(jí)別調(diào)試和嵌入式應(yīng)用開(kāi)發(fā)帶入新的水平。開(kāi)發(fā)工作室提供高度可視且自動(dòng)化的框架,可以加速甚至是最復(fù)雜應(yīng)用的開(kāi)發(fā),因此對(duì)于各種水平的開(kāi)發(fā)人員來(lái)說(shuō),創(chuàng)建應(yīng)用都是簡(jiǎn)單而便捷的。   它是一個(gè)單一的開(kāi)發(fā)環(huán)境,在所有所支持的工作站和個(gè)人電腦之間保持一致。在每個(gè)所支持的平臺(tái)上,性能及使用均是相同的,無(wú)需擔(dān)心主機(jī)至主機(jī)的不兼容。,該工具可以在Freescale公司首頁(yè)上下載到,約329MB,是軟件的整體界面。 CodeWarrior操作界面 新建工程一般初學(xué),為了加深對(duì)MCU的了解,都采用手寫(xiě)代碼的方式,初始化各個(gè)模塊的寄存器,嘗試新建一個(gè)項(xiàng)目[9],選擇【Greate New Project】,接下來(lái)選擇MCU類型為【MC9S12XS128】,一般常用的調(diào)試模式為:【Full Chip Simulation】和【TBDML】,其它設(shè)置可以默認(rèn),也可以根據(jù)自己的需求來(lái)更改,比如需要在GUI界面下初始化時(shí)鐘和輸入輸出等模塊的話,可以選擇【Processor Expert】,下面就可以開(kāi)始編寫(xiě)自己的代碼了。 編寫(xiě)代碼工程文件生成以后,回到自動(dòng)生成的文件系統(tǒng)。,與系統(tǒng)硬件有關(guān)。,就可以直接在里面輸入源碼了。 編譯和仿真編輯好源碼后,單擊【Make】按鈕,如果沒(méi)有報(bào)錯(cuò),說(shuō)明編譯成功。打開(kāi)bin文件夾,這就是編譯的結(jié)果。再選擇【Full Chip Simulation】仿真模式,單擊【Debug】按鈕,可以在PC上仿真運(yùn)行該程序。 調(diào)試程序CodeWarrior最大的特色就是支持在線背景調(diào)試模式【TBDML】[9],它可以讓開(kāi)發(fā)人員的調(diào)試過(guò)程變得簡(jiǎn)單直觀,它支持單步運(yùn)行、單步跳出、設(shè)置斷點(diǎn)等。它還能顯示程序各個(gè)變量的值和標(biāo)志位,以及匯編代碼、內(nèi)存地址數(shù)據(jù),是整個(gè)調(diào)試工具的界面。 TrueTime Simulaor amp。RealTime Debugger 編程語(yǔ)言 CodeWarrior目前支持C、C++和匯編語(yǔ)言,可以根據(jù)自己的喜好來(lái)選擇。針對(duì)智能車的軟件設(shè)計(jì)來(lái)說(shuō),使用C和匯編語(yǔ)言,已經(jīng)完全夠用了。 C語(yǔ)言主要用來(lái)構(gòu)建整個(gè)程序的框架[9],充實(shí)各個(gè)函數(shù),而匯編語(yǔ)言用到的地方相對(duì)來(lái)說(shuō)就要少很多,主要是用在單片機(jī)的軟件復(fù)位和傳感器的信號(hào)采集等,比如攝像頭的采集,如果用C語(yǔ)言的循環(huán)結(jié)構(gòu)來(lái)寫(xiě)的話,可能會(huì)出現(xiàn)采集到的信號(hào)不完整,或是完全采集不到信號(hào)的情況,這是因?yàn)槠鋱?zhí)行效率不夠高、速度不夠快的原因,在很短的周期內(nèi),根本執(zhí)行不完所有的代碼。 因此,需要換成匯編語(yǔ)言的順序結(jié)構(gòu)來(lái)執(zhí)行,這樣可以大大減少代碼的執(zhí)行時(shí)間,在下一個(gè)中斷來(lái)之前,將中斷服務(wù)程序中的代碼順利執(zhí)行完畢,成功采集到視頻信號(hào)。 規(guī)范化代碼 整個(gè)程序也許不是一個(gè)人就能完成的,因此,保持良好的代碼格式很有必要。全局變量,以及要用到的函數(shù)最好提前申明和初始化,這樣在進(jìn)行遞歸或嵌套調(diào)用的時(shí)候才不會(huì)出現(xiàn)錯(cuò)誤。在重點(diǎn)代碼完成時(shí),最好加上相應(yīng)注釋,不僅方便自己查找和修改BUG,也能為隊(duì)友的學(xué)習(xí)和改進(jìn)提供幫助。在需要保證完全運(yùn)行的函數(shù),可以采用“臨界區(qū)域保護(hù)的方法” ,可以有效防止程序跑飛。第四章 總體設(shè)計(jì) 競(jìng)賽分為:光電組、攝像頭組、電磁組,因?yàn)樗械脑O(shè)計(jì)均要求在規(guī)則范圍內(nèi)實(shí)現(xiàn),且本文主要介紹光電組智能車的軟件設(shè)計(jì),所以就只介紹光電組相關(guān)的規(guī)則和要求:1. 賽道。寬60㎝(第五屆為50㎝),白底,中間有25㎜的黑色引導(dǎo)線,賽道上有起始線、90176。十字交叉線、窄道(第五屆無(wú))、15176。之內(nèi)的坡道,彎道最小曲率半徑不小于50㎝(以中心引導(dǎo)線計(jì)算)。2. 車模。尺寸不能超過(guò)250㎜400㎜,不限高度。3. 傳感器。紅外傳感器接受單元計(jì)為1個(gè)傳感器,發(fā)射單元不計(jì)算,編碼電機(jī)算作一個(gè)傳感器。 通過(guò)仔細(xì)的了解規(guī)則,才能準(zhǔn)確的設(shè)計(jì)出符合要求的系統(tǒng)。 硬件設(shè)計(jì)經(jīng)過(guò)分析,無(wú)論車模怎么設(shè)計(jì),都離不開(kāi)以下幾個(gè)模塊:傳感器采集模塊、電機(jī)驅(qū)動(dòng)模塊[9]、舵機(jī)驅(qū)動(dòng)模塊、車速檢測(cè)模塊、MCU控制模塊。各個(gè)模塊的具體功能流程圖,: 硬件模塊功能流程圖下面介紹下硬件模塊的功能:1. 傳感器采集模塊,使用12只光電收發(fā)一體管,每只間隔20㎜,用于對(duì)路面信息的采集,將實(shí)時(shí)路況反饋給MCU控制模塊處理。2. 電機(jī)驅(qū)動(dòng)模塊,使用MC33886,通過(guò)MCU輸出相應(yīng)的PWM波,控制電機(jī)的運(yùn)轉(zhuǎn)。3. 舵機(jī)驅(qū)動(dòng)模塊,通過(guò)MCU直接輸出相應(yīng)的PWM給舵機(jī),使其旋轉(zhuǎn)相應(yīng)角度。4. 車速檢測(cè)模塊,使用編碼電機(jī),結(jié)合MCU的脈沖輸入捕捉功能,獲得車模行駛時(shí)的速度,將其反饋給MCU進(jìn)行處理和控制。5. MCU控制模塊,將各個(gè)模塊所采集到的信息進(jìn)行處理,通過(guò)相應(yīng)控制算法,得出控制策略,從而保證車模的正常行駛。 軟件設(shè)計(jì)通過(guò)對(duì)競(jìng)賽規(guī)則的仔細(xì)分析,得出詳細(xì)的模塊需求。只有確定了具體硬件,才能設(shè)計(jì)出相應(yīng)的軟件。因此,經(jīng)過(guò)長(zhǎng)時(shí)間的修改,最終得到了確定的外部硬件電路(此處本文不詳述),從而設(shè)計(jì)出了軟件部分的主體流程。 程序主體流程圖 下面介紹下軟件模塊的功能:1. 系統(tǒng)模塊初始化。根據(jù)對(duì)比賽規(guī)則的了解和系統(tǒng)的規(guī)劃設(shè)計(jì),需要用到MCU的PLL、PIT、ADC、PWM、SCI、RTI、ECT、GPIO等模塊,因此,在系統(tǒng)正常工作前,必須將用到的模塊初始化。2. 路面信息和速度采集。將傳感器所采集到的電壓經(jīng)過(guò)AD轉(zhuǎn)換后,得到數(shù)字量,用于取閥值和精確坐標(biāo)計(jì)算,將編碼電機(jī)的脈沖在一小段時(shí)間內(nèi)進(jìn)行記數(shù),從而得到小車當(dāng)前大致速度。3. 路面信息處理。對(duì)AD轉(zhuǎn)換后的數(shù)據(jù)先進(jìn)行濾波,再進(jìn)行黑線的提取和坐標(biāo)的計(jì)算。4. 方向和速度控制。通過(guò)PID控制算法,計(jì)算出方向和速度的偏差,從而進(jìn)行調(diào)整控制。 第五章 軟件設(shè)計(jì) 根據(jù)總體設(shè)計(jì)里的程序主體流程圖,可以將智能車的軟件設(shè)計(jì),主要分為:系統(tǒng)模塊初始化、路面信息和速度采集模塊、方向和速度控制模塊等。 系統(tǒng)模塊初始化 智能車系統(tǒng)軟件,一般使用到微控制器的PLL、PIT、ADC、PWM、SCI、RTI、ECT、GPIO等模塊。本節(jié)重點(diǎn)介紹下PLL、PIT、ADC和PWM模塊的初始化,因?yàn)檫@幾個(gè)模塊都是主要使用到的,其它模塊就不一一詳述了。 PLL MCU的指令執(zhí)行速度跟總線頻率成正比,XS128內(nèi)置數(shù)字PLL鎖相環(huán),可以很方便的通過(guò)軟件,需要用到得是如下幾個(gè)寄存器:1. CRG Clock Select Register (CLKSEL),該寄存器控制著S12XECRG時(shí)鐘選擇,它的第7位PLLSEL,是PLL的使能位。如果為0,禁止,則fBUS=fOSC/2;如果為1,使能,則fBUS=fPLL/2。2. CRG Synthesizer Register (SYNR),該寄存器是IPLL的分頻因子,控制著fVCO的頻率范圍。3. CRG Reference Divider Register (REFDV),該寄存器為IPLL提供更精確倍頻系數(shù)。4. CRG Post Divider Register (POSTDIV),該寄存器控制VCOCLK和PLLCLK之間的頻率比,fPLL=fVCO/(2*POSTDIV),如果POSTDIV=0x00,則fPLL=fVCO。5. CRG Flags Register (CRGFLG),改寄存器是CRG模塊的狀態(tài)位和標(biāo)志位,其中它的第三位LOCK,是IPLL當(dāng)前狀態(tài)標(biāo)志位,寫(xiě)無(wú)效,為1時(shí)說(shuō)明VCOCLK是在范圍內(nèi)的頻率。設(shè)置總線頻率,是通過(guò)更改其分頻因子寄存器SYNR和REFDV的值來(lái)實(shí)現(xiàn)的,如公式(1): 公式(1) XS128的PLL設(shè)置,與DG128不太一樣,分頻因子寄存器的SYNR[7:6](VCOFRQ[1:0])和REFDV[7:6](REFFRQ[1:0])作了一些改動(dòng),、: 寄存器SYNR[7:6] 寄存器REFDV[7:6]根據(jù)總體設(shè)計(jì),需要40MHz的總線頻率fBUS,也就是80MHz的fPLL,所以REFDV=0xc0 | 0x01 , SYNR=0xc1 | 0x04。值得注意的是,設(shè)置PLL模塊后,需要兩個(gè)指令周期左右的時(shí)間,等待鎖相環(huán)穩(wěn)定后再啟用,才能初始化成功。(程序詳見(jiàn)附錄1) PIT該模塊全稱Period Interrupt Timer,使用的是總線頻率通過(guò)分頻得到的定時(shí)周期,在XS128PIT模塊中,需要用到得是如下幾個(gè)寄存器:1. PIT Contorl and force Lad Micro Timer Register(PITCFLMT),該寄存器用于PIT模塊的使能設(shè)置和工作方式設(shè)置,通常設(shè)置該寄存器中的PITE為即可,即PITCFLMT_PITE=1,使PIT使能。2. PIT Channel Enable Register(PITCE),該寄存器用于對(duì)PIT模塊中的4個(gè)通道使能進(jìn)行設(shè)置。如果使用某個(gè)通道時(shí),對(duì)相關(guān)位進(jìn)行置1即可,即PITCE_PCEx=1,其中x代表通道序號(hào),為0~3。3. PIT Micro Timer Load Register 0 to 1 (PITMTLD01),該寄存器用于設(shè)置PIT模塊中的8位計(jì)數(shù)器初值,以實(shí)現(xiàn)24位的計(jì)數(shù)。設(shè)定值為0到255范圍。4. PIT Load Register 0 to 3(PITLD03),該寄存器用于設(shè)置PIT模塊中的16位計(jì)數(shù)器初值,和8位計(jì)數(shù)器配合而成24位計(jì)數(shù)器。設(shè)定值范圍065535。5. PIT Multiplex Register(PITMUX),該寄存器對(duì)定時(shí)器通道的8位時(shí)基進(jìn)行選擇。因?yàn)?位計(jì)數(shù)器只有兩個(gè),所以在將8位計(jì)數(shù)器和16位計(jì)數(shù)器連接時(shí),可以選擇不同的8位時(shí)基。當(dāng)設(shè)置為0時(shí),對(duì)應(yīng)通道選擇時(shí)基0;置1時(shí),對(duì)應(yīng)通道選擇時(shí)基1。如PITMUX_PMUX0=1為通道0選擇時(shí)基1。6. PIT Interrupt Enable Register(PITINTE),該寄存器為中斷使能寄存器,為不同的PIT通道中斷使能。設(shè)定為0時(shí),相應(yīng)通道中斷禁止。置1時(shí),相應(yīng)通道使能。如PITINTE_PINTE0=1時(shí),PIT通道0定時(shí)中斷使能,當(dāng)計(jì)數(shù)器遞減溢出時(shí),申請(qǐng)中斷。7. PIT TimeOut Flag Register(PITTF),該寄存器為溢出標(biāo)志位,當(dāng)某一通道的8位計(jì)數(shù)器和16位計(jì)數(shù)器遞減到0時(shí),該位置1。給該位寫(xiě)1則清除該標(biāo)志位,可以通過(guò)查詢?cè)撐粊?lái)判斷定時(shí)是否完成。本文設(shè)計(jì)使用PIT0作為小車運(yùn)行時(shí)間的中斷定時(shí),周期為5ms;使用PIT1作為光電管采集路徑信息、ADC轉(zhuǎn)換和SCI無(wú)線數(shù)據(jù)發(fā)送的中斷定時(shí),周期為250us。(程序詳見(jiàn)附錄2) ADC 該模塊用于傳感器采集,進(jìn)行模數(shù)轉(zhuǎn)換,將紅外收發(fā)管的電壓,轉(zhuǎn)換為數(shù)字值給MCU處理,需要用到得是如下幾個(gè)寄存器:1. ATD Control Register 1 (ATDCTL1),該寄存器的SRES[1:0],是AD 轉(zhuǎn)換精度選擇控制位,有8bit、10bit、12bit可以選擇。2. ATD Control Register 2 (ATDCTL2),該寄存器的第6位(AFFC),是選擇是否使用ATD轉(zhuǎn)換完成標(biāo)志位快速清零,AD轉(zhuǎn)換結(jié)束標(biāo)志的清除方式有兩種:讀結(jié)果寄存器自動(dòng)清零和軟件中斷服務(wù)程序里手動(dòng)寫(xiě)1清除。3. ATD Control Register 3 (ATDCTL3),該寄存器的第7位(DJM),是轉(zhuǎn)換結(jié)果對(duì)齊方式控制位。當(dāng)DJM=0時(shí),左對(duì)齊;當(dāng)DJM=1時(shí),右對(duì)齊。ATDCTL3[6:3](S8C、S4C、S2C、S1C),是選擇轉(zhuǎn)換序列長(zhǎng)度控制位。4. ATD Control Register 4 (ATDCTL4),該寄存器的PRS[4:0],是AD時(shí)鐘預(yù)分頻設(shè)置控制位。SMP[2:0],是采樣時(shí)間控制位,選擇采樣時(shí)間占AD時(shí)鐘周期的長(zhǎng)度,≤fATDCL
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1