在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

  • <dfn id="79stg"></dfn>
    <object id="79stg"><div id="79stg"><label id="79stg"></label></div></object>
    <ruby id="79stg"><dl id="79stg"><noscript id="79stg"></noscript></dl></ruby>

      新聞中心

      EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32學(xué)習(xí)筆記--GPIO的設(shè)置

      STM32學(xué)習(xí)筆記--GPIO的設(shè)置

      作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò) 收藏
      STM32的IO口可以由軟件配置成8種模式:

      1、輸入浮空
      2、輸入上拉
      3、輸入下拉
      4、模擬輸入
      5、開漏輸出
      6、推挽輸出
      7、推挽式復(fù)用功能
      8、開漏復(fù)用功能

      本文引用地址:http://www.biyoush.com/article/201611/322082.htm

      STM32的每個(gè)IO端口都有7個(gè)寄存器來(lái)控制。他們分別是:配置模式的2個(gè)32位的端口配置寄存器CRL和CRH;2個(gè)32位的數(shù)據(jù)寄存器IDR和ODR;1個(gè)32位的置位/復(fù)位寄存器BSRR;一個(gè)16位的復(fù)位寄存器BRR;1個(gè)32位的鎖存寄存器LCKR;這里我們僅介紹常用 的幾個(gè)寄存器,我們常用的IO端口寄存器只有4個(gè):CRL、CRH、IDR、ODR。

      STM32的IO口位配置表如表3.1.1.1所示:


      STM32輸出模式配置如表3.1.1.2所示:


      該寄存器的復(fù)位值為0X4444 4444,從上圖可以看到,復(fù)位值其實(shí)就是配置端口為浮空輸入模式。從上圖還可以得出:STM32的CRL控制著每個(gè)IO端口(A~G)的低8位的模式。每個(gè)IO端口的位占用CRL的4個(gè)位,高兩位為CNF,低兩位為MODE。這里我們可以記住幾個(gè)常用的配置,比如0X0表示模擬輸入模式(ADC用)、0X3表示推挽輸出模式(做輸出口用,50M速率)、0X8表示上/下拉輸入模式(做輸入口用)、0XB表示復(fù)用輸出(使用IO口的第二功能,50M速率)。

      給個(gè)實(shí)例,比如我們要設(shè)置PORTC的11位為上拉輸入,12位為推挽輸出。代碼如下:
      GPIOC->CRH&=0XFFF00FFF;//清掉這2個(gè)位原來(lái)的設(shè)置,同時(shí)也不影響其他位的設(shè)置
      GPIOC->CRH|=0X00038000; //PC11輸入,PC12輸出
      GPIOC->ODR=1<<11;//PC11上拉
      IDR是一個(gè)端口輸入數(shù)據(jù)寄存器,只用了低16位。該寄存器為只讀寄存器,并且只能以16位的形式讀出。該寄存器各位的描述如下圖所示:



      要想知道某個(gè)IO口的狀態(tài),你只要讀這個(gè)寄存器,再看某個(gè)位的狀態(tài)就可以了。使用起來(lái)是比較簡(jiǎn)單的。

      ODR是一個(gè)端口輸出數(shù)據(jù)寄存器,也只用了低16位。該寄存器為可讀寫,從該寄存器讀出來(lái)的數(shù)據(jù)可以用于判斷當(dāng)前IO口的輸出狀態(tài)。而向該寄存器寫數(shù)據(jù),則可以控制某個(gè)IO口的輸出電平。該寄存器的各位描述如下圖所示:



      在此,我們可以總結(jié)一下,對(duì)于學(xué)過(guò)AVR的人來(lái)說(shuō),我們都知道AVR的IO口由3個(gè)寄存器控制:DDR、 PORT、PIN。這里我們可以拿STM32的IO控制寄存器和AVR的來(lái)個(gè)類比:
      1,
      STM32的CRL和CRH就相當(dāng)于AVR的DDR寄存器,用來(lái)控制IO口的方向,只不過(guò)STM32的CRL和CRH功能更強(qiáng)大一點(diǎn)罷了。
      2,
      STM32的ODR就相當(dāng)于AVR的PORT,都是用來(lái)控制IO口的輸出電平或者上下拉電阻的。
      3,
      STM32的IDR就相當(dāng)于AVR的PIN,都是用來(lái)存儲(chǔ)IO口當(dāng)前的輸入狀態(tài)(高低電平)的。
      除此之外,STM32還有BSRR、BRR、LCKR等幾個(gè)寄存器用于控制IO口,這點(diǎn)是AVR所沒(méi)有的。



      評(píng)論


      技術(shù)專區(qū)

      關(guān)閉
      ×

      “芯”朋友见面大会
      珠海|11.14|泰克“芯”朋友见面大会珠海站|泰克带您从测试角度看半导体的整条产业链,快来报名抢位吧>>