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

正文內(nèi)容

畢業(yè)設(shè)計(jì)--基于stm32的智能小車(chē)設(shè)計(jì)-文庫(kù)吧資料

2024-12-09 17:21本頁(yè)面
  

【正文】 c+1))/Tclk。 HCSR04 模塊程序 設(shè)計(jì) 根據(jù)硬件電路的設(shè)計(jì),我們對(duì)避障子程序進(jìn)行設(shè)計(jì),程序流程圖如圖 所示: 基于 stm32 的智能小車(chē)設(shè)計(jì) 22 開(kāi) 始系 統(tǒng) 初 始 化前 進(jìn)前 方 是 否 有 障 礙舵 機(jī) 左 轉(zhuǎn)否是小 車(chē) 左 方 是 否 有 障 礙否舵 機(jī) 右 轉(zhuǎn)小 車(chē) 右 方 是 否 有 障 礙小 車(chē) 左 轉(zhuǎn)是小 車(chē) 右 轉(zhuǎn)否小 車(chē) 后 轉(zhuǎn)避 障 子 程 序 結(jié) 束 圖 避障程序流程圖 避障模塊在程序設(shè)計(jì)中,我們的工作主要是: 控制超聲波的掃描周期 采集超聲波發(fā)射到接受的 高電平 持續(xù)時(shí)間 t 對(duì)采集的 高電平持續(xù) 時(shí)間 t進(jìn)行處理,判斷前方是否有障礙 下面我們就詳細(xì)介紹我們是怎么通過(guò)軟件設(shè)計(jì)來(lái)完成這幾個(gè)步驟的: 控制超聲波的掃描周期 根據(jù)表 22,我們采用的是 TIM2 來(lái)控制超聲波的掃描周期 。 角度與脈寬的對(duì)應(yīng)圖如圖 所示: 基于 stm32 的智能小車(chē)設(shè)計(jì) 21 圖 舵機(jī)角度與脈寬對(duì)應(yīng)圖 HCSR04 模塊硬件電路設(shè)計(jì) 超聲波模塊硬件原理圖 如下圖所示 : 圖 超聲波硬件原理圖 HCSR04 模塊主要由發(fā)射器、接收器和部分電路組成。舵機(jī)的轉(zhuǎn)動(dòng)角度與 stm32 所提供的 PWM 信號(hào)相關(guān)。舵機(jī)的實(shí)物圖如圖 所示: 圖 舵機(jī)實(shí)物圖 舵機(jī)的工作工作原理是 stm32 微處理器發(fā)出數(shù)據(jù)給舵機(jī),舵機(jī)內(nèi)部有一個(gè)基準(zhǔn)電路,它會(huì)產(chǎn)生周期為 20ms,寬度為 的基準(zhǔn)信號(hào),它將微處理器傳輸?shù)闹绷髌秒妷号c電位器的電壓數(shù)據(jù)進(jìn)行比較,獲得電壓差輸出。所以測(cè)距時(shí),為了防止發(fā)射信號(hào)丟失,我們要求被測(cè)物體的面積不應(yīng)小于 平方米,否則可能導(dǎo)致測(cè)量結(jié)果不準(zhǔn)確。 為了防止 發(fā)射信號(hào)對(duì)回向信號(hào)的影響,我們的測(cè)量周期不易過(guò)小。因此測(cè)量距離 =(高電平持續(xù)時(shí)間 *340m/s) /2。 HCSR04 超聲波測(cè)距模塊由一個(gè)超聲波發(fā)射器、一個(gè)超聲波接收器和控制電路組成, 避障模塊的 實(shí)物結(jié)構(gòu)圖如圖 所示: 圖 實(shí)物 正反面 結(jié)構(gòu)圖 如結(jié)構(gòu)圖所示 VCC 提供 5v 電源, GND 為接地線(xiàn), TRIG 為觸發(fā)信號(hào)線(xiàn), ECHO為回向信號(hào)輸出線(xiàn)。在程序編寫(xiě)過(guò)程中,如果小車(chē)前方遇見(jiàn)障礙時(shí),我們可以直接控制舵機(jī)的轉(zhuǎn)向,而小車(chē)的車(chē)身可以保持不變,在測(cè)量結(jié)束后 ,小車(chē)再 做相應(yīng)的動(dòng)作。 在使用 HCSR04 模塊進(jìn)行超聲波測(cè)距的同時(shí),我們可以使用舵機(jī)進(jìn)行輔助。 避障模塊所采用的器件在市場(chǎng)中有許多類(lèi)型,比如紅外檢測(cè),光位移檢基于 stm32 的智能小車(chē)設(shè)計(jì) 19 測(cè),超聲波檢測(cè)等。而對(duì)智能小車(chē)來(lái)說(shuō),避障模塊之于小車(chē)就相當(dāng)于 眼睛之于人類(lèi) 。… 我們調(diào)用這些函數(shù),就可以實(shí)現(xiàn)不同運(yùn)動(dòng)方向的控制。PD8 置 1 GPIO_ResetBits(GPIOD,GPIO_Pin_8)。GPIO_InitStructure)。 = GPIO_Speed_50MHz。 ? 初始化 I/O 參數(shù) ,調(diào)用格式如下所示: =GPIO_Pin_8。我們僅介紹如何通過(guò)庫(kù)函數(shù)進(jìn)行端口配置。我們只需要調(diào)用此函數(shù)就可以實(shí)現(xiàn)不同的速度控制。 我們可以知道,通過(guò)定時(shí)器 3 控制 PWM 波的占空比,從而實(shí)現(xiàn)速度方面的控制。 基于 stm32 的智能小車(chē)設(shè)計(jì) 18 ? 通過(guò)修改 TIM3_CCRx(x 為 1,2,3)來(lái)控制占空比。完成以上配置后,我們要使能定時(shí)器 TIM3。TIM_OCInitStructure)。TIM_OCInitStructure)。TIM_OCInitStructure)。 = TIM_OCPolarity_High。 =TIM_OutputState_Enable。在庫(kù)函數(shù)中 PWM 通道設(shè)置是通過(guò) TIM_OC1Init~TIM_OC4Init 來(lái)設(shè)置的,這里我們需要 3 路 PWM 輸出,所以我們需要使用函數(shù) TIM_OC1Init、TIM_OC2Init、 TIM_OC3Init。TIM_TimeBaseStructure)。 =TIM_CounterMode_Up。 =psc。 在開(kāi)啟了 TIM3 的時(shí)鐘之后,我們要設(shè)置 PSC 和 ARR 寄存器的值來(lái)控制 PWM 的輸出周期。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE)。 使能 GPIO 和端口復(fù)用功能時(shí)鐘。至此,我們把用到的 幾個(gè)寄存器都介紹完畢,下面我們就介紹如何通過(guò)庫(kù)函數(shù)來(lái)配置實(shí)現(xiàn) PWM 三路輸出。 要想使 PWM 從 I/O 口輸出,此位必須設(shè)置為 1。 然后我們介紹 捕獲 /比較使能寄存器( TIMx_CCER),該寄存器控制著各個(gè)輸入 /輸出通道的開(kāi)關(guān),對(duì)于該寄存器,各位描述如下圖所示: 圖 TIMx_CCER 寄存器描述 該寄存器比較簡(jiǎn)單, 因?yàn)槲覀冎唤榻B通道 1,所以我們只講 CC1E 位。 因?yàn)檫@ 2個(gè)寄存器差不多,我們僅以 通道 CH1 為例,介紹其中的 TIMx_CCMR1 為例, 該寄存器的各位描述如下 圖所示: 圖 TIMx_CCMR1/2 寄存器各位描述 這里我們只介紹該寄存器的 OCxM 位,我們就以 TIMx_CCMR1 中的 OC1M(控制通道 CH1) 為例,該位功能如下圖所示: 基于 stm32 的智能小車(chē)設(shè)計(jì) 16 圖 OC1M 功能描述 我們使用的是 PWM 輸出 模式,所以 OC1M 必須 設(shè)置為 110/111。 其中 Tclk 為系統(tǒng)時(shí)鐘周期。下面我們就簡(jiǎn)單介紹下這些寄存器: 首先是 預(yù)分頻寄存器( TIMx_PSC), 該寄存器可以用設(shè)置對(duì)時(shí)鐘進(jìn)行分頻,然后在提供給計(jì)數(shù)器作為計(jì)數(shù)器的時(shí)鐘。 驅(qū)動(dòng)模塊電路設(shè)計(jì) 電機(jī)驅(qū)動(dòng)模塊的電路原理如圖 所示: S4 K1 K3 K4 K2 基于 stm32 的智能小車(chē)設(shè)計(jì) 14 圖 驅(qū)動(dòng)模塊電路原理圖 表 22 是各個(gè)端口狀態(tài)與運(yùn)動(dòng)方向的關(guān)系,其關(guān)系如下表所示: 表 22 端口與運(yùn)動(dòng)方向關(guān)系表 電機(jī) M1 IN1 IN2 電機(jī) M2 IN3 IN4 停止 0 0 停止 0 0 正轉(zhuǎn) 1 0 正轉(zhuǎn) 1 0 反轉(zhuǎn) 0 1 反轉(zhuǎn) 0 1 - 1 1 - 1 1 驅(qū)動(dòng) 軟件程序設(shè)計(jì) 車(chē)輪電機(jī)的動(dòng)作由 GPIO 口的輸出實(shí)現(xiàn),本節(jié)主要配置運(yùn)動(dòng)方向和運(yùn)動(dòng)速度,對(duì)于運(yùn)動(dòng)速度的控制,我們必須使用 PWM,通過(guò)改變 PWM 的占空比來(lái)調(diào)節(jié)速度的大小,其主要代碼設(shè)計(jì)如下所示: void TIM3_PWM_Init(u16 arr,u16 psc){ ? .} 要想使 stm32的通用定時(shí)器 TIMx 產(chǎn)生 PWM輸出,需要用到的寄存器有: 預(yù)分頻寄存器( TIMx_PSC) 、 自動(dòng)重裝載寄存器( TIMx_ARR)、捕獲 /比較模式寄存器( TIMx_CCMR1/2) 、 捕獲 /比較使能寄存器( TIMx_CCER) 、 捕獲 /比較寄存器( TIMx_CCR1~4) 。 基于 stm32 的智能小車(chē)設(shè)計(jì) 13 驅(qū)動(dòng)模塊結(jié)構(gòu)及其原理 電機(jī)驅(qū)動(dòng)模塊的實(shí)物圖如圖 所示: 圖 驅(qū)動(dòng)電路實(shí)物圖 電機(jī)驅(qū)動(dòng)模塊的主要器件是芯片 LM293D,內(nèi)部原理圖如圖 所示: 圖 電機(jī)驅(qū)動(dòng)內(nèi)部原理圖 全橋式驅(qū)動(dòng)電路的 4 只開(kāi)關(guān)管都工作在斬波狀態(tài),如圖 所示, K K2為一組, K K4 為另一組,兩組的狀態(tài)互補(bǔ),一組導(dǎo)通則另一組必定關(guān)斷。} } 電機(jī)驅(qū)動(dòng)模塊 Stm32 對(duì)小車(chē)的控制 , 就是對(duì)電機(jī)的控制,通過(guò)控制電機(jī) 的轉(zhuǎn)向 ,小車(chē)的運(yùn)動(dòng)狀態(tài)就會(huì)發(fā)生改變。 //控制舵機(jī)方向 TIM5_Cap_Init(0XFFFF,721)。 //掃描軌跡 TIM2_Int_Init(4999,7199)。 GPIO_Configuration()。 //延時(shí)函數(shù)初始化 NVIC_Configuration()。 //輸入捕獲狀態(tài) u16 TIM5CH1_CAPTURE_VAL。 然后 我們 介紹一下本實(shí)驗(yàn)采用了那些定時(shí)器,以及這些定時(shí)器所要完成的功能有哪些。 ? 編寫(xiě)中斷服務(wù)函數(shù) void EXTI1_IRQHandler(void){}主要代碼詳見(jiàn)附錄 2. stm32定時(shí) /計(jì)數(shù) 器介紹 Stm32 系列的單片機(jī)一般包含 8 個(gè)計(jì)數(shù) /定時(shí)器, TIM TIM8 分別為高級(jí)控制定時(shí)器, TIM2~TIM5 為通用定時(shí)器, TIM6 以及 TIM7 為基本定時(shí)器。 NVIC_Init(amp。 = 0x06。 ? 配置中斷分組 NVIC,并使能中斷 = EXTI1_IRQn。 EXTI_Init(amp。 = EXTI_Trigger_Rising_Falling。 =EXTI_Line1。GPIO_InitStructure)。 = GPIO_Mode_IPU。步驟如下: ? 開(kāi)啟 I/O 的復(fù)用時(shí)鐘 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_AFIO,ENABLE)。由于我們采用的是外部信號(hào)觸發(fā)中斷,所以我們只需了解外部中斷的請(qǐng)求機(jī)制,對(duì)于 事件的中斷請(qǐng)求機(jī)制,我們?cè)谶@里不做介紹。之后進(jìn)入“中斷掛起請(qǐng)求寄存器”,該寄存器記錄了外部信號(hào)的電平變化。 其次 這個(gè)外部信號(hào) 通過(guò)編號(hào) 2 的邊沿檢測(cè)電路 ,這個(gè)邊沿檢測(cè)電路受到“上升沿選擇寄存器”、“下降沿選擇寄存器”的控制,我們可以控制這兩個(gè)寄存器來(lái)選擇中斷的觸發(fā)方式。結(jié)構(gòu)圖如下所示: 基于 stm32 的智能小車(chē)設(shè)計(jì) 10 圖 stm32 外部中斷 /事件控制器結(jié)構(gòu)圖 圖中的實(shí)線(xiàn)箭頭,為外部中斷信號(hào)的傳輸路徑。} (x 可以是 A,B,C,D,E? 比 如 GPIO_A 就是端口 A) 通過(guò)使用 GPIO_ResetBits()函數(shù)就可以直接對(duì)寄存器進(jìn)行操作啦。固件庫(kù)的本質(zhì)就是函數(shù)的集合,固件庫(kù)將那些寄存器的底層操作都封裝起來(lái),提供一整套 API 供開(kāi)發(fā)者使用。 (x可以是 A,B,C,D,E? 比如 GPIOA 就是端口 A) 但是,對(duì)于 stm32 這種級(jí)別的處理器,幾百個(gè)寄存器記起來(lái)談何容易。 任何處理器 , 包括stm32 處理器,想要處理器完成某項(xiàng)相應(yīng)的動(dòng)作,就必須對(duì)處理器的寄存器進(jìn)行操作。 電路 JTAG 電路原理圖如圖 : 圖 JAG 電路原理圖 JTAG 的主要功能是使目標(biāo)文件燒到核處理器中。 基于 stm32 的智能小車(chē)設(shè)計(jì) 8 電路 復(fù)位電路的設(shè)計(jì)如圖 : 圖 復(fù)位電路圖 本次試驗(yàn)所采用的開(kāi)發(fā)板為 低電平復(fù)位。 最小系統(tǒng)電路原理圖如圖 213 所示: 圖 最小系統(tǒng)電路原理圖 主要電路原理圖的設(shè)計(jì)及功能如下所示 : 系統(tǒng)時(shí)鐘電路主要作用是提供節(jié)拍 , 就相當(dāng)于人類(lèi)的心臟跳動(dòng) , 隨著心臟的跳動(dòng) , 血液就會(huì)到達(dá)全身部位 ,所以系統(tǒng)時(shí)鐘的重要性就不言而喻啦。 我們實(shí)驗(yàn)所采用的芯片具有 64KBSRAM、 512KBFLASH、 2 個(gè)基本定時(shí)器, 4 個(gè)通用定時(shí)器, 2 個(gè)高基于 stm32 的智能小車(chē)設(shè)計(jì) 7 級(jí)定時(shí)器, 3 個(gè) SPI, 2 個(gè) IIC, 5 個(gè)串口, 1 個(gè) USB, 1 個(gè) CAN, 3 個(gè) 12 位的 ADC,1個(gè) 12 位 DAC、 1 個(gè) SDIO 接口, 1 個(gè) FSMC 接口以及 112 個(gè)通用 I/O 口。 4 個(gè)驅(qū)動(dòng)單元是:通用 DMA1,通用 DMA2,內(nèi)核 DCode 總線(xiàn)和系統(tǒng)總線(xiàn)。該系列微處理器工作頻率設(shè)定在 72MHz, 高達(dá) 128K 字節(jié)的 內(nèi)置 Flash 存儲(chǔ)器 和 20K 字節(jié)的 SRAM, 方便程序編寫(xiě), 而且 具有豐富的通用 I/O 端口。 本次試驗(yàn),我們使用的是 stm32f103 處理器 。其中, STM32F101系列 是標(biāo)準(zhǔn)型系列,工作頻率設(shè)定在 36MHZ; STM32F103 系列 是增強(qiáng)型系列,工作頻率設(shè)定在 72MHZ,其帶有更多片內(nèi) RAM 和更豐富的外設(shè)資源。因此, CortexM3處理器是由 ARM 公司基于 stm32 的智能小車(chē)設(shè)計(jì) 6 設(shè)計(jì)的首款基于 ARMv7M 體系結(jié)構(gòu)的 32 位標(biāo)準(zhǔn)處理器,它不僅具有低功耗、少門(mén)數(shù)等優(yōu)點(diǎn),而且還具有短中斷延遲、低調(diào)試成本等眾多優(yōu)點(diǎn),使它在眾多的處理器中脫穎而出。 2021 年 6月 11日由 ST公司率先推出的基于 CortexM3內(nèi)核的 STM32系列微控處理器研發(fā)而出。 Stm32 處理器的出現(xiàn)為微控制系統(tǒng)、工業(yè)控制系統(tǒng)、汽車(chē)車(chē)身系統(tǒng)和無(wú)線(xiàn)網(wǎng)絡(luò)等對(duì)功耗和成本敏感的嵌入式應(yīng)用領(lǐng)域?qū)崿F(xiàn)高系統(tǒng)性能系統(tǒng)提供了基礎(chǔ),使編程的復(fù)雜性,集高性能、低功耗、低成本大大簡(jiǎn)化,并使它們?nèi)跒橛谝惑w [2]。 中央處理模塊 在人類(lèi)身體結(jié)構(gòu)中 , 大腦可以根據(jù)各個(gè)器官所傳輸?shù)男畔⒆龀鱿鄳?yīng)的行為 動(dòng)作用以保證 人體 所必須的 生理 原料 , 而 stm32 處理器之于智能小車(chē)就
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1