STM32 GPIO 配置之ODR, BSRR, BRR 详解

原创 2013年12月02日 00:04:50

Author:DriverMonkey

Mail:bookworepeng@Hotmail.com

QQ:196568501

Phone:13410905075

欢迎交流!


用stm32 的配置GPIO 来控制LED 显示状态,可用ODR,BSRR,BRR 直接来控制引脚输出状态.

ODR寄存器可读可写:既能控制管脚为高电平,也能控制管脚为低电平。管脚对于位写1 gpio 管脚为高电平,写 0 为低电平

BSRR 只写寄存器:既能控制管脚为高电平,也能控制管脚为低电平。对寄存器高 16bit 写1 对应管脚为低电平,对寄存器低16bit写1对应管脚为高电平。写 0 ,无动作

BRR 只写寄存器:只能改变管脚状态为低电平,对寄存器 管脚对于位写 1 相应管脚会为低电平。写 0 无动作。


刚开始或许你跟我一样有以下疑惑:

1.既然ODR 能控制管脚高低电平为什么还需要BSRR和SRR寄存器?

2.既然BSRR能实现BRR的全部功能,为什么还需要SRR寄存器?


对于问题 1 ------ 意法半导体给的答案是---“This way, there is no risk that an IRQ occurs between the read and the modify access.”

    什么意思呢?就就是你用BSRR和BRR去改变管脚状态的时候,没有被中断打断的风险。也就不需要关闭中断。

用ODR操作GPIO的伪代码如下:

    disable_irq()

save_gpio_pin_sate = read_gpio_pin_state();

save_gpio_pin_sate = xxxx;

chang_gpio_pin_state(save_gpio_pin_sate);

enable_irq();

关闭中断明显会延迟或丢失一事件的捕获,所以控制GPIO的状态最好还是用SBRR和BRR

对于问题 2 ------- 个人经验判断意法半导体仅仅是为了程序员操作方便估计做么做的。

                          因为SBRR的 低 16bsts 恰好是set操作,而高16bit是 reset 操作

                         而BRR 低 16bits 是reset 操作


如有不对欢迎指正!

相关文章推荐

STM32 通用输入输出端口GPIO BRR、BSRR、ODR寄存器详解

详细页面:http://alanzjl.sinaapp.com/2015/02/gpio_brr_bsrr_odr/ BRR、BSRR、ODR都是用来控制16位针脚的。 其中,BRR和OD...
  • alanzjl
  • alanzjl
  • 2015年02月16日 23:52
  • 4577

STM32 学习三 GPIO操作

一、基础知识 GPIO寄存器 32位配置寄存器:GPIOx_CRL32位配置寄存器:GPIOx_CRH32位数据寄存器:GPIOx_IDR32位数据寄存器:GPIOx_ODR32位置位/复位寄...
  • xundh
  • xundh
  • 2015年01月09日 22:11
  • 1927

STM32小笔记(一) GPIO口的配置

GPIO口的使用: 1.GPIO和AFIO 全系列支持   GPIO寄存器 (1)两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH); (2)两个32位数据寄存器(GPIOx_I...
  • dddxxxx
  • dddxxxx
  • 2016年06月17日 09:52
  • 2527

STM32入门笔记(3)——GPIO

STM32的每个I/O口都由7个寄存器控制:2个32位端口配置寄存器CRL和CRH;2个32位的数据寄存器IDR和ODR;1个32位的置位复位寄存器BSRR;1个16位的复位寄存器BRR;1个32位的...

stm32f407之GPIO(操作寄存器)

四、GPIO        stm32f407VG这款单片机上共有PA-PE共5×16共80个复用IO口,每个通用I / O端口有4个32位配置寄存器(GPIOx_MODERGPIOx_O...

关于GPIO的BSRR和BRR寄存器

首先, typedef struct {   vu32 CRL;   vu32 CRH;   vu32 IDR;   vu32 ODR;   vu32 BSRR;   vu32 BRR;   vu32...

STM32固件库详解

最近考试较多,教材编写暂停了一下,之前写了很多,只是每一章都感觉不是特别完整,最近把其中的部分内容贴出来一下,欢迎指正。本文内容基于我对固件库的理解,按照便于理解的顺序进行整理介绍,部分参考了固件库的...
  • qsycn
  • qsycn
  • 2012年01月03日 16:38
  • 5206

stm32的pwm学习总结

由于这次参加电脑鼠的芯片是stm32系列的,再加上时间上比较紧,所以在做模块时我们基本上是边学边做。遇到了不少的困难,但还是感觉学到了不少的东西,想拿出来分享分享。。好了,废话少说,转入正题。   ...

STM32 GPIO 配置之ODR, BSRR, BRR 详解

用stm32 的配置GPIO 来控制LED 显示状态,可用ODR,BSRR,BRR 直接来控制引脚输出状态. ODR寄存器可读可写:既能控制管脚为高电平,也能控制管脚为低电平。 管脚对于位...
  • zhjmyx
  • zhjmyx
  • 2017年04月24日 17:18
  • 269

GPIO的寄存器BSRR和BRR

【转】GPIO的寄存器BSRR和BRR 以写数据为例,提供的函数有 GPIO_SetBits  GPIO_ResetBits GPIO_WriteBit  GPIO_Write ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STM32 GPIO 配置之ODR, BSRR, BRR 详解
举报原因:
原因补充:

(最多只允许输入30个字)