端口位设置/复位寄存器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;// 使用规则一和规则二

GPIO——端口位设置/清除寄存器BSRR,端口位清除寄存器BRR的更多相关文章

  1. linux下通过iptables只允许指定ip地址访问指定端口的设置方法

    这篇文章主要介绍了linux下通过iptables只允许指定ip地址访问指定端口的设置方法,需要的朋友可以参考下. 首先,清除所有预设置 iptables -F#清除预设表filter中的所有规则链的 ...

  2. CentOS7查询端口占用,清除端口占用的程序,开放端口,打开防火墙

    1.根据端口号得到其占用的进程的详细信息 netstat -tlnp|grep 80tcp        0      0 192.168.33.10:80            0.0.0.0:*  ...

  3. Win10如何设置防火墙开放特定端口 windows10防火墙设置对特定端口开放的方法

    Win10防火墙虽然能够很好地保护我们的系统,但同时也会因限制了某些端口,而给我们的操作带了一些不便.对于既想使用某些端口,又不愿关闭防火墙的用户而言,在Win10系统中设置防火墙开放特定端口就非常必 ...

  4. 水星Mercury路由器端口映射设置图文方法

    在一些内网的环境里,你可能需要把自己的内网的WEB服务器或者其他应用服务器设置成通过互联网可以访问,但是在内网我们是通过路由器共享上网的,外网无法访问到我们的内部服务器.那么这就需要我们通过" ...

  5. PIC16SCM设置不同IO功耗端口状态的影响

    最近做的PIC低功耗微控制器,因此,要设置不同的IO端口状态有关电源的情况测试,在系列万用表的方法来测量电流,供应链管理IO港是在地狱,无头整个系统驱动器.的是PIC16F690单片机. 思路例如以下 ...

  6. CentOS7设置ssh服务以及端口修改

    很多时候我们都是通过SSH 服务 来对 Linux 进行操作,而不是直接来操作Linux机器,包括对Linux服务器的操作,因此,设置SSH服务对于学习Linux来说属于必备技能(尤其是运维人员),关 ...

  7. 常用邮箱POP3 STMP服务器与端口号设置

    一.常用邮箱POP3 STMP服务器与端口号设置: [网易 163.126免费邮箱目前不直接开放smtp.pop3服务.有需要的用户可通过购买随身邮或邮箱伴侣及加入会员中心获得.从2006年11月16 ...

  8. iptables之NAT端口转发设置

    背景:服务器A:103.110.114.8/192.168.1.8,有外网ip,是IDC的一台服务器服务器B:192.168.1.150,没有外网ip,A服务器是它的宿主机,能相互ping通服务器C: ...

  9. IIS7.5和IIS8如何设置FTP的pasv端口范围

    如果不设置端口范围,在防火墙开启的情况下,连接FTP时可能出现列表错误的现象,下面介绍下如何设置FTP的pasv端口范围.. 一.首先打开IIS选择服务器会进入全局设置,再双击FTP防火墙支持 二.设 ...

随机推荐

  1. 关于自增id 你可能还不知道

    导读:在使用MySQL建表时,我们通常会创建一个自增字段(AUTO_INCREMENT),并以此字段作为主键.本篇文章将以问答的形式讲述关于自增id的一切. 注: 本文所讲的都是基于Innodb存储引 ...

  2. Elasticsearch的功能、使用场景以及特点

    1.Elasticsearch的功能,干什么的 2.Elasticsearch的适用场景,能在什么地方发挥作用 3.Elasticsearch的特点,跟其他类似的东西不同的地方在哪里 1.Elasti ...

  3. A - Supercentral Point CodeForces - 165A

    One day Vasya painted a Cartesian coordinate system on a piece of paper and marked some set of point ...

  4. redis的多实例

    redis的多实例功能,可以在一个机器上,启动多个redis服务端 vim redis.conf ,写入以下内容(不要加上注释) port 6379 bind 0.0.0.0 daemonize no ...

  5. ACM_给你100块钱

    给你100块钱 Time Limit: 2000/1000ms (Java/Others) Problem Description: 小光见到昨晚旭能神没拿到一血,又损失了一百块,很同情他.但是为了不 ...

  6. 对char类型数组的英文字母进行冒泡排序

    import java.util.Arrays; import java.util.Scanner; public class Demo02 { public static void main(Str ...

  7. visual assist x 注释配置

    /******************************************************************** created: $DATE$ created: $DAY$ ...

  8. volley的框架安装与使用

    最后一步非常重要   不然会报错: publish = project.has("release")   替换为: publish = project.hasProperty(&q ...

  9. 读《实战 GUI 产品的自动化测试》之:第四步,高阶技巧

    转自:http://www.ibm.com/developerworks/cn/rational/r-cn-guiautotesting4/ 定义测试控件库 本系列前几篇文章对 IBM 框架做了介绍, ...

  10. 深入理解python对象及属性

    类属性和实例属性首先来看看类属性和类实例的属性在python中如何存储,通过__dir__方法来查看对象的属性 >>> class Test(object): pass>> ...