<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > STM32學(xué)習(xí)筆記——控制GPIO輸出點亮LED燈

          STM32學(xué)習(xí)筆記——控制GPIO輸出點亮LED燈

          作者: 時間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
          一.預(yù)備知識

          使用51單片機(jī)控制IO口相對來說要簡單得多,最小系統(tǒng)搭建完畢后直接通過軟件往各IO口寫“1”或者寫“0”即可。但使用STM32控制IO口輸入輸出卻遠(yuǎn)沒有這么容易,經(jīng)過一個下午的查閱文獻(xiàn)及探索后,略微有了頭緒。

          本文引用地址:http://www.ex-cimer.com/article/201611/322904.htm

          個人所使用的STM32F103VBT6有100個引腳,其中有五組GPIO(GPIOA…GPIOE),每組有16個GPIO端口(GPIOx_Pin0…GPIOx_Pin15)共80個,每個GPIO端口都有:

          兩個32位配置寄存器(GPIOx_CRL,GPIOx_CRH);

          兩個32位數(shù)據(jù)寄存器(GPIOx_IDR,GPIOx_ODR);

          一個32位置位/復(fù)位寄存器(GPIOx_BSRR);

          一個16位復(fù)位寄存器(GPIOx_BRR);

          和一個32位鎖定寄存器(GPIOx_LCKR)。

          其中各個寄存器的作用:

          名稱

          寄存器

          意義

          端口配置寄存器

          GPIOx_CRL

          GPIOx_CRH

          配置GPIO工作模式

          端口輸入數(shù)據(jù)寄存器

          GPIOx_IDR

          讀取GPIO輸入狀態(tài)

          端口輸出數(shù)據(jù)寄存器

          GPIOx_ODR

          控制GPIO輸出狀態(tài)

          端口位設(shè)置/復(fù)位寄存器

          GPIOx_BSRR

          用于位操作GPIO的輸出狀態(tài)的:設(shè)置端口為0或1

          端口位復(fù)位寄存器

          GPIOx_BRR

          用于位操作GPIO的輸出狀態(tài)的:設(shè)置端口為0

          端口配置鎖定寄存器

          GPIOx_LCKR

          端口鎖定后下次系統(tǒng)復(fù)位之前將不能再更改端口位的配置

          每個I/O端口位可以自由編程,然而I/0端口寄存器必須按32位字被訪問(不允許半字或字節(jié)訪問)。GPIOx_BSRR和GPIOx_BRR寄存器允許對任何GPIO寄存器的讀/更改的獨立訪問;這樣,在讀和更改訪問之間產(chǎn)生IRQ時不會發(fā)生危險。

          輸入數(shù)據(jù)寄存器(GPIOx_IDR)在每個APB2時鐘周期捕捉I/O引腳上的數(shù)據(jù)。因此,要控制GPIOC端口,必須先使能APB2時鐘。此外,STM32初始化外設(shè)第一步就是開啟APB時鐘。(時鐘部分知識暫時知道該如此,往后再學(xué)習(xí)。)

          關(guān)于GPIO各寄存器的描述:

          端口配置低寄存器(GPIOx_CRL) (x=A..E):

          端口配置高寄存器(GPIOx_CRH) (x=A..E):


          上一頁 1 2 3 下一頁

          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();