專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> STM32 >> 瀏覽文章

關(guān)于STM32的GPIO

作者:槍炮紫苑   來(lái)源:槍炮紫苑   點(diǎn)擊數(shù):  更新時(shí)間:2014年07月09日   【字體:
初學(xué)STM32接觸的是點(diǎn)燈程序,其實(shí)就是對(duì)ARM的GPIO口的熟悉和掌握。
在使用GPIO口前需要對(duì)對(duì)應(yīng)的端口進(jìn)行初始化,初始化的配置程序如下所示。
void GPIO_Configuration(void)
{
  GPIO_InitTypeDef GPIO_InitStructure; //GPIO_InitStruct:指向結(jié)構(gòu)GPIO_InitTypeDef的指針,包含了外設(shè)GPIO的配置信息
 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; //設(shè)置端口
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; //配置為開漏輸出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //IO口最高輸出速度為2MHZ

  GPIO_Init(GPIOB, &GPIO_InitStructure);   //根據(jù)GPIO_InitStructure中指定的參數(shù)初始化外設(shè)GPIOx寄存器
}
以上代碼可以參見STM32的固件庫(kù)手冊(cè),里面有對(duì)每個(gè)函數(shù)的詳細(xì)說(shuō)明。
下面是對(duì)IO口的設(shè)置,這里設(shè)置IO口為低時(shí)LED燈點(diǎn)亮。
方法一:
GPIOB->BSRR = 0x2000D000;
這里我看了很久都沒(méi)有弄明白,哎,這個(gè)值對(duì)初學(xué)者來(lái)說(shuō)很難弄明白。后來(lái)查閱STM32103XX的參考手冊(cè)才發(fā)現(xiàn)有BSRR的寄存器配置詳細(xì)解說(shuō)?赐旰蟛呕腥淮笪。
前16位為BRy,置1時(shí)清楚對(duì)應(yīng)ODRy;后16位為BSy,置1時(shí)設(shè)置對(duì)應(yīng)ODRy;兩者同時(shí)設(shè)置時(shí),以BSy有效。



方法二:
GPIO_SetBits(GPIOB, GPIO_Pin_12 | GPIO_Pin_14 | GPIO_Pin_15);
GPIO_ResetBits(GPIOB, GPIO_Pin_13);
這個(gè)功能和方法一等效,但是易讀,比較推薦這種寫法,雖然多了一行語(yǔ)句。

方法三:
GPIO_WriteBit(GPIOB, GPIO_Pin_15, Bit_SET);
此方法適用于對(duì)單個(gè)端口的操作,比較方便。
Bit_SET設(shè)置數(shù)據(jù)端口位,Bit_RESET,清楚數(shù)據(jù)端口位。
OK,暫時(shí)就這么多。

相關(guān)文章