版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025專業(yè)倉儲合同
- 2025國英置業(yè)合同成本手冊
- 2025年度農(nóng)村私人魚塘承包與綠色漁業(yè)發(fā)展合作合同
- 二零二五年度農(nóng)產(chǎn)品品牌營銷委托收購合作協(xié)議3篇
- 二零二五年度車輛未過戶期間的車輛事故免責(zé)條款合同3篇
- 二零二五年度火鍋店轉(zhuǎn)讓及底料供應(yīng)協(xié)議3篇
- 二零二五年度執(zhí)業(yè)藥師藥品市場營銷推廣服務(wù)合同3篇
- 2025年度特種水產(chǎn)品養(yǎng)殖項目合伙經(jīng)營合同3篇
- 二零二五年度特色小鎮(zhèn)建設(shè)住房合作協(xié)議3篇
- 2025年度家庭農(nóng)場規(guī)模化養(yǎng)豬場整體轉(zhuǎn)讓合同3篇
- 2025年1月八省聯(lián)考河南新高考物理試卷真題(含答案詳解)
- 物業(yè)管理服務(wù)人員配備及崗位職責(zé)
- 安徽省蕪湖市2023-2024學(xué)年高一上學(xué)期期末考試 物理 含解析
- SAP-按銷售訂單采購生產(chǎn)系統(tǒng)實現(xiàn)之配置和操作
- 《安寧療護(hù)培訓(xùn)》PPT課件
- 第5章煤炭氣化技術(shù)
- 全口義齒修復(fù)匯總
- 業(yè)余無線電臺設(shè)置(變更)申請表
- 擔(dān)保公司員工守則(共18頁)
- 錄音藝術(shù)教學(xué)大綱
- 初中化學(xué)教學(xué)中的教學(xué)瓶頸及解決策略探討
評論
0/150
提交評論