版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第3章STM32I/O應(yīng)用實戰(zhàn)《嵌入式技術(shù)入門與實戰(zhàn)(基于STM32)》第3章STM32I/O應(yīng)用實戰(zhàn)0102初識STM32的I/O口任務(wù)1GPIO實現(xiàn)跑馬燈的控制21、初識STM32的I/O口第3章STM32I/O應(yīng)用實戰(zhàn)PartOneGPIO端口和引腳的概念,GPIO工作模式1、初識STM32的I/O口1.1STM32的I/0口定義1.2GPIO的工作模式和結(jié)構(gòu)41.1STM32的I/0口定義STM32的I/0口,又叫做GPIO(General-PurposeInputs/Outputs),是STM32數(shù)字輸入輸出的基本模塊,可以實現(xiàn)STM32與外部環(huán)境進行數(shù)字交換。GPIO的引腳與外部硬件設(shè)備連接,可實現(xiàn)與外部通訊、控制外部硬件或者采集外部硬件數(shù)據(jù)的功能:借助GPIO,微控制器可以實現(xiàn)對外圍設(shè)備(如LED和按鍵等)最簡單、最直觀的監(jiān)控。當微控制器沒有足夠的I/O引腳或片內(nèi)存儲器時,GPIO還可用于串行和并行通信、存儲器擴展等。通用I/O端口GPIO51系列單片機有1個8位雙向并行I/O端口P0和3個8位準雙向并行I/O端口P1~P3。?51系列單片機的端口和引腳?STM32的GPIO的每個端口組有16個引腳,STM32不同型號的芯片,具有不同的端口組和不同的引腳數(shù)量STM32F407微控制器有9組通用I/O端口,端口號用GPIOx(x是A、B、C、D、E、F、G、H、I)表示,即GPIOA、GPIOB、……GPIOI每組端口有16個引腳(0~15),引腳號分別用Px0、Px1、……Px15(x是A~I)表示1.2GPIO的工作模式GPIO端口的每個位(引腳)可以由軟件分別配置成多種模式。狀態(tài)配置模式HAL庫代碼中宏定義名稱通用輸出開漏(Push-Pull)GPIO_MODE_OUTPUT_PP推挽式(Open-Drain)GPIO_MODE_OUTPUT_OD復用功能輸出開漏(Push-Pull)GPIO_MODE_AF_PP推挽式(Open-Drain)GPIO_MODE_AF_OD輸入上拉輸入GPIO_MODE_INPUT,GPIO_PULLUP下拉輸入GPIO_MODE_INPUT,GPIO_PULLDOWN浮空輸入GPIO_MODE_INPUT,GPIO_NOPULL模擬輸入GPIO_MODE_ANALOG1.2.2GPIO端口位的基本結(jié)構(gòu)9GPIO不同工作模式下的電壓標準非模擬輸入模式端口能夠讀取當前電平的高低,讀取電壓高低的范圍為5V/3.3V~0V。模擬輸入模式端口能夠讀取當前電路的模擬電壓值,分辨率為4096(12bit),采集范圍為3.3V~0V。采集電壓盡可能不要超過3.3V,否則可能會對芯片產(chǎn)生損壞。通用輸出模式端口能夠輸出電平,控制輸出口的電壓范圍為3.3V~0V。 復用模式端口復用到芯片內(nèi)置的各種功能寄存器上,比如串口發(fā)送接收,SPI通信,Can總線等。這些寄存器沒有直接的輸出口,都是通過復用端口完成它們的功能。2、任務(wù)1GPIO實現(xiàn)跑馬燈的控制第3章STM32I/O應(yīng)用實戰(zhàn)PartTwo了解應(yīng)用實例功能,GPIO工作模式的選擇,硬件設(shè)計2、任務(wù)1GPIO實現(xiàn)跑馬燈的控制2.1軟硬件設(shè)計2.2實現(xiàn)與代碼分析11122.1軟硬件設(shè)計基于嵌入式MCU設(shè)計并實現(xiàn)一個流水燈系統(tǒng),具體要求:系統(tǒng)上電后,微控制器控制2個LED燈間隔200ms依次閃爍,并以此循環(huán)往復。13GPIO作為輸出的應(yīng)用芯片:STM32F407ZGT6實驗板:正點原子探索開發(fā)套件實驗板已實現(xiàn)了硬件電路,無需重新搭建。14硬件平臺條件硬件設(shè)計原理圖STM32芯片作為輸出的引腳:PF9、PF10LED連接硬件電路輸出狀態(tài)下的GPIO內(nèi)部配置推挽輸出模式下:1:P導通,輸出高0:N導通,輸出低開漏輸出模式下,0:N導通,輸出低高阻狀態(tài):N不導通(P-MOS從不被激活)原理:輸出寄存器上的0激活N-MOS,而輸出寄存器上的1將激活P-MOS。推挽電路是兩個參數(shù)相同的三極管或MOSFET,以推挽方式存在于電路中,各負責正負半周的波形放大任務(wù)。電路工作時,兩只對稱的功率開關(guān)管每次只有一個導通,所以導通損耗小、效率高。用途:可以輸出高、低電平,連接數(shù)字器件;特點:推拉式輸出級既提高電路的負載能力,又提高開關(guān)速度。17推挽輸出原理輸出寄存器上的0激活N-MOS,輸出低電平,輸出寄存器上的1將端口置于高阻狀態(tài)用途適合做電流型的驅(qū)動特點:
利用外部電路的驅(qū)動能力,減少IC內(nèi)部的驅(qū)動一般來說,開漏是用來連接不同電平的器件,匹配電平用的因為開漏引腳不連接外部的上拉電阻時,只能輸出低電平,如果需要同時具備輸出高電平的功能,則需要接上拉電阻,很好的一個優(yōu)點是通過改變上拉電源的電壓,便可以改變傳輸電平,比如輸出5V開漏輸出功能:基于嵌入式MCU設(shè)計并實現(xiàn)一個流水燈系統(tǒng)。LED燈驅(qū)動需要輸出高低電平,GPIO引腳的模式選擇推挽輸出模式GPIO作為輸出的應(yīng)用-模式選擇思考與練習◎簡述GPIO有哪幾種工作模式?!蚍治鐾仆燧敵龊烷_漏輸出的區(qū)別。212.2實現(xiàn)與代碼分析掌握詳細實現(xiàn)過程,分析具體實現(xiàn)代碼第一步使用STM32CubeIDE新建工程第二步
使用STM32CubeMX完成時鐘配置第三步使用STM32CubeMX完成GPIO端口引腳初始化配置第四步導出工程第五步LED流水燈功能代碼編寫第六步下載調(diào)試2.2.1實現(xiàn)過程2.2.2代碼分析1)程序框架設(shè)計的程序可以采用“只執(zhí)行一次初始化函數(shù),重復執(zhí)行功能函數(shù)”這種框架,如下所示:int
main(void)
{
//init()
while(1)
{
//test()
}
}
231)程序框架2)HAL庫函數(shù)HAL庫是ST推出的官方的固件庫,它將這些寄存器底層操作都封裝起來,提供一整套接口(API)供開發(fā)者調(diào)用,降低開發(fā)難度。用戶在開發(fā)過程中不需要詳細掌握寄存器的配置方法,只要知道調(diào)用哪些固件庫函數(shù)即可,只要掌握了固件庫開發(fā)思想,就大大降低了初學者入門的難度。寄存器標準庫HAL庫2)引腳控制的HAL庫函數(shù)1、HAL_GPIO_Init功能:GPIO初始化,每個引腳可獨立配置,也可同時傳入多個引腳進行配置,包括GPIO工作模式、響應(yīng)速度等相關(guān)寄存器的配置。無返回值。函數(shù)原型voidHAL_GPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_Init)26GPIO_InitTypeDef結(jié)構(gòu)體內(nèi)容解析27成員含義配置選項Pin引腳號GPIO_PIN_0~GPIO_PIN_15(使用符號“|”進行或運算便可以合并)GPIO_PIN_All(一次初始化全部16個端口)Mode工作模式GPIO_MODE_INPUT(輸入,需進一步配置)GPIO_MODE_OUTPUT_PP(推挽輸出)GPIO_MODE_OUTPUT_OD(開漏輸出)GPIO_MODE_AF_PP(復用推挽)GPIO_MODE_AF_OD(復用開漏)GPIO_MODE_ANALOG(模擬輸入)Pull上下拉電阻的選擇配置GPIO_NOPULL(無上下拉的浮空輸入)GPIO_PULLUP(上拉輸入)GPIO_PULLDOWN(下拉輸入)SpeedI/O口驅(qū)動電路的響應(yīng)速度,輸出模式下有效GPIO_SPEED_FREQ_LOW(2MHz)GPIO_SPEED_FREQ_MEDIUM(25MHz)GPIO_SPEED_FREQ_HIGH(50MHz)GPIO_SPEED_FREQ_VERY_HIGH(100MHz)本任務(wù)中,配置PF9、PF10為推挽輸出,無上下拉,速度2MHz2)引腳控制的HAL庫函數(shù)2、HAL_GPIO_ReadPin功能:從輸入數(shù)據(jù)寄存器(IDR)中讀取引腳狀態(tài)值,0或1,返回引腳狀態(tài)值“0”或“1”。函數(shù)原型:GPIO_PinStateHAL_GPIO_ReadPin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin)282)引腳控制的HAL庫函數(shù)3、HAL_GPIO_WritePin功能:向輸出數(shù)據(jù)寄存器(ODR)中寫入輸出狀態(tài)(0或1),無返回值函數(shù)原型:voidHAL_GPIO_WritePin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,GPIO_PinStatePinState)4、HAL_GPIO_TogglePin293)GPIO初始化的代碼實現(xiàn)GPIO的初始化在STM32CubeMx中完成配置,會自動轉(zhuǎn)化成初始化代碼30開啟外設(shè)時鐘31
__HAL_RCC_GPIOF_CLK_ENABLE();4)流水燈功能的實現(xiàn)在while(1)中無限循環(huán)執(zhí)行以下LED0/1交替亮滅,實現(xiàn)跑馬燈效果。32思考與練習◎?qū)τ趹?yīng)用案例,修改跑馬燈功能為全亮和全滅,調(diào)用HAL_GPIO_TogglePin函數(shù)實現(xiàn)3、GPIO的寄存器描述GPIO寄存器實現(xiàn)對GPIO端口初始化配置和數(shù)據(jù)輸入輸出控制每個寄存器只能以32位(字)進行訪問,不允許16位(半字)或8位(字節(jié))訪問*GPIO配置寄存器GPIO端口模式寄存器GPIOx_MODERGPIO端口輸出類型寄存器GPIOx_OTYPERGPIO端口輸出速度寄存器GPIOx_OSPEEDRGPIO端口上拉/下拉寄存器GPIOx_PUPDR數(shù)據(jù)寄存器GPIO端口輸入數(shù)據(jù)寄存器GPIOx_IDRGPIO端口輸出數(shù)據(jù)寄存器GPIOx_ODR置位/復位寄存器GPIOx_BSRR鎖定寄存器GPIOx_LCKR復用功能選擇寄存器GPIO復用功能高位寄存器GPIOx_AFRHGPIO復用功能低位寄存器GPIOx_AFRLGPIO端口模式寄存器GPIOx_MODER36GPIO端口輸出類型寄存器GPIOx_OTYPER37GPIO端口輸出速度寄存器GPIOx_OSPEEDR38GPIO端口上拉/下拉寄存器GPIOx_PUPDR3940端口輸入數(shù)據(jù)寄存器(GPIOx_IDR)GPIO_PinStateHAL_GPIO_ReadPin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin){GPIO_PinStatebitstatus;/*Checktheparameters*/assert_param(IS_GPIO_PIN(GPIO_Pin));if((GPIOx->IDR&GPIO_Pin)!=(uint32_t)GPIO_PIN_RESET){bitstatus=GPIO_PIN_SET;}else{bitstatus=GPIO_PIN_RESET;}returnbitstatus;}41端口輸出數(shù)據(jù)寄存器(GPIOx_ODR)42端口位設(shè)置/復位寄存器(GPIOx_BSRR)voidHAL_GPIO_WritePin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,GPIO_PinStatePinState){/*Checktheparameters*/assert_param(IS_GPIO_PIN(GPIO_Pin));assert_param(IS_GPIO_PIN_ACTION(PinState));if(PinState!=GPIO_PIN_RESET){
GPIOx->BSRR=GPIO_Pin;}else{
GPIOx->BSRR=(uint32_t)GPIO_Pin<<16u;}}通用I/O(GPIO)說明事項復位期間和剛復位后:復用功能未開啟,I/O端口被配置成浮空輸入模式(CNFx[1:0]=01b,MODEx[1:0]=00b)。當作為輸出配置時:寫到輸出數(shù)據(jù)寄存器上的值(GPIOx_ODR)輸出到相應(yīng)的I/O引腳??梢砸酝仆炷J交蜷_漏模式使用輸出驅(qū)動器。輸入數(shù)據(jù)寄存器(GPIOx_IDR)在每個APB2時鐘周期捕捉I/O引腳上的數(shù)據(jù)。所有GPIO引腳有一個內(nèi)部弱上拉和弱下拉,當配置為輸入時,它們可以被激活,也可以不被激活所有端口都有外部中斷能力。為了使用外部中斷線,端口必須配置成輸入模式。單擊此處添加副標題內(nèi)容謝謝聆聽44第3章STM32I/O應(yīng)用實戰(zhàn)《嵌入式技術(shù)入門與實戰(zhàn)(基于STM32)》3、STM32系列微控制器3.1STM32內(nèi)部結(jié)構(gòu)3.2STM32時鐘系統(tǒng)3.3STM32最小系統(tǒng)463.1STM32F407內(nèi)部功能結(jié)構(gòu)圖473.2STM32時鐘系統(tǒng)在嵌入式系統(tǒng)開發(fā)設(shè)計中,芯片內(nèi)部的時鐘系統(tǒng)是開發(fā)者必須要熟練掌握的內(nèi)核和任何片上外設(shè)都需要時鐘的驅(qū)動,在開發(fā)設(shè)計中需要清晰的了解時鐘系統(tǒng)的配置方法。STM32的時鐘系統(tǒng)為了適應(yīng)不同的頻率需求,需要支持多種頻率,其時鐘系統(tǒng)比51單片機要復雜很多。48STM32F4的時鐘樹結(jié)構(gòu)STM32有5個時鐘源:HSI、HSE、LSI、LSE、PLL49STM32F4的時鐘源HSIHSI是高速內(nèi)部時鐘,由內(nèi)部16MHzRC振蕩器生成可直接用作系統(tǒng)時鐘,或者用作為PLL的輸入。優(yōu)點是成本較低(無需使用外部組件),啟動速度比HSE晶振快其精度不及外部晶振或陶瓷諧振器。HSEHSE是高速外部時鐘可接外部晶振/陶瓷諧振器,也可接外部用戶時鐘源可直接用作系統(tǒng)時鐘,或者用作為PLL的輸入。頻率范圍為4MHz~26MHz精度非常高。50STM32F4的時鐘源LSILSI是低速內(nèi)部時鐘,RC振蕩器可作為低功耗時鐘源在停機和待機模式下保持運行,供獨立看門狗(IWDG)和自動喚醒單元(AWU)使用??勺鳛閷崟r時鐘外設(shè)(RTC)的時鐘源。時鐘頻率在32kHz左右。LSELSE是低速外部時鐘,接頻率為32.768kHz的晶振或陶瓷諧振器可作為實時時鐘外設(shè)(RTC)的時鐘源來提供時鐘/日歷或其它定時功能具有功耗低且精度高的優(yōu)點。51STM32F4的時鐘源PLLPLL為鎖相環(huán)倍頻輸出,STM32F4具有兩個PLL:主PLL和專用PLL。主PLL(MainPLL)由HSE或HSI振蕩器提供時鐘信號,并具有兩個不同的輸出時鐘:第一個用于生成高速系統(tǒng)時鐘(最高達168MHz),第二個用于生成USBOTGFS的時鐘(48MHz)、隨機數(shù)發(fā)生器的時鐘(48MHz)和SDIO時鐘(48MHz)。專用PLL(PLLI2S)用于生成精確時鐘,從而在I2S接口實現(xiàn)高品質(zhì)音頻性能。52STM32F4系統(tǒng)時鐘(SYSCLK)的選擇系統(tǒng)時鐘SYSCLK是提供STM32中絕大部分部件工作的時鐘源,可來源于三個時鐘源:HSI、HSE、PLL在系統(tǒng)復位后,默認系統(tǒng)時鐘為HSI。STM32F407的SYSCLK時鐘最大168MHz53STM32F4的時鐘輸出STM32共有兩個微控制器時鐘輸出(MCO)引腳,可以選擇一個時鐘信號輸出到MCO引腳上:MCO1引腳(PA8),可選擇時鐘源:HSI、LSE、HSE、PLL
MCO2引腳(PC9),可選擇時鐘源:HSE、PLL、系統(tǒng)時鐘、PLLI2SCLK54STM32F4的總線時鐘以太網(wǎng)PTP時鐘是使用系統(tǒng)時鐘AHB時鐘經(jīng)過SYSCLK時鐘分頻得來,最大頻率為168MHzAPB2高速時鐘、APB1低速時鐘經(jīng)過AHB時鐘分頻得來,最大頻率分別為168MHz、84MHz553.3STM32最小系統(tǒng)最小系統(tǒng)是指僅包含必需的元器件,僅可運行最基本軟件的簡化系統(tǒng),也就是用最少的元件組成,但可以工作的系統(tǒng)。無論多么復雜的嵌入式系統(tǒng),都可以認為是由最小系統(tǒng)和擴展功能組成。最小系統(tǒng)是嵌入式系統(tǒng)硬件設(shè)計中復用率最高,也是最基本的功能單元。典型的最小系統(tǒng)包括:STM32微控制器芯片、電源、調(diào)試接口、復位電路、時鐘、存儲系統(tǒng)(可選)。56電源電路STM32F4微控制器使用單電源供電,工作電壓VDD要求介于1.8V到3.6V之間。同時通過內(nèi)部的一個嵌入式線性調(diào)壓器,可以給Cortex-M4內(nèi)核提供1.2V的工作電壓。通常正常電源為5V,可以采用轉(zhuǎn)換電路轉(zhuǎn)為3.3v后給芯片供電STM32F4芯片的電源引腳可連接電容以增強穩(wěn)定性57調(diào)試接口STM32的CoreSight調(diào)試系統(tǒng)支持JTAG
和SWD兩種接口標準,這兩種接口都要使用GPIO(普通I/O口)來供給調(diào)試仿真器使用。JTAG調(diào)試接口(JTAG-DP)提供5針標準JTAG接口串行調(diào)試接口(SW-DP)提供2針(時鐘+數(shù)據(jù))接口58復位電路復位電路的主要作用是把特殊功能寄存器的數(shù)據(jù)刷新為默認數(shù)據(jù)。復位場景:單片機在運算過程中由于干擾等外界原因造成寄存器中數(shù)據(jù)混亂不能使其正常繼續(xù)執(zhí)行程序(稱死機)或產(chǎn)生的結(jié)果不正確時均需要復位,以使程序重新開始運行。單片機在剛上電時也需要復位電路,系統(tǒng)上電時復位電路
提供復位信號,直至電源穩(wěn)定后,撤銷復位信號,以使單
片機能夠正常穩(wěn)定的工作。59時鐘系統(tǒng)一般在最小系統(tǒng)設(shè)計時,我們會考慮選用外部時鐘源,以獲得更高的時鐘精度HSE外接晶振電路,晶振8MHz
LSE外接晶振電路,晶振32.768KHz60思考與練習STM32F4有哪些時鐘源信號?時鐘頻率分別是多少?STM32F4的系統(tǒng)時鐘的時鐘源有哪些?STM32最小系統(tǒng)包含哪些部分?請說明STM32F4的供電要求?STM32系統(tǒng)復位有哪些場景?STM32的時鐘源一般如何選擇?61單擊此處添加副標題內(nèi)容謝謝聆聽62第3章STM32I/O應(yīng)用實戰(zhàn)《嵌入式技術(shù)入門與實戰(zhàn)(基于STM32)》3、任務(wù)2按鍵點燈的控制與實現(xiàn)第3章STM32I/O應(yīng)用實戰(zhàn)PartThree3、任務(wù)2按鍵點燈的控制與實現(xiàn)3.1GPIO輸入工作模式3.2GPIO作為輸入的應(yīng)用設(shè)計3.3實現(xiàn)與代碼分析653.4GPIO的寄存器描述3.1、GPIO輸入工作模式1、GPIO輸入工作模式模擬輸入1浮空輸入2上拉輸入3下拉輸入4輸入模式上拉、下拉和浮空輸入的內(nèi)部配置輸出緩沖器被禁止,施密特觸發(fā)器輸入被激活上拉電阻開關(guān)閉合接VDD,下拉電阻開關(guān)打開在引腳沒有外部輸入時,引腳被上拉至高電平,且保持高電平狀態(tài)69上拉輸入開關(guān)閉合下拉電阻開關(guān)閉合接GND,上拉電阻開關(guān)打開在引腳沒有外部輸入時,引腳被下拉至低電平,且保持低電平狀態(tài)70下拉輸入開關(guān)閉合輸入引腳即不接高電平,也不接低電平。由外部輸入決定引腳的狀態(tài)。71浮空輸入開關(guān)都打開關(guān)閉施密特觸發(fā)器,上拉和下拉電阻被禁止。72模擬輸入3.2、GPIO作為輸入的應(yīng)用設(shè)計設(shè)計并實現(xiàn)一個按鍵控制LED燈系統(tǒng),具體要求:系統(tǒng)上電后,按下4個按鍵KEY0、KEY1、KEY2、WK_UP分別控制翻轉(zhuǎn)LED1與LED2的亮滅狀態(tài)74GPIO作為輸入的應(yīng)用芯片:STM32F407ZGT6實驗板:正點原子探索開發(fā)套件實驗板已實現(xiàn)了硬件電路,無需重新搭建。75硬件平臺條件按下按鍵時導通A端與B端;松開按鍵保持電路開路狀態(tài)76按鍵原理在閉合及斷開的瞬間均伴隨有一連串的抖動,抖動時間一般為5ms~10ms。硬件消抖:在按鍵上并聯(lián)一個電容,利用電容的充放電特性來對抖動過程中產(chǎn)生的電壓毛刺進行平滑處理。軟件消抖:使用程序完成消抖任務(wù)。77按鍵消抖硬件設(shè)計原理圖KEY0→PE4,KEY1→PE3,KEY2→PE2、WK_UP→PA0按鍵連接硬件電路功能:基于嵌入式MCU設(shè)計并實現(xiàn)一個按鍵控制LED燈系統(tǒng)。KEY0→PE4:上拉輸入模式KEY1→PE3:上拉輸入模式KEY2→PE2:上拉輸入模式WK_UP→PA0:下拉輸入模式GPIO作為輸出的應(yīng)用-模式選擇思考與練習◎簡述GPIO有哪幾種輸入工作模式?!蚍治錾侠?、下拉和浮空輸入的區(qū)別。3.3、實現(xiàn)與代碼分析掌握詳細實現(xiàn)過程,分析具體實現(xiàn)代碼3.3.1
實現(xiàn)過程第一步使用STM32CubeMX完成GPIO引腳初始化配置和工程代碼的生成第二步按鍵掃描和按鍵點燈代碼添加第三步下載調(diào)試3.3.2代碼分析1)GPIO引腳初始化代碼2)按鍵掃描代碼3)按鍵點燈代碼83GPIO引腳初始化代碼84按鍵掃描思路按鍵掃描代碼864、GPIO的寄存器描述GPIO寄存器GPIO寄存器實現(xiàn)對GPIO端口初始化配置和數(shù)據(jù)輸入輸出控制每個寄存器只能以32位(字)進行訪問STM3F40x芯片系列的GPIO寄存器:GPIO配置寄存器GPIO端口模式寄存器GPIOx_MODERGPIO端口輸出類型寄存器GPIOx_OTYPERGPIO端口輸出速度寄存器GPIOx_OSPEEDRGPIO端口上拉/下拉寄存器GPIOx_PUPDR數(shù)據(jù)寄存器GPIO端口輸入數(shù)據(jù)寄存器GPIOx_IDRGPIO端口輸出數(shù)據(jù)寄存器GPIOx_ODR置位/復位寄存器GPIO端口置位/復位寄存器GPIOx_BSRR鎖定寄存器GPIO端口配置鎖定寄存器GPIOx_LCKR復用功能選擇寄存器GPIO復用功能高位寄存器GPIOx_AFRHGPIO復用功能低位寄存器GPIOx_AFRL89GPIO端口模式寄存器GPIOx_MODER每個引腳2bit:MODEy[1:0]32bit可配置16個引腳,即1個端口PA0輸入模式的配置:GPIOA_MODER,MODER0[1:0]=00GPIO端口輸出類型寄存器GPIOx_OTYPER90每個引腳僅用1bit表示引腳輸出類型:OTy[0],1個端口僅占用低16位,高16位保留PE5推挽輸出:在GPIOE_MODER中,MODER5[1:0]=01,在GPIOE_OTYPER中,OT5=0GPIO端口輸出速度寄存器GPIOx_OSPEEDR91每個引腳2bit:OSPEEDRy[1:0]32bit可配置16個引腳,即1個端口GPIO端口上拉/下拉寄存器GPIOx_PUPDR92每個引腳2bit:PUPDRy[1:0],32bit可配置16個引腳,即1個端口PE3上拉輸入模式:在GPIOE_MODER中,MODER3[1:0]=00,在GPIOE_PUPDR中,PUPDR3[1:0]=01端口輸入數(shù)據(jù)寄存器(GPIOx_IDR)93GPIO_PinStateHAL_GPIO_ReadPin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin){GPIO_PinStatebitstatus;/*Checktheparameters*/assert_param(IS_GPIO_PIN(GPIO_Pin));if((GPIOx->IDR&GPIO_Pin)!=(uint32_t)GPIO_PIN_RESET){bitstatus=GPIO_PIN_SET;}else{bitstatus=GPIO_PIN_RESET;}returnbitstatus;}每個引腳僅需1bit表示狀態(tài)“0”或“1”1個端口僅占用低16位,高16位保留:IDRy[15:0]94端口輸出數(shù)據(jù)寄存器(GPIOx_ODR)每個引腳僅需1bit表示狀態(tài)“0”或“1”1個端口僅占用低16位,高16位保留:ODRy[15:0]95端口位設(shè)置/復位寄存器(GPIOx_BSRR)voidHAL_GPIO_WritePin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,GPIO_PinStatePinState){/*Checktheparameters*/assert_param(IS_GPIO_PIN(GPIO_Pin));assert_param(IS_GPIO_PIN_ACTION(PinState));if(PinState!=GPIO_PIN_RESET){
GPIOx->BSRR=GPIO_Pin;}else{
GPIOx->BSRR=(uint32_t)GPIO_Pin<<16u;}}每個引腳置位和復位各1bit,低16位為置位,高16位為復位1思考與練習◎如果通過寄存器配置PB4引腳的工作模式,請問如何配置?◎請分析HAL庫函數(shù):HAL_GPIO_ReadPin、HAL_GPIO_WritePin、HAL_GPIO_TogglePin的代碼,對引腳的讀寫分別配置了哪些寄存器?單擊此處添加副標題內(nèi)容謝謝聆聽97《嵌入式技術(shù)與應(yīng)用》
STM32的GPIO模塊-位操作
第3章STM32I/O應(yīng)用實戰(zhàn)《嵌入式技術(shù)入門與實戰(zhàn)(基于STM32)》任務(wù)3STM32I/O的位帶操作實現(xiàn)01STM32存儲器的映射02位帶操作原理03位帶操作的應(yīng)用分析1、STM32存儲器的映射STM32存儲器的映射
4GB地址空間內(nèi)可尋址的存儲空間分為8個主要塊,每個塊為512MB。嵌入式SRAM包括:192KB系統(tǒng)SRAM、4KB備份SRAM系統(tǒng)SRAM:起始地址是0x20000000,分為三塊:映射在地址0x20000000的112KB和16KB塊,供所有AHB主控總線訪問。外設(shè)存儲器映射外設(shè)存儲器映射起始地址是0x40000000通過總線AHB、APB連接外設(shè)2、位帶操作原理GPIO輸出數(shù)據(jù)寄存器寫一位值控制其對應(yīng)的引腳狀態(tài),普通的操作過程中需要3步驟:
1.
讀:讀取包含該位的字節(jié)數(shù)據(jù)
2.修改
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版塔吊租賃與驗收及付款合同3篇
- 二零二五版科技公司股份交易與反壟斷合規(guī)合同3篇
- 二零二五年度共享辦公空間租賃與服務(wù)合同2篇
- 二零二五年度咖啡廳高品質(zhì)咖啡豆供應(yīng)合同3篇
- 2025年度個人向科技公司借款合同2篇
- 二零二五年度商業(yè)街區(qū)臨時攤位租賃及管理服務(wù)合同2篇
- 2025年度“銷售合同”英文翻譯與海外市場品牌推廣合作框架3篇
- 2025年度木地板施工安全與質(zhì)量責任合同4篇
- KTV員工勞動合同范本
- 2025年度煤礦井巷工程應(yīng)急救援預案編制合同
- 2023-2024學年度人教版一年級語文上冊寒假作業(yè)
- 上學期高二期末語文試卷(含答案)
- 對表達方式進行選擇與運用
- GB/T 18488-2024電動汽車用驅(qū)動電機系統(tǒng)
- 投資固定分紅協(xié)議
- 高二物理題庫及答案
- 職業(yè)發(fā)展展示園林
- 七年級下冊英語單詞默寫表直接打印
- 2024版醫(yī)療安全不良事件培訓講稿
- 中學英語教學設(shè)計PPT完整全套教學課件
- 移動商務(wù)內(nèi)容運營(吳洪貴)項目五 運營效果監(jiān)測
評論
0/150
提交評論