STM32單片機(jī)技術(shù)與應(yīng)用項(xiàng)目教程 課件 項(xiàng)目三 流水燈、蜂鳴器、IO按鍵設(shè)計_第1頁
STM32單片機(jī)技術(shù)與應(yīng)用項(xiàng)目教程 課件 項(xiàng)目三 流水燈、蜂鳴器、IO按鍵設(shè)計_第2頁
STM32單片機(jī)技術(shù)與應(yīng)用項(xiàng)目教程 課件 項(xiàng)目三 流水燈、蜂鳴器、IO按鍵設(shè)計_第3頁
STM32單片機(jī)技術(shù)與應(yīng)用項(xiàng)目教程 課件 項(xiàng)目三 流水燈、蜂鳴器、IO按鍵設(shè)計_第4頁
STM32單片機(jī)技術(shù)與應(yīng)用項(xiàng)目教程 課件 項(xiàng)目三 流水燈、蜂鳴器、IO按鍵設(shè)計_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

項(xiàng)目三

流水燈、蜂鳴器、I/O按鍵設(shè)計【知識目標(biāo)】掌握STM32F4單片機(jī)IO端口的結(jié)構(gòu);掌握STM32F4單片機(jī)寄存器的功能;掌握STM32F4的標(biāo)準(zhǔn)庫的IO端口庫函數(shù)功能?!灸芰δ繕?biāo)】能夠根據(jù)端口功能設(shè)置IO端口寄存器;能夠使用標(biāo)準(zhǔn)庫函數(shù)完成IO端口的初始化設(shè)置;掌握IO端口的模塊化程序方法與步驟?!舅刭|(zhì)目標(biāo)】培養(yǎng)規(guī)范化程序設(shè)計習(xí)慣;培養(yǎng)分析問題解決問題的能力;培養(yǎng)閱讀設(shè)計文檔資料的能力。項(xiàng)目三基于STM32F407ZGT6的流水燈、蜂鳴器、I/O按鍵設(shè)計任務(wù)3.1LED單燈閃爍設(shè)計任務(wù)3.2蜂鳴器控制設(shè)計任務(wù)3.3按鍵控制LED和蜂鳴器設(shè)計任務(wù)3.1LED單燈閃爍設(shè)計學(xué)習(xí)目標(biāo):掌握STM32單片機(jī)控制LED閃爍程序設(shè)計調(diào)試過程;任務(wù)功能:實(shí)現(xiàn)發(fā)光二極管LED1周期為1秒,占空比為50%的連續(xù)閃爍功能;知識目標(biāo):掌握STM32F4單片機(jī)I/O端口結(jié)構(gòu)、功能和功能設(shè)置;能力目標(biāo):掌握STM32F4單片機(jī)I/O端口應(yīng)用項(xiàng)目的程序設(shè)計、調(diào)試過程;素質(zhì)目標(biāo):規(guī)范程序設(shè)計過程,養(yǎng)成良好的程序設(shè)計習(xí)慣;1.STM32F407ZGT6單片機(jī)驅(qū)動發(fā)光二極管電路結(jié)構(gòu)3.STM32F407ZGT6的I/O端口寄存器結(jié)構(gòu)2.STM32F407ZGT6的I/O端口功能任務(wù)3.1LED單燈閃爍設(shè)計PC0~PC7驅(qū)動發(fā)放二極管LED1~LED8低電平點(diǎn)亮發(fā)光二極管1.STM32F407ZGT6單片機(jī)驅(qū)動發(fā)光二極管電路結(jié)構(gòu)PH(PH0~PH1)PA(PA0~PA15)

PB(PB0~PB15)

PC(PC0~PC15)

PD(PD0~PD15)

PE(PE0~PE15)

PF(PF0~PF15)

PG(PG0~PG15)2.STM32F407ZGT6的I/O端口功能STM32F4單片機(jī)的I/O的端口可以設(shè)置為:輸入模式輸出模式模擬端口模式(AD輸入端口、DA輸出端口)復(fù)用功能模式2.STM32F407ZGT6的I/O端口功能輸出模式復(fù)用輸出復(fù)用輸入輸入模式模擬量出模式模式(MODE[1:0])輸出模式(OTYPER)端口速度(OSPEEDR【B:A】)上拉/下來設(shè)置(PUPDR【1:0】)I/O端口模式00XX00I/O端口輸入模式,浮空輸入XX01I/O端口輸入模式,上拉XX10I/O端口輸入模式,下拉XX11I/O端口輸入模式保留(浮空)010四種速度模式設(shè)置00I/O端口推挽輸出001I/O端口推挽輸出,電阻上拉010I/O端口推挽輸出,電阻下拉011保留100I/O端口漏極開路輸出101I/O端口漏極開路,電阻上拉110I/O端口漏極開路,電阻下拉111保留(I/O端口漏極開路輸出)100四種速度模式設(shè)置00復(fù)用功能推挽001復(fù)用功能,推挽,電阻上拉010復(fù)用功能,推挽,電阻下拉011保留100復(fù)用功能,漏極開路101復(fù)用功能,漏極開路,電阻上拉110復(fù)用功能,漏極開路,電阻下拉111保留11XX00模擬量端口XX01保留XX10XX11輸入STM32F407ZGT6的I/O端口功能總結(jié)3.端口設(shè)置:上拉、下拉、浮空模式1.工作模式:輸入模式、輸出模式、復(fù)用功能、模擬量模式2.輸出模式:輸出方式包括推挽輸出、開漏輸出

輸出速度:四種速度選擇模式4.設(shè)置方法:通過設(shè)置寄存器實(shí)現(xiàn)①GPIO端口模式寄存器(GPIOx_MODER)(x=A..I)3.STM32F407ZGT6的I/O端口的基本配置寄存器00:輸入(復(fù)位狀態(tài))01:通用輸出模式10:復(fù)用功能模式11:模擬模式②GPIO端口輸出類型寄存器(GPIOx_OTYPER)(x=A..I)③GPIO端口輸出速度寄存器(GPIOx_OSPEEDR)(x=A..I)④GPIO端口上拉/下拉寄存器(GPIOx_PUPDR)(x=A..I)⑤GPIO端口輸入數(shù)據(jù)寄存器(GPIOx_IDR)(x=A..I)⑥GPIO端口輸出數(shù)據(jù)寄存器(GPIOx_ODR)(x=A..I)⑦GPIO端口置位/復(fù)位寄存器(GPIOx_BSRR)(x=A..I)⑧GPIO端口配置鎖定寄存器(GPIOx_LCKR)(x=A..I)⑨GPIO復(fù)用功能低位寄存器(GPIOx_AFRL)(x=A..I)⑩GPIO復(fù)用功能高位寄存器(GPIOx_AFRH)(x=A..I)GPIO設(shè)備文件:stm32f4xx_gpio.cSTM32GPIO端口操作的接口函數(shù)定義stm32f4xx_gpio.hSTM32GPIO端口數(shù)據(jù)定義STM32I/O端口操作的接口函數(shù)定義聲明GPIO的幾個重要函數(shù)1個初始化函數(shù):voidGPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct);2個讀取輸入電平函數(shù):uint8_tGPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);uint16_tGPIO_ReadInputData(GPIO_TypeDef*GPIOx);2個讀取輸出電平函數(shù):uint8_tGPIO_ReadOutputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);uint16_tGPIO_ReadOutputData(GPIO_TypeDef*GPIOx);4個設(shè)置輸出電平函數(shù):voidGPIO_SetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);voidGPIO_ResetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);voidGPIO_WriteBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,BitActionBitVal);voidGPIO_Write(GPIO_TypeDef*GPIOx,uint16_tPortVal);4.LED單燈閃爍項(xiàng)目設(shè)計【電路設(shè)計】4.LED單燈閃爍項(xiàng)目設(shè)計

(1)打開新建的模板項(xiàng)目,修改main.c文件內(nèi)容,編譯;

(2)新建LED驅(qū)動文件led.c和led.h,保存至HARDWARE/LED文件夾下;

(3)在MDK環(huán)境下添加led.h文件所在的路徑;(4)在把各個源文件對應(yīng)的頭文件添加到sys.h中;(5)設(shè)計主程序main.c;(6)將led.c添加到工程(MDK工程目錄下HARDWARE包內(nèi));【程序設(shè)計】(7)編譯程序并下載調(diào)試;表3.1GPIO寄存器的參數(shù)配置模式寄存器MODER輸出類型寄存器OTYPER輸出速度寄存器OSPEEDR上拉/下拉寄存器PUPDR01:輸出模式0:推挽模式1:開漏模式00:速度2MHz01:速度25MHz10:速度50MHz11:速度100MHz00:無上拉無下拉01:上拉10:下拉11:保留10:復(fù)用模式00:輸入模式不可用不可用11:模擬功能不可用不可用00:無上拉無下拉01:保留10:保留11:保留RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE); //使能GPIOF時鐘STM32的外設(shè)很多,為了降低功耗,每個外設(shè)都對應(yīng)一個時鐘,芯片上電時時鐘都是關(guān)閉的,如果要想外設(shè)工作,必須把相應(yīng)時鐘打開。所有的GPIO都掛載到AHB1總線上

led.c編程要點(diǎn)1.使能GPIO端口時鐘初始化結(jié)構(gòu)體初始化GPIO的常用格式:GPIO_InitTypeDefGPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9

//GPIOF9GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;

//普通輸出模式GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;

//100MHzGPIO_InitStructure.GPIO_OType=GPIO_OType_PP;

//推挽輸出GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;

//上拉GPIO_Init(GPIOF,&GPIO_InitStructure);

//初始化GPIO2.初始化GPIO目標(biāo)引腳任務(wù)3.2LED流水燈程序設(shè)計【任務(wù)要求】采用TM32F407ZGT6單片機(jī)的引腳驅(qū)動蜂鳴器,蜂鳴器以100Hz的頻率進(jìn)行鳴叫。【實(shí)現(xiàn)過程】在任務(wù)3.1基礎(chǔ)上,通過修改main()函數(shù)中的while語句功能,實(shí)現(xiàn)LED流水功能。任務(wù)3.3蜂鳴器控制程序設(shè)計【任務(wù)要求】采用STM32F407ZGT6單片機(jī)引腳驅(qū)動發(fā)光二極管LED1~LED8,實(shí)現(xiàn)8個發(fā)光二極管循環(huán)點(diǎn)亮的流水燈功能,每個LED燈循環(huán)點(diǎn)亮?xí)r間為0.2秒?!倦娐吩O(shè)計】

(1)打開新建的模板項(xiàng)目;

(2)新建蜂鳴器驅(qū)動文件beep.c和beep.h,保存至HARDWARE/BEEP文件夾下;

(3)在MDK環(huán)境下添加beep.h文件所在的路徑;(4)在把各個源文件對應(yīng)的頭文件添加到sys.h中;(5)設(shè)計主程序main.c;(6)將beep.c添加到工程(MDK工程目錄下HARDWARE包內(nèi));任務(wù)3.3蜂鳴器控制程序設(shè)計【程序設(shè)計】(7)編譯程序并下載調(diào)試;任務(wù)3.4按鍵控制發(fā)光二極管狀態(tài)設(shè)計【任務(wù)要求】采用STM32F407ZGT6單片機(jī)的端口驅(qū)動四個按鍵WK_UP,KEY1,KEY2,KEY3,通過四個按鍵驅(qū)動發(fā)光二極管,四個按鍵的功能分別設(shè)定為:WK_UP按鍵按下的首次功能為LED1的狀態(tài)取反,WK_UP按鍵被連續(xù)按下后的循環(huán)執(zhí)行功能為LED2的狀態(tài)取反;KEY1按鍵按下首次功能為LED3的狀態(tài)取反,KEY1按鍵被連續(xù)按下后的循環(huán)執(zhí)行功能為LED4的狀態(tài)取反;KEY2按鍵按下的首次功能為LED5的狀態(tài)取反,KEY2按鍵被連續(xù)按下后的循環(huán)執(zhí)行功能為LED6的狀態(tài)取反;按下KEY3按鍵按下的首次功能為LED7的狀態(tài)取反,KEY3按鍵被連續(xù)按下后循環(huán)執(zhí)行功能為LED8的狀態(tài)取反。1.I/O按鍵硬件電路結(jié)構(gòu)WK_UP---PA0KEY1—PE4KEY2—PE3KEY3—PE2KEY1、KEY2、KEY3上拉WK_UP按鍵下拉如何判斷PA0口有按鍵按下?未按下PA0口輸入低電平;按下PA0口輸入高電平如何判斷PE2、PE3、PE4口有按鍵按下?未按下輸入高電平按下輸入低電平PA0初始化功能:輸入浮空或下拉PE2、PE3、PE4初始化功能:輸入浮空或上拉(1)按鍵電路結(jié)構(gòu):PA0下拉;PE2、PE3、PE4上拉;

(3)PA0、PE2、PE3、PE4的初始化參數(shù)(2)WK_UP的檢測:按下為1,未按為0

KEY1,KEY2,KEY3檢測:按下為0,未按為1按鍵設(shè)計總結(jié):2.I/O按鍵硬件檢測程序設(shè)計

(1)打開新建的模板項(xiàng)目;

(2)新建蜂鳴器驅(qū)動文件iokey.c和iokey.h,保存至HARDWARE/IOKEY文件夾下;

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論