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

正文內(nèi)容

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

2025-07-24 19:31 本頁面
 

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