日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]1.在對GPIOx_ODR的個別位進(jìn)行編程時,軟件不需要禁止中斷。2.GPIO具有鎖定機(jī)制。主要是在一些關(guān)鍵引腳上為了防止程序跑掉而引起不必要的后果。3.GPIO的庫函數(shù)問題,GPIO_SetBits:置所選端口的一個或者多個位高;GPIO

 

1.在對GPIOx_ODR的個別位進(jìn)行編程時,軟件不需要禁止中斷。

2.GPIO具有鎖定機(jī)制。主要是在一些關(guān)鍵引腳上為了防止程序跑掉而引起不必要的后果。

 

3.GPIO的庫函數(shù)問題,

GPIO_SetBits:置所選端口的一個或者多個位高;

GPIO_ResetBits:相應(yīng)的設(shè)置相應(yīng)的一個或者多個位高;

GPIO_Init:設(shè)置A,B,C,D,E端口的任一個I/O的輸入輸出配置信息,初始化I/O芯片;

GPIO_Pin:設(shè)置帶選擇的引腳號(GPIO_Pin_1:選中1引腳);

GPIO_Speed:設(shè)置所選中的引腳的頻率(GPIO_Speed_10MHz);

GPIO_Mode:設(shè)置所選中的引腳的工作狀態(tài),做以上幾步都必須先定義出引腳;

(STM32F系列的芯片的I/O口有8中工作狀態(tài),這里就不做太多的描述,其中是主要包括4輸入和4輸出,重要的是每一個I/O口只能是這8種狀態(tài)中的一種)

例說以上的GPIO口的基本設(shè)置

例:配置端口A的0、1、6引腳為推免輸出,并且最大的速度為10MHz。

GPIO_InitTypeDef GPIO_InitStructure //定義結(jié)構(gòu)體

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_6;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_pp;

GPIO_Init(GPIOA,&GPIO_InitStructure); //定義設(shè)置的是A口,并且取結(jié)構(gòu)體地址。

 

 

函數(shù)GPIO_SetBits的功能主要是置位所選定的端口的一個位或者多個位為高。

這里使用的是函數(shù)頭,具體函數(shù)

例:設(shè)置外設(shè)端口PA12,PA14,PA15為高電平。

GPIO_SetBits(GPIOA,GPIO_Pin_12|GPIO_Pin_14|GPIO_Pin_15)

 

 

GPIO_ResetBits的功能是設(shè)置所選定的端口的一個或者多個選定的位為低。

例:要清除外設(shè)數(shù)據(jù)端口PD2,PD10,PD15。

GPIO_Resetbits(GPIOD,GPIO_Pin_2|GPIO_Pin_10|GPIO_Pin15);

一般來說,需要將某位設(shè)置為低,也就是要清除該位。

 

GPIO_WriteBit的功能是設(shè)置或者清除所選端口的待定位。

該函數(shù)具有三個輸入?yún)?shù),通過第三個輸入?yún)?shù)來定義是設(shè)置還是清除位。

例:置位外設(shè)數(shù)據(jù)端口PE2為高|清除外設(shè)端口PE1.

GPIO_WriteBit(GPIOE,GPIO_Pin_2,Bit_SET);

GPIO_WriteBit(GPIOE,GPIO_Pin_1,Bit_RESET);

 

GPIO_Write的功能是向指定的外設(shè)端口寫入數(shù)據(jù)。

例:向外設(shè)端口C寫入0X3A4B.

GPIO_Write(GPIOC,0X3A4B);

 

GPIO_ReadOutputDataBit的功能是讀取指定外設(shè)端口的指定以及你叫的輸出值。

例:需要讀取輸出引腳PB14的值。

u8 ReadValue;//表示的是ReadValue是8位的數(shù)據(jù)

ReadValue = GPIO_ReadOutputDataBit(GPIOB.GPIO_Pin_14);

 

GPIO_ReadOutputData的功能是讀取指定外設(shè)端口的輸出值,是16位的數(shù)據(jù)

例:需要讀取外設(shè)端口C的值。

u16 ReadValue;

Readvalue = GPIO_ReadOutputData(GPIOC);

 

GPIO_ReadInputDataBit的功能是讀取指定外設(shè)端口的指定引腳的輸入值每次讀取1位,高電平為1,低電平為0.

例:需要讀取外設(shè)端口PA7引腳的值。

u8 ReadValue;//是一個8位的數(shù)據(jù)

ReadValue = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_7);

//如果是高電平就返回1,低電平就返回0.

 

GPIO_ReadInputData的功能是讀取外設(shè)短褲輸入的值,是一個16為的數(shù)據(jù)。

例:需要讀取外設(shè)D口的I/O的值。

u16 ReadValue;

ReadValue = GPIO_ReadInputData(GPIOD);

 

總結(jié):(1)如果是端口設(shè)置成下拉輸GPIO_ReadInputDataBit,GPIO_ReadOutputDataBit,可以區(qū)分高低電平。

(2)如果是端口設(shè)置成開漏輸出GPIO_ReadInputDataBit,GPIO_ReadOutputDataBit,GPIO_ReadInputDataBit,GPIO_ReadOutputDataBit可以區(qū)分高低電平。

(3)如果是端口設(shè)置成上拉輸入GPIO_ReadOutputDataBit只能讀出高電平。按鍵沒按或者按下讀的都是高電平。

 

 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉