【2019年整理】嵌入式stm32生產(chǎn)實習(xí)指導(dǎo)書_第1頁
【2019年整理】嵌入式stm32生產(chǎn)實習(xí)指導(dǎo)書_第2頁
【2019年整理】嵌入式stm32生產(chǎn)實習(xí)指導(dǎo)書_第3頁
【2019年整理】嵌入式stm32生產(chǎn)實習(xí)指導(dǎo)書_第4頁
【2019年整理】嵌入式stm32生產(chǎn)實習(xí)指導(dǎo)書_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、自動化系生產(chǎn)實習(xí)STM32開發(fā)平臺實驗指導(dǎo)書2014 年 8 月 11 日第一部分STM32電路板整體介紹1第一節(jié)電路板資源2第二部分軟件介紹及開發(fā)流程5第一節(jié)Keil 軟件介紹 5第二節(jié)程序下載 7第三部分實驗內(nèi)容介紹8第一節(jié)LED燈亮滅實驗 8第二節(jié)按鍵實驗8第三節(jié)數(shù)碼管實驗 10第四節(jié)外部中斷實驗 14第五節(jié) 定時器實驗1 4第六節(jié)串口實驗 11綜合實驗一光敏電阻AD 實驗 13綜合實驗二存儲器實驗 15綜合實驗三溫度測量實驗 15綜合實驗四時鐘實驗 16附錄:STM32核心板電路圖第一部分STM32電路板整體介紹第一節(jié)電路板資源STM32平臺采用核心板+外圍板方式。核心板主要包括STM

2、32F103VET6最小系統(tǒng)、按鍵、LED燈、TF卡、串口和JTAG電路??梢酝瓿蒘TM32內(nèi)部資源的大部分開發(fā)應(yīng)用。外圍板包括數(shù)碼管電路、存儲器電路、紅外、光敏電阻、溫度傳感器、ULN2003電路、步進電機、蜂鳴器、DS1302時鐘電路和CAN總線等電路設(shè)計,基本包括了STM32的所有資源、同時又對IIC、單總線、SPI總線、CAN就掌握總線等協(xié)議進行了硬件設(shè)計。可以說, 如何將核心板和外圍板調(diào)試完成,核心板的資源有:STM321. 主 CPU,為 STM32F103VET62. MiniUSB插座,具有通信功能,可進行USB通信實驗3. 電源模塊,可以為系統(tǒng)提供3.3V電源4. 單片機最小

3、系統(tǒng),包括晶振,復(fù)位電路,去耦電容等5. 4 個 LED燈6. 4 個按鍵電路7. TF卡電路8. 一個DB9頭的串口外圍板主要為了進行功能的擴展,盡可能的發(fā)揮STM32的資源。如圖2 所示 :2 STM32外圍板資源圖外圍板的資源有:1. 2 個四路數(shù)碼管2. 1 個 ULN2003電路、1 個步進電機3. 1 個蜂鳴器4. 1 個 24C02芯片5. 1 個紅外檢測芯片HX18386. 1 個光敏電阻7. 1 個 DS18B20溫度檢測芯片8. 1 個 DS1302時鐘芯片9. 1 個 CAN 通信芯片TJA1050第二部分軟件介紹及開發(fā)流程第一節(jié)Keil 軟件介紹進入PC的桌面,點擊圖標(biāo)

4、:KeiluVision4, 進入如下MDK主界面, 這時候編輯區(qū)內(nèi)什么都沒有。如圖3 所示:點擊Porject,然后選擇Open Project,如圖2-2 所示2-2 打開工程過程圖選擇工程文件,如圖2-3 所示:2-3 打開工程過程圖2-4 打開工程過程圖第二節(jié)程序下載在下載程序之前,首先需要安裝CH341驅(qū)動,在安裝驅(qū)動過程中不要將串口驅(qū)動安裝成功后,插上USB轉(zhuǎn)串口線連接PC機和STM32核心板,打開這個圖標(biāo),2-5 所示:2-5 ISP程序下載點擊聯(lián)機下載時的程序文件,然后選擇要下載的hex(目標(biāo)文件)程序,如2-6 所示:圖 2-6 ISP程序下載這時候,要將BOOT0跳線帽摘下

5、,BOOT1跳線帽插上,按下復(fù)位就可以下載程序了,下載完成后,要將BOOT0跳線帽插上就可以了。第三部分實驗內(nèi)容介紹第一節(jié)LED燈亮滅實驗開發(fā)步驟:1) 為控制LED燈,知道要使用GPIO(通用輸入輸出口)外設(shè);2) 簡單了解GPIO外設(shè)的功能;3) 在編寫工程時,首先包含要用到的頭文件;4) 進行GPIO 外設(shè)的配置(包括:1.定義結(jié)構(gòu)體;2.打開外設(shè)時鐘;3.給結(jié)構(gòu)體成員賦值;4.初始化外設(shè);5.如果外設(shè)需要使能,就使能外設(shè);6.如果需要配置中斷,就配置NVIC) ; 每個外設(shè)在使用之前都需要先開啟外設(shè)時鐘 ,不同的外設(shè)可能掛在不同的時鐘總線上,所以需要對STM32的時鐘樹簡單了解。5)

6、在主函數(shù)中首先要調(diào)用外設(shè)配置函數(shù),然后在主函數(shù)中編寫用戶程序。參考 STM32固件庫和參考手冊進行學(xué)習(xí)。GPIO實驗主要是測試STM32的輸入輸出口的一個實驗,就是對IO進行高低電平輸出和對外界環(huán)境導(dǎo)致的高低電平輸入。可進行的實驗就是對LED亮滅的控制和對按鍵狀態(tài)的讀取。圖3-1 為 LED燈的電路圖。圖 3-1 LED燈電路圖由圖中可以知道PB6、 PB7、 PB8、 PB9連接了四個LED燈??刂茻舻牧翜缇褪菍?4 個 IO的電平的控制,當(dāng)輸出高電平的時候LED滅,輸出低電平的時候LED形成通路,就亮了。下面簡要介紹一下程序。1) 聲明 GPIO 的結(jié)構(gòu)這條語句是定義了一個GPIO_Ini

7、tTypeDef類型的結(jié)構(gòu)體變量,結(jié)構(gòu)體變量名就是GPIO_InitStruct.2) 初始化GPIO時鐘3) 給結(jié)構(gòu)體變量賦值并初始化GPIO。由上可以看出,主要是三個成員變量,GPIO_Pin,GPIO_Speed,GPIO_Mode這三個變量分別控制著GPIO的引腳、速度和模式。這 樣 GPIO 的 初 始 化 就 完 成 了 , 接 著 就 可 以 調(diào) 用GPIO_SetBits()和GPIO_ResetBits這兩個函數(shù)來控制LED的亮滅了。第二節(jié) 按鍵實驗GPIO口設(shè)置為輸入狀態(tài),進而讀取IO口的3-2 所示:3-2 按鍵電路圖3-3 所示:圖 3-3 按鍵初始化程序接下來就可以用

8、GPIO_ReadInputData(函數(shù)來讀取端口的狀態(tài)了,當(dāng)然了也 )第三節(jié) 數(shù)碼管實驗數(shù)碼管,其實也是對IO 口的控制,只不過需要了解它的發(fā)光原理,以及邏如圖 3-4 所示, 是 4 路數(shù)碼管的電路圖,我們采用的是共陰連接的方式。圖 3-4 4 路數(shù)碼管電路圖IO的控制,只不過我們采用了74HC573驅(qū)動芯片,因為單片機輸所以用了數(shù)據(jù)芯片進行了驅(qū)動,74HC573是一個數(shù)數(shù)碼管電路圖如圖3-5 所示:圖 3-5 數(shù)碼管電路圖數(shù)碼管采用動態(tài)掃描的方式,可以顯示不同的數(shù)字和簡單的字母。它的初始有關(guān)編碼的方式,課上會講到。接下來就可以,進行動態(tài)掃描處理了,如圖3-6 所示:圖 3-6 數(shù)碼管動

9、態(tài)掃描第四節(jié)外部中斷實驗中斷在一個微處理器中地位很重要,我們STM32的所有的輸入輸出引腳都可以獨立的配置為外部中斷,我們這兒采用的是STM32F103VET,它有680 個輸入輸出引腳,這樣就可以包括80 個外部中斷。這兒采用的是檢測按鍵的狀態(tài),硬件電路參考第一節(jié)按鍵的電路圖。這里主要涉及到一個NVIC的概念,其他的和GPIO配置差不多,NVIC是中斷嵌套向量控制器的意思,它是芯片的CPU和外部資源中斷配置的一個部分,它的程序主要如圖3-11 所示:void KEY_EXTI_Config()GPIO_InitTypeDef GPIO_InitStructure; 定義結(jié)構(gòu)體配置GPIOEX

10、TI_InitTypeDef EXTI_InitStructure; 定義結(jié)構(gòu)體配置外部中斷EXTIRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_AFIO,ENABLE); 打開GPIOE時鐘和復(fù)用時鐘NVIC_Config(); 調(diào)用中斷配置函數(shù)GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; 結(jié)構(gòu)體成員賦值GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;GPIO_Init(GPIOE,&GPIO_InitStructure); 初始化

11、GPIOGPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource配置 0); EXTI的EXTI_InitStructure.EXTI_Line = EXTI_Line0; 結(jié)構(gòu)體成員賦值EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure

12、); 初始化 static void NVIC_Config(void) 中斷配置函數(shù)NVIC_InitTypeDef NVIC_InitStructure; 定義結(jié)構(gòu)體NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); 設(shè)定優(yōu)先級組(確定搶占優(yōu)先級和響應(yīng)優(yōu)先級個數(shù))課堂上會詳細(xì)講解NVIC_InitStructure.NVIC_IRQChannel E= XTI0_IRQ;n 結(jié)構(gòu)體成員賦值NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;搶占優(yōu)先級NVIC_InitStructure

13、.NVIC_IRQChannelSubPriority = 0; 響應(yīng)優(yōu)先級NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure); 初始化 圖 3-11 EXTI和 NVIC的配置NVIC中的這兒主要聽老師在課堂的講解。中斷服務(wù)函數(shù)在stm32f10x_it.c 中編寫,中斷服務(wù)函數(shù)的函數(shù)名定義在startup_stm32f10x_hd.s 中查找。在中斷服務(wù)函數(shù)中可能需要用到extern 聲明:extern 可以置于變量或者函數(shù)前,以標(biāo)示變量或者函數(shù)的定義在別的文件中, 提示編譯器遇

14、到此變量和函數(shù)時在其他模塊中尋找其定義。第五節(jié)定時器實驗定時器, 也是一種中斷,它通過不斷的計時達(dá)到某個時刻做什么事情的目的,它可以產(chǎn)生捕獲和PWM 常見的兩種方式。其中捕獲又是測量脈沖的重要方式、PWM 則主要用于電機調(diào)速等方面。定時器配置:1 秒定時TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct; 定義結(jié)構(gòu)體RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABL打開時鐘E);TIM_TimeBaseStruct.TIM_Period=2000;自動重裝載寄存器周期的值(計數(shù)值)累計 TIM_Period個數(shù)后

15、產(chǎn)生一個中斷TIM_TimeBaseStruct.TIM_Prescaler= 36000;時鐘預(yù)分頻數(shù)72MHz/36000=2000Hz 計數(shù) 2000剛好等于1 秒TIM_TimeBaseStruct.TIM_ClockDivision=TIM_CKD_DIV1; 采樣分頻TIM_TimeBaseStruct.TIM_CounterMode=TIM_CounterMode_Up; 向上計數(shù)模式TIM2_NVIC_Config(); 定時器中斷優(yōu)先級配置TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStruct;初始化)TIM_ITConfig(TIM2,T

16、IM_IT_Update,ENABLE);開啟計數(shù)溢出中斷TIM_Cmd(TIM2, ENABLE); 使能 TIM2TIM2中斷優(yōu)先級配置:void TIM2_NVIC_Config(void)NVIC_InitTypeDef NVIC_InitStruct;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);NVIC_InitStruct.NVIC_IRQChannel =T IM2_IRQn;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStruct.NVIC_IRQ

17、ChannelSubPriority = 0;NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStruct);同學(xué)們在完成指定任務(wù)之后可以自主學(xué)習(xí)用定時器產(chǎn)生占空比可調(diào)的PWM 波,控制電機轉(zhuǎn)速或者產(chǎn)生呼吸燈效果。第六節(jié) 串口實驗DB9頭和電腦的串口進行通信,采用的協(xié)議是RS232, 這是一種很常見的通信方式,是一些上位機和下位機通信的協(xié)議。但是工業(yè)現(xiàn)場更多的選擇的協(xié)議是RS485,它是在RS232的基礎(chǔ)上演變而來的。所以學(xué)習(xí)串口通信很有必要性。圖3-7 是串口通信的電路圖。3-7 串口電路圖由圖可知,主要

18、是PA9和 PA10進行的通信。也就是說,STM32的串口資源PA9和 PA10當(dāng)然也可以查詢datasheet,映射別的IO口。對串3-8 所示:圖 3-8 串口的初始化串口同樣需要配置NVIV,只需更改NVIC_InitStruct.NVIC_IRQChannel = USART1_IRQn;其它配置與定時器NVIC配置相同??梢钥吹絽f(xié)議采用的是115200-8-n-1(波特率115200、通信數(shù)據(jù)字長8位、無奇偶校驗、1 位停止位)的形式,在上位機也要采用同樣的配置就可以進行通信了。電腦端使用的是串口調(diào)試助手。圖 3-9 串口調(diào)試助手綜合實驗一AD 實驗AD 是模擬世界進入數(shù)字世界的一個

19、通道,它是一個轉(zhuǎn)換器,眾所周知,世界是模擬的,也是連續(xù)的。所以對外界的測量主要是對AD 的配置。我們采用的是光敏電阻,通過外界光線的不同導(dǎo)致電阻值變化進而電壓變化,這樣測量電壓值的大小,便可以知道光線的強弱。光敏電阻電路電路圖如圖3-10 所示:圖 3-10 光敏電路圖同樣主要是對STM32內(nèi)部AD資源的初始化配置,void ADC1_GPIO_Config(void) 配置模數(shù)轉(zhuǎn)換IO口/PA0 <>ADC1GPIO_InitTypeDef GPIO_InitStructure; 定義結(jié)構(gòu)體RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|R

20、CC_APB2Periph_ADC1 ,ENABLE); 打開時鐘GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;定義端口GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; 模擬輸入 GPIO_Init(GPIOA, &GPIO_InitStructure); 初始化 void ADC1_Config(void ) 模數(shù)轉(zhuǎn)換模式配置ADC_InitTypeDef ADC_InitStructure; 定義結(jié)構(gòu)體ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;獨立ADC模式ADC_InitStructure.ADC_ScanConvMode = DISABLE禁止掃描模式,掃描模式;用于多通道采集ADC_InitStructure.ADC_ContinuousConvMode = ENABL開啟連續(xù)轉(zhuǎn)換模式 E;ADC_InitStructure.ADC_ExternalTrigConv= ADC_ExternalTrigConv_None;不使用外部觸發(fā)轉(zhuǎn)換ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;采集數(shù)據(jù)右對齊ADC_InitStructure.ADC_NbrOfChan

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論