




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
ARM微控制器與嵌入式系統(tǒng)
庫函數(shù)開發(fā)-點亮led燈主講人:景妮琴北京電子科技職業(yè)學(xué)院內(nèi)容認(rèn)識GPIO結(jié)構(gòu)體打開時鐘了解GPIO庫函數(shù)了解開發(fā)板硬件電路編程方法完成任務(wù)GPIO結(jié)構(gòu)體typedefstruct{uint32_tGPIO_Pin;GPIOMode_TypeDefGPIO_Mode;GPIOSpeed_TypeDefGPIO_Speed;GPIOOType_TypeDefGPIO_OType;GPIOPuPd_TypeDefGPIO_PuPd;}GPIO_InitTypeDef;GPIOMode結(jié)構(gòu)體typedefenum{GPIO_Mode_IN=0x00,/*!<GPIOInputMode*/GPIO_Mode_OUT=0x01,/*!<GPIOOutputMode*/GPIO_Mode_AF=0x02,/*!<GPIOAlternatefunctionMode*/GPIO_Mode_AN=0x03/*!<GPIOAnalogMode*/}GPIOMode_TypeDef;GPIOOType結(jié)構(gòu)體typedefenum{GPIO_OType_PP=0x00,GPIO_OType_OD=0x01}GPIOOType_TypeDef;GPIOSpeed結(jié)構(gòu)體typedefenum{GPIO_Low_Speed=0x00,/*!<Lowspeed*/GPIO_Medium_Speed=0x01,/*!<Mediumspeed*/GPIO_Fast_Speed=0x02,/*!<Fastspeed*/GPIO_High_Speed=0x03/*!<Highspeed*/}GPIOSpeed_TypeDef;#defineGPIO_Speed_2MHzGPIO_Low_Speed#defineGPIO_Speed_25MHzGPIO_Medium_Speed#defineGPIO_Speed_50MHzGPIO_Fast_Speed#defineGPIO_Speed_100MHzGPIO_High_SpeedGPIOPuPd結(jié)構(gòu)體typedefenum{GPIO_PuPd_NOPULL=0x00,GPIO_PuPd_UP=0x01,GPIO_PuPd_DOWN=0x02}GPIOPuPd_TypeDef;GPIO結(jié)構(gòu)體typedefenum{Bit_RESET=0,Bit_SET}BitAction;GPIO結(jié)構(gòu)體#defineGPIO_Pin_0((uint16_t)0x0001)/*Pin0selected*/#defineGPIO_Pin_1((uint16_t)0x0002)/*Pin1selected*/#defineGPIO_Pin_2((uint16_t)0x0004)/*Pin2selected*/#defineGPIO_Pin_3((uint16_t)0x0008)/*Pin3selected*/#defineGPIO_Pin_4((uint16_t)0x0010)/*Pin4selected*/#defineGPIO_Pin_5((uint16_t)0x0020)/*Pin5selected*/#defineGPIO_Pin_6((uint16_t)0x0040)/*Pin6selected*/#defineGPIO_Pin_7((uint16_t)0x0080)/*Pin7selected*/#defineGPIO_Pin_8……((uint16_t)0x0100)/*Pin8selected*/#defineGPIO_Pin_15((uint16_t)0x8000)/*Pin15selected*/#defineGPIO_Pin_All((uint16_t)0xFFFF)/*Allpinsselected*/STM32微控制器-添加頭文件添加全局宏定義:USE_STDPERIPH_DRIVER#ifdefUSE_STDPERIPH_DRIVER#include"stm32f4xx_conf.h"#endif在stm32f4xx_conf.h中加載了這些庫函數(shù):STM32微控制器-添加頭文件主要添加頭文件:#include"stm32f4xx.h"#include"main.h"而stm32f4xx_gpio.h、stm32f4xx_rcc.h已經(jīng)包含只需要在fwlib中添加源文件:stm32f4xx_gpio.c、stm32f4xx_rcc.c即可。注意:這里需要用到哪個源文件就加哪個,這里需要用GPIO點亮led燈,因此添加rcc和gpio即可。STM32微控制器-重要函數(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);STM32微控制器-重要函數(shù)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);STM32微控制器-庫函數(shù)1個初始化函數(shù):
voidGPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct);作用:初始化一個或者多個IO口(同一組)的工作模式,輸出類型,速度以及上下拉方式。也就是一組IO口的4個配置寄存器。GPIOx->MODERGPIOx->OSPEEDRGPIOx->OTYPERGPIOx->PUPDRGPIO_PinSTM32微控制器-庫函數(shù)GPIO_Init函數(shù)初始化樣例:GPIO_InitTypeDefGPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOH,ENABLE);//使能GPIOH時鐘
//GPIOH12,H13初始化設(shè)置
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12|GPIO_Pin_13;//LED1和LED2對應(yīng)IO口
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;//普通輸出模式
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽輸出
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;//100MHzGPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;//上拉
GPIO_Init(GPIOH,&GPIO_InitStructure);//初始化GPIOH12,13可以一次初始化一個IO組下的多個IO,前提是這些IO口的配置方式一樣。STM32微控制器-庫函數(shù)
2個讀取輸入電平函數(shù):uint8_tGPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);作用:讀取某個GPIO的輸入電平。實際操作的是GPIOx_IDR寄存器。例如:GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5);//讀取GPIOA5的輸入電平STM32微控制器-庫函數(shù)
2個讀取輸入電平函數(shù):uint16_tGPIO_ReadInputData(GPIO_TypeDef*GPIOx);作用:讀取某組GPIO的輸入電平。實際操作的也是GPIOx_IDR寄存器。例如:GPIO_ReadInputData(GPIOA);//讀取GPIOA組中所有I/O口輸入電平STM32微控制器-庫函數(shù)
2個讀取輸出電平函數(shù):uint8_tGPIO_ReadOutputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);作用:讀取某個GPIO的輸出電平。實際操作的是GPIO_ODR寄存器。例如:
GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_5);//讀取GPIOA.5的輸出電平STM32微控制器-庫函數(shù)
2個讀取輸出電平函數(shù):uint16_tGPIO_ReadOutputData(GPIO_TypeDef*GPIOx);作用:讀取某組GPIO的輸出電平。實際操作的是GPIO_ODR寄存器。例如:GPIO_ReadOutputData(GPIOA);//讀取GPIOA組中所有I/O口輸出電平STM32微控制器-庫函數(shù)4個設(shè)置輸出電平函數(shù):voidGPIO_SetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);作用:設(shè)置某個IO口輸出為高電平(1)。實際操作BSRRL寄存器例如:GPIO_SetBits(GPIOA,GPIO_Pin_0);就是為GPIOA0設(shè)置高電平voidGPIO_ResetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);作用:設(shè)置某個IO口輸出為低電平(0)。實際操作的BSRRH寄存器。例如:GPIO_ResetBits(GPIOA,GPIO_Pin_0);就是為GPIOA0設(shè)置低電平STM32微控制器-庫函數(shù)4個設(shè)置輸出電平函數(shù):voidGPIO_WriteBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,BitActionBitVal);作用:為某個IO口設(shè)置BitVal的值,BitVal可以是0也可以是1。例如:GPIO_WriteBit(GPIOA,GPIO_Pin_0,1);就是為GPIOA0設(shè)置高電平voidGPIO_Write(GPIO_TypeDef*GPIOx,uint16_tPortVal);作用:為某組IO口設(shè)置PortVal的值。例如:GPIO_WriteBit(GPIOA,0x0100);就是為GPIOA設(shè)置0x0100的值。硬件電路任務(wù):點亮一盞led燈。分析:1.底板上的led燈的硬件電路圖如右圖,我們發(fā)現(xiàn)led燈D1的左端接3.3V高電平,為了點亮它,需要有電流流過,也就是需要有壓差,左邊高電平,右邊應(yīng)為低電平2.如果我們用杜邦線在D1的右邊連接GPIOA0,那么A0的電平應(yīng)為低電平3.下面的任務(wù)就是為GPIOA0設(shè)置低電平。庫函數(shù)編程工程樹在工程模板的基礎(chǔ)上完成在hardware中新建led.c和led.h文件led.c品在hardware中l(wèi)ed.h只需要在main中#include即可led.c要實現(xiàn)GPIO的配置以及初始化led.h是led.c中函數(shù)的聲明庫函數(shù)編程-led.c在led.c中完成了一個函數(shù)的實現(xiàn)led_Init()在led_Init()中,定義了結(jié)構(gòu)體變量GPIO_InitStructure,打開了GPIOA的時鐘,完成了結(jié)構(gòu)體的配置,最后進(jìn)行了初始化。庫函數(shù)編程-led.h在led.h中完成了一個函數(shù)的聲明#ifndef__LED_H#define__LED_Hvoidled_Init(void);#endif庫函數(shù)編程-main.c在main.c中加載了
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉儲物流配送合同規(guī)范
- 紡織技術(shù)創(chuàng)新思路試題及答案
- 紡織行業(yè)新興市場的開發(fā)與設(shè)計趨勢探討試題及答案
- 2025黑龍江大興安嶺林業(yè)集團(tuán)公司招聘撲火隊設(shè)備操作員73人筆試參考題庫附帶答案詳解
- 2025福建泉州市仙公山風(fēng)景名勝區(qū)有限公司招聘7人筆試參考題庫附帶答案詳解
- 2025年駐馬店全域礦業(yè)開發(fā)有限公司招聘27人筆試參考題庫附帶答案詳解
- 2025年山東省科創(chuàng)集團(tuán)有限公司權(quán)屬企業(yè)招聘12人筆試參考題庫附帶答案詳解
- 哈爾濱委托協(xié)議翻譯電話
- 藝術(shù)類期末試題及答案
- 分布式光伏發(fā)電項目可行性分析與發(fā)展前景
- 青春期異性之間的交往課件高中上學(xué)期心理健康主題班會
- 北京工業(yè)大學(xué)《計量經(jīng)濟(jì)學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 人工智能應(yīng)用開發(fā)合同
- 猩紅熱課件完整版本
- 肌肉骨骼康復(fù)學(xué)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 高三英語一輪復(fù)習(xí)備考實踐經(jīng)驗分享 課件
- 小學(xué)五年級體育教案全冊(人教版)
- 農(nóng)業(yè)保險理賠服務(wù)操作流程手冊
- 《交換與路由技術(shù)》 課件全套 曹炯清 第1-9部分 學(xué)習(xí)環(huán)境的搭建- 綜合實訓(xùn)與技能比賽
- 第30屆WMO初測2年級B試卷
- 新人教版高中英語必修二 unit 5詞匯默寫本
評論
0/150
提交評論