<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > STM32F10x芯片GPIO/AFIO端口配置總結

STM32F10x芯片GPIO/AFIO端口配置總結

作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò ) 收藏

1、介紹

STM32F10x芯片GPIO/AFIO配置主要包括以下幾方面知識:在時(shí)鐘控制模塊中配置好相應總線(xiàn)時(shí)鐘,并在總線(xiàn)上使能對應的GPIO口(AFIO口,需要的話(huà))時(shí)鐘后:根據需求配置相應GPIO端口為對應的輸入/輸出模式,按需求更改/讀取端口的數據;端口功能重映射;若用外部中斷,則將中斷線(xiàn)與對應引腳鏈接起來(lái)。

本文引用地址:http://dyxdggzs.com/article/201611/316902.htm

STM32F10x芯片的每個(gè)GPIO端口都有7個(gè)相關(guān)的寄存器:2個(gè)32位配置寄存器(GPIOx_CRL,GPIOx_CRH),兩個(gè)32位數據寄存器(GPIOx_IDR,GPIOx_ODR),一個(gè)32位置位/復位寄存器(GPIOx_BSRR),一個(gè)16位復位寄存器(GPIOx_BRR)和一個(gè)32位鎖定寄存器(GPIOx_LCKR)。每個(gè)I/O端口都可以設置成如下模式:

?輸入浮空:GPIO_Mode_IN_FLOATING

?輸入上拉:GPIO_Mode_IPU

?輸入下拉:GPIO_Mode_IPD

?模擬輸入:GPIO_Mode_AIN

?開(kāi)漏輸出:GPIO_Mode_Out_OD

?推免式輸出:GPIO_Mode_Out_PP

?推免式復用功能:GPIO_Mode_AF_PP

?開(kāi)漏復用功能:GPIO_Mode_AF_OD

2、GPIO寄存器描述

l端口配置低寄存器(GPIOx_CRL)(x=A…E)

l端口配置高寄存器(GPIOx_CRH)(x=A…E)

l端口輸入數據寄存器(GPIOx_IDR)(x=A…E)

l端口輸出數據寄存器(GPIOx_ODR)(x=A…E)

l端口位設置/清除寄存器(GPIOx_BSRR)(x=A…E)

l端口位清除寄存器(GPIOx_BRR)(x=A…E)

l端口配置鎖定寄存器(GPIOx_LCKR)(x=A…E)

2、AFIO寄存器描述

l事件控制寄存器(AFIO_EVCR):控制內部時(shí)間輸出到相應引腳

l復用重映射和調試I/O配置寄存器(AFIO_MAPR)

l外部中斷配置寄存器(AFIO_EXTICRx)(x=1…4):設置端口為中斷線(xiàn)(將端口與中端線(xiàn)連接)

注意:對寄存器AFIO_EVCR、AFIO_MAPR、AFIO_EXTICRX進(jìn)行讀寫(xiě)操作前,應當首先打開(kāi)AFIO的時(shí)鐘。

3、GPIO操作流程

l首先定義GPIO_InitTypeDef類(lèi)型變量;

l然后調用RCC_APB2PeriphClockCmd()函數使能相應的GPIOx端口(所有GPIO端口都掛載到APB2總線(xiàn)上的)時(shí)鐘。注意使能GPIOx端口時(shí)鐘的函數必須在GPIO端口配置函數之前調用,否則GPIO端口會(huì )初始化不成功:;

l調用GPIO_DeInit()初始化要使用的GPIOx端口對應寄存器為默認值;

l調用GPIO_StructInit()函數初始化前面定義的GPIO_InitTypeDef類(lèi)型變量到缺省值;

l按需求初始化GPIO_InitTypeDef類(lèi)型變量,然后調用GPIO_Init()函數實(shí)現初始化;

l然后就可以對相應的端口進(jìn)行操作了:讀/寫(xiě),或配置為復用功能(相應函數查看固件庫)。

注意:

1、系統復位和剛復位后,復用功能未開(kāi)啟,I/O端口被配置成浮空輸入模式(CNFx[1:0]=01b,MODEx[1:0]=00b)。復位后,JTAG引腳被置于輸入上拉或下拉模式:

PA15:JTDI置于上拉模式;

PA14:JTCK置于下拉模式;

PA13:JTMS置于上拉模式;

PB4:JNTRST置于上拉模式;

因此要使用JTAG調試接口作為通用GPIO口使用,則必須屏蔽JTAG復用功能。具體實(shí)現為先調用RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE)使能AFIO時(shí)鐘,然后調用GPIO_PinRemapConfig(GPIO_Remap_SWJ_XXXX,ENABLE)關(guān)閉JTAG的調試復用功能;

2、當把端口配置成復用輸出功能時(shí),則引腳和輸出寄存器斷開(kāi),并和片上外設的輸出信號連接;但如果沒(méi)有激活對應外設,則其輸出將不確定;

3、當使用外部中斷或事件事,首先按照上面幾步配置GPIO端口(輸入),然后調用函數:GPIO_EXTILineConfig()將引腳與對應的中斷線(xiàn)鏈接起來(lái),然后在配置NVIC使能對應的中斷通道,最后編寫(xiě)中斷處理函數。

4、GPIO操作例子

例子1:

u16 Val = 1;

GPIO_InitTypeDef GPIO_InitStructure;

RCC_Configuration();

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);

GPIO_Write(GPIOB,0xffff);

while(1)

{

GPIO_Write(GPIOB, ~Val);

Delay(0x2FFFFF);

if(Val == 0x8000) Val = 1;

else Val<<=1;

}



評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>