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

正文內(nèi)容

基于ucos-ii系統(tǒng)的四旋翼飛行器的設(shè)計畢業(yè)論文(編輯修改稿)

2025-07-24 19:31 本頁面
 

【文章內(nèi)容簡介】 通信,采用SPI的通信可以更加及時的將姿態(tài)信息傳輸給STM32,以便STM32更加及時的對姿態(tài)進行處理。為了充分發(fā)揮MPU6000的各個功能,將MPU的I2C總線外接出來,以便外接一個磁力傳感器作為從設(shè)備,將FSYNC幀同步引腳接到單片機上,并將數(shù)據(jù)中斷產(chǎn)生引腳也引到單片機上,用戶可以自由運用MPU6000的所有功能。 電池電量檢測電路的設(shè)計圖39 電池電量檢測電路的設(shè)計電池電量的檢測包括電壓的檢測和電流的檢測。如圖,接線端子P18和P19用來接電池用的,電池電壓經(jīng)過R58和R59兩個電阻進行分壓之后通過PC2引到單片機的ADC通道,單片機通過該路的AD采集就能測出電池電壓;電池電壓經(jīng)過采樣電阻R60之后產(chǎn)生一定的壓差,該壓差的差值太小,不能被單片機識別,所以將R60兩端的電壓差值經(jīng)過電流傳感器MAX9643進行差分放大、并抑制住了共模信號,電流傳感器的輸出通過PA0接到單片的ADC通道,單片機通過AD采樣可以測出電池的電流。 指示燈的設(shè)計圖312 指示燈的設(shè)計主板電路指示燈的作用是用來指示某些功能是否正常運行,其中LED4是用來判斷電源是否正常上電,LED1用來指示滾轉(zhuǎn)狀態(tài),LED2用來指示俯仰運動狀態(tài),LED3用來指示偏航運動狀態(tài)。 主控電路PCB板的設(shè)計整塊主控板的布局和規(guī)劃需要做如下考慮:(1)晶振必須要盡可能近的靠近單片機,以便供單片機更好的時鐘信號。(2)整體布局盡可能緊湊,減小整塊飛控板的面積,使飛控板更加集成化。(3)必須要考慮到插座的擺放位置,確保插座的穩(wěn)固,以便防止拔插出現(xiàn)脫落等現(xiàn)象。(4)信號線之間的連線盡可能短,保證信號線的傳輸速度和準確性。(5)需要對每一層進行對地鋪銅,做好屏蔽作用。整塊飛控板的布局如附錄7所示4 基于STM32的uC/OSII系統(tǒng)設(shè)計 系統(tǒng)軟件編譯環(huán)境的介紹與配置目前STM32較為熱門的編譯環(huán)境有IAR編譯器和MDK編譯器兩種。MDK是一個集成了多功能編譯器的窗口化軟件開發(fā)環(huán)境。MDK不僅具有編譯功能,還可以用在線調(diào)試器通過JLINK連接目標程序進行在線調(diào)試,在MDK編程環(huán)境下進行對uC/OSII系統(tǒng)程序設(shè)計既方便又快捷。用MDK編譯環(huán)境進行系統(tǒng)程序設(shè)計的簡單操作和配置如下:(1)先打開準備好的STM32的標準外設(shè)庫,如41圖所示,打開MDK,在project中點擊Open project…打開 APP工程。圖41 MDK打開工程界面(2)選擇芯片型號,打開編譯窗口的option,在divice中選擇ST公司的STM32F103VC,如下圖所示:圖42 MDK芯片型號選擇界面(3)在圖52中的Target菜單欄中設(shè)置外部晶振為8MHz,為了讓串口打印正常,還必須在C/C++菜單欄中的Optinization選擇Level1(01)以上的版本。(4)對在線調(diào)試的配置如圖43所示:圖43 MDK debug界面當剛開始移植完程序時,我們只需要測試程序能否編譯通過,所以選擇Use Simulator;當我們在調(diào)試程序是,需要連接JLink進行在線仿真時,我們要選擇Use CortextM/R Jtrace,并把run to main()打鉤。打開setings,在flash down load菜單下點擊add,將stm32f10x…加入。如圖44所示:圖44 MDK芯片flash配置界面 uC/OSII系統(tǒng)的移植uC/OSII移植簡單快捷,下面對如何將uC/OSII移植到STM32做粗略介紹。將uCOSII文件夾中的Source和Ports兩個文件夾全部拷貝到工程文件中,并在工程文件中新建一個uC/OSII/Port和uC/OSII/SOURCE兩個文件夾。、OS_DEBUG_E、OS_EVENT_MULTI_EN、OS_FLAG_EN 、 OS_MBOX_EN、 OS_MEM_EN 、 OS_MUTEX_EN 、OS_Q_EN、OS_SEM_EN、OS_TMR_EN等使能標志位全部清零。OS_CPU_SysTickHandler(void)。和 voidOS_CPU_SysTickInit(INT32U ts)。函數(shù)刪掉;。define OS_COMPILER_OPT __root中的_root刪掉,再將 OS_CPU_SR_SAVE、PUBLIC OS_CPU_SR_Restore、PUBLIC OSStartHigRdy、PUBLIC OSCtxSw、PUBLIC OS_IntCtxSw、OS_CPU_PendSVHandler中的PUBLIC改為EXPORT。;在 ,包括: 、、、。,如下:,,詳見附錄1。按照以上步驟,就將uC/OSII移植成功了,接下來就在main函數(shù)中創(chuàng)建用戶需要的任務(wù),系統(tǒng)便能正常運行了。 STM32整體配置STM32各個功能模塊的總體配置步驟包括如下幾個方面:時鐘喚醒、設(shè)置各個功能模塊的模式、初始化功能模塊、使能功能模塊。 輸入/輸出管腳的配置,,寫入include 。接下來就開始配置時鐘了,由于STM32的通用輸入/輸出管腳(General purpose input output ports簡稱:GPIO)都掛在高速外設(shè)時鐘上,所以進行如下命令:RCC_APB2PeriphClockCmd ( RCC_APB2Periph_GPIOC,ENABLE )。接下來配置GPIO的速率,輸入輸出模式,對需要的GPIO引腳進行使能;最后進行GPIO的初始化后就可以操作GPIO了。指令GPIO_SetBits(GPIOA,GPIO_Pin_6)。GPIO_ResetBits(GPIOA, GPIO_Pin_5)。是對GPIO輸出口置1和置0;GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6);指令是讀取GPIO的輸入電平值。GPIO的配置如下圖所示:GPIO時鐘使能GPIO管腳的選擇GPIO輸入輸出模式的選擇GPIO初始化圖45 GPIO的配置 串口的配置串口的設(shè)置包括:時鐘喚醒,復(fù)位串口,配置Tx和Rx的IO口,串行口中斷初始化,串口的波特率、字長、校驗位等的配置。串口的配置流程如圖46所示: Tx、Rx引腳串口時鐘使能配置Tx為輸出模式、Rx為輸入模式串口中斷向量配置串口波特率、校驗位的設(shè)置使能串口圖46 串口UART1的配置 定時器輸出PWM的配置定時器輸出PWM的配置包括:定時器和對應(yīng)輸出PWM的引腳的時鐘喚醒,根據(jù)用戶需要設(shè)定的PWM的頻率設(shè)定定時器的預(yù)分頻、溢出值等,使能輸出PWM。PWM頻率的計算包括以下幾種情況:(1)當用戶設(shè)定的定時器預(yù)分頻為1時,PWM的計算如下:(2) 當用戶設(shè)定的定時器預(yù)分頻不為1時,PWM的計算如下:其中fPWM表示設(shè)定的時鐘頻率;fCLK表示定時器的時鐘源的頻率,當定時器的時鐘源是高速外設(shè)時鐘時,fCLK一般為72MHz,當定時器的時鐘源是低速外設(shè)時鐘時,fCLK一般為36MHz ;TIM_Period表示時鐘溢出周期;TIM_Prescaler表示時鐘預(yù)分頻數(shù)。定時輸出PWM的配置流程如圖47所示: PWM對應(yīng)IO口的時鐘喚醒PWM對應(yīng)IO口初始化定時器的時鐘喚醒配置定時器配置PWM及配置PWM的占空比使能PWM圖47 輸出PWM的配置流程 SPI接口驅(qū)動程序設(shè)計SPI接口驅(qū)動需要包括:SPI功能的時鐘使能和SPI對應(yīng)管腳的時鐘使能;SPI管腳配置:將SCLK時鐘引腳、MOSI數(shù)據(jù)傳輸管腳和CS片選管腳設(shè)置成推挽式輸出模式,將MISO數(shù)據(jù)傳輸管腳設(shè)置成上拉輸入模式;對SPI模式進行配置,包括主從模式的配置、單雙工模式的配置、每一個時鐘周期傳輸數(shù)據(jù)的位數(shù)的配置、空閑時時鐘信號的電平配置、跳變沿采樣的配置、采樣時鐘的頻率的配置、從高位還是從低位傳輸?shù)呐渲?、校驗位的配置等。具體流程見圖48所示。使能SPI及相應(yīng)的IO管腳的時鐘配置SPI相應(yīng)IO管腳配置SPI模式使能SPI圖48 SPI接口的驅(qū)動流程以上的操作基本完成了四旋翼飛行器姿態(tài)控制系統(tǒng)的STM32內(nèi)核的基本硬件配置,接下來用戶就可以根據(jù)自己的需要編寫自己的用戶代碼了。 uC/OSII系統(tǒng)的任務(wù)劃分由于uC/OSII系統(tǒng)是一個搶占式優(yōu)先級的實時控制系統(tǒng),在進行系統(tǒng)任務(wù)劃分時,必須將實時性要求高的任務(wù)的周期設(shè)置盡量短,優(yōu)先級往高規(guī)劃,將實時性要求低的任務(wù)周期可以設(shè)置較長,優(yōu)先級往低規(guī)劃。表41是本設(shè)計的總體的任務(wù)規(guī)劃:表41 uC/OSII任務(wù)的劃分任務(wù)名稱周期優(yōu)先級姿態(tài)解算和控制任務(wù)20ms2數(shù)據(jù)采集(A/D)任務(wù)35ms5遙控控制任務(wù)500s8LED控制任務(wù)100ms11電壓檢測和警報任務(wù)800ms15任務(wù)調(diào)度2s205 四旋翼機的姿態(tài)控制程序設(shè)計 姿態(tài)采集和解算的程序設(shè)計姿態(tài)信息的采集與解算是四旋翼飛行器姿態(tài)控制系統(tǒng)的關(guān)鍵部分,姿態(tài)信息采集的精度和速度直接關(guān)乎到四旋翼機姿態(tài)控制的準確性和及時性。本設(shè)計是從MPU6000陀螺儀加速度傳感器中每20ms采集一次相應(yīng)的加速度和陀螺角速度,通過傳統(tǒng)的四元數(shù)算法[10],將加速度和陀螺角速度融合運算與濾波,計算出相應(yīng)的四元數(shù),再將得出的四元數(shù)轉(zhuǎn)換成相應(yīng)的三個空間歐拉角(Roll,Pitch,Yaw)。 姿態(tài)信息的采集程序設(shè)計(1)MPU6000 SPI時序分析圖51 MPU6000 SPI時序如上圖所示,MPU6000是SPI的8位的全雙工模式工作的:傳輸數(shù)據(jù)時數(shù)據(jù)由高位向地位傳送;數(shù)據(jù)被采樣在SCLK的上升沿,數(shù)據(jù)輸出在SCLK的下降沿;SCLK配置的最高頻率不能高于1MHz;SPI讀寫操作都在16或更多的時鐘周期完成, 即在兩個或者兩個以上的字節(jié)的時鐘周期完成,第一個字節(jié)為SPI地址,第二字節(jié)SPI數(shù)據(jù),第一字節(jié)的最高位位包含了讀/寫(讀為1或?qū)憺?操作)位。MPU6000的地址和數(shù)據(jù)寄存器如表51 和表52所示:表 51 SPI地址寄存器MSB——————LSBR/WA6A5A4A3A2A1A0表 52 SPI數(shù)據(jù)寄存器MSB——————LSBD7D6D5D4D3D2D1D0在本設(shè)計中,MPU6000和data flash共用一個SPI接口,由于data flash是高速SPI,而MPU6000最大速度才能達到1MHz,所以在系統(tǒng)初始化時將data flash運用STM32內(nèi)部SPI進行配置,MPU6000的SPI用GPIO去模擬。1) SPI的寫指令MPU6000按一次8位進行傳輸,所以用戶只需對MOSI進行8次的循環(huán)動作,而由于該SPI是上升沿輸出模式,所以在對MOSI進行相應(yīng)位的傳輸?shù)臅r候,給SPI的時鐘信號一個由低到高的跳變信號,從機便可以接收到STM32輸出的電平信號。2) SPI的讀取指令SPI為下降沿采樣模式,在對MISO進行相應(yīng)位的采用時,給SPI的時鐘信號一個由高到低的跳變信號,STM32便可以接收到從機的輸出的電平信號。3) STM32向MPU6000的地址寫入一個字節(jié)的數(shù)據(jù)MPU6000內(nèi)部寄存器的地址最高位為0表示寫命令,所以在片選信號拉低時,將要寫入數(shù)據(jù)的地址寫入到MPU6000,緊接著寫入相應(yīng)數(shù)據(jù),將片選信號拉高,完成操作。4) STM32從MPU6000的地址讀取一個字節(jié)的數(shù)據(jù)MPU6000內(nèi)部寄存器的地址最高位為1表示寫命令,所以在片選信號拉低時,將要讀取數(shù)據(jù)的地址的最高位置一并寫入到MPU6000,緊接著讀取相應(yīng)數(shù)據(jù),將片選信號拉高,完成操作。(2) MPU6000初始化表53 MPU6000初始化相關(guān)寄存器寄存器名稱用戶訪問地址寄存器描述PWR_MGMT_1可讀/可寫0x6B電壓控制USER_CTRL可讀/可寫
點擊復(fù)制文檔內(nèi)容
數(shù)學(xué)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1