<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> STM32 >> 瀏覽文章

        STM32 同一I/O口下 多個口同時操作

        作者:未知   來源:互聯網   點擊數:  更新時間:2014年06月22日   【字體:

        主要通過 GPIOx_BSRR 和GPIOx_BSR 兩個寄存器來實現


        規則:
        一、置GPIOD->BSRR低16位的某位為'1',則對應的I/O端口置'1';而置GPIOD->BSRR低16位的某位為'0',則對應的I/O端口不變。
        二、置GPIOD->BSRR高16位的某位為'1',則對應的I/O端口置'0';而置GPIOD->BSRR高16位的某位為'0',則對應的I/O端口不變。
        三、置GPIOD->BRR低16位的某位為'1',則對應的I/O端口置'0';而置GPIOD->BRR低16位的某位為'0',則對應的I/O端口不變。

        例如:
        1)要設置D0、D5、D10、D11為高,而保持其它I/O口不變,只需一行語句:
          GPIOD->BSRR = 0x0C21;// 使用規則一

        2)要設置D1、D3、D14、D15為低,而保持其它I/O口不變,只需一行語句:
          GPIOD->BRR = 0xC00A;// 使用規則三

        3)要同時設置D0、D5、D10、D11為高,設置D1、D3、D14、D15為低,而保持其它I/O口不變,也只需一行語句:
          GPIOD->BSRR = 0xC00A0C21;// 使用規則一和規則二

         

        如果使用了PD口的PD8-PD15高8位,假設data為8位要寫入的數據:

        GPIO_SetBits(GPIOD, data & 0xff00);
        GPIO_ResetBits(GPIOD, (~data & 0xff00));

        也可以直接操作這兩個寄存器:
        GPIOD->BSRR = data & 0xff00;
        GPIOD->BRR = ~data & 0xff00;

         

        如果使用了PD口的PD0-PD7低8位,假設data為8位要寫入的數據:

        GPIO_SetBits(GPIOD, data & 0x00ff);
        GPIO_ResetBits(GPIOD, (~data & 0x00ff));

        也可以直接操作這兩個寄存器:
        GPIOD->BSRR = data & 0x00ff;
        GPIOD->BRR = ~data & 0x00ff;

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮