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

          新聞中心

          STM32 GPIO BRR和BSRR寄存器

          作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò) 收藏
          使用BRRBSRR寄存器可以方便地快速地實(shí)現(xiàn)對(duì)端口某些特定位的操作,而不影響其它位的狀態(tài)。

          比如希望快速地對(duì)GPIOE的位7進(jìn)行翻轉(zhuǎn),則可以:

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

          GPIOE->BSRR = 0x80; // 置1
          GPIOE->BRR = 0x80; // 置0

          如果使用常規(guī)讀-改-寫(xiě)的方法:

          GPIOE->ODR = GPIOE->ODR | 0x80; // 置1
          GPIOE->ODR = GPIOE->ODR & 0xFF7F; // 置0

          有人問(wèn)是否BSRR的高16位是多余的,請(qǐng)看下面這個(gè)例子:

          假如你想在一個(gè)操作中對(duì)GPIOE的位7置1,位6置0,則使用BSRR非常方便:
          GPIOE->BSRR = 0x00400080;

          如果沒(méi)有BSRR的高16位,則要分2次操作,結(jié)果造成位7和位6的變化不同步!
          GPIOE->BSRR = 0x80;
          GPIOE->BRR = 0x40;

          規(guī)則:

          一、置GPIOD->BSRR低16位的某位為1,則對(duì)應(yīng)的I/O端口置1;而置GPIOD->BSRR低16位

          的某位為0,則對(duì)應(yīng)的I/O端口不變。

          二、置GPIOD->BSRR高16位的某位為1,則對(duì)應(yīng)的I/O端口置0;而置GPIOD->BSRR高16位

          的某位為0,則對(duì)應(yīng)的I/O端口不變。

          三、置GPIOD->BRR低16位的某位為1,則對(duì)應(yīng)的I/O端口置0;而置GPIOD->BRR低16位的

          某位為0,則對(duì)應(yīng)的I/O端口不變。

          例如:

          1)要設(shè)置D0、D5、D10、D11為高,而保持其它I/O口不變,只需一行語(yǔ)句:

          GPIOD->BSRR = 0x0C21;// 使用規(guī)則一

          2)要設(shè)置D1、D3、D14、D15為低,而保持其它I/O口不變,只需一行語(yǔ)句:

          GPIOD->BRR = 0xC00A;// 使用規(guī)則三

          3)要同時(shí)設(shè)置D0、D5、D10、D11為高,設(shè)置D1、D3、D14、D15為低,而保持其它I/O口不變

          ,也只需一行語(yǔ)句:

          GPIOD->BSRR = 0xC00A0C21;// 使用規(guī)則一和規(guī)則二

          如果中斷中要對(duì)IO口設(shè)置,最好使用BSRR和BRR操作,而不要用ODR .



          關(guān)鍵詞: STM32GPIOBRRBSRR寄存

          評(píng)論


          技術(shù)專(zhuān)區(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); })();