zoukankan      html  css  js  c++  java
  • GPIO的寄存器BSRR和BRR

    端口位设置/复位寄存器BSRR: 注:如果同时设置了BSy和BRy的对应位,BSy位起作用。 

     位31:16  BRy: 清除端口x的位y (y = 0…15)  
        这些位只能写入并只能以字(16位)的形式操作。  
        0:对对应的ODRy位不产生影响  
        1:清除对应的ODRy位为0  

    位15:0 BSy: 设置端口x的位y (y = 0…15)  
        这些位只能写入并只能以字(16位)的形式操作。 
        0:对对应的ODRy位不产生影响 
        1:设置对应的ODRy位为1 


    端口位复位寄存器BRR: 
    位31:16  保留。  
    位15:0 BRy: 清除端口x的位y (y = 0…15)  
         这些位只能写入并只能以字(16位)的形式操作。  
         0:对对应的ODRy位不产生影响  
         1:清除对应的ODRy位为0  


    使用方法: 

    1.混合改变 
    需要置1的端口对应的位,在低16位里置1 
    需要置0的端口对应的位,在高16位里置1, 
    不改变的,都置0. 
    然后写寄存器BSRR 

    2.改变引脚为低 
    需要置0的端口对应的位,在低16位里置1, 
    然后写寄存器BRR 

    3.改变引脚为高 
    需要置1的端口对应的位,在低16位里置1 
    高16为全0 
    然后写寄存器BSRR 


    另外就是,STM32的库,GPIO_SetBits,GPIO_ResetBits,可以对多个引脚操作的,就是把需要操作的引脚用“|”(或运算)。 

    最方便的还是自己直接写寄存器(方法1)。

    第一步:第一你要用的IO口 比如说要用A口的高8位定义 GPIOA_USE=0xF0 
     第二步:写BSRR寄存器。                            GPIOA->BSRR=data&&GPIOA_USE 
     第三步:写BRR寄存器。                             GPIOA->BRR=(~data)&&GPIOA_USE 

    假设data为8位要写入的数据: 

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

    也可以直接操作这两个寄存器: 
    GPIOD->BSRR = data & 0xff00; 
    GPIOD->BRR = ~data & 0xff00;

     

    规则: 
    一、置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;// 使用规则一和规则二 

  • 相关阅读:
    2019 荔枝java面试笔试题 (含面试题解析)
    2019 乐游网络java面试笔试题 (含面试题解析)
    2019 吉比特java面试笔试题 (含面试题解析)
    2019 拉卡拉java面试笔试题 (含面试题解析)
    2019 东方财富网java面试笔试题 (含面试题解析)
    2019 途牛旅游网java面试笔试题 (含面试题解析)
    2019 263云通信java面试笔试题 (含面试题解析)
    2019 贝壳找房java面试笔试题 (含面试题解析)
    偶分频、奇分频、任意整数分频
    PWM呼吸灯
  • 原文地址:https://www.cnblogs.com/sky1991/p/2592366.html
Copyright © 2011-2022 走看看