电子发烧友网 > 控制/MCU > 正文

怎样用STM32单片机的GPIO控制LED显示状态

2018年11月01日 15:45 ? 次阅读

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

ODR寄存器可读可写:既能控制管脚为高电平,也能控制管脚为低电平。

管脚对于位写1 gpio 管脚为高电平,写 0 为低电平

BSRR 只写寄存器:[color=Red]既能控制管脚为高电平,也能控制管脚为低电平。

对寄存器高 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 ------- 个人经验判断意法半导体仅仅是为了程序员操作方便估计做么做的。

因为BSRR的 低 16bsts 恰好是set操作,而高16bit是 reset 操作 而BRR 低 16bits 是reset 操作。

简单地说GPIOx_BSRR的高16位称作清除寄存器,而GPIOx_BSRR的低16位称作设置寄存器。

另一个寄存器GPIOx_BRR只有低16位有效,与GPIOx_BSRR的高16位具有相同功能。

举个例子说明如何使用这两个寄存器和所体现的优势。

例如GPIOE的16个IO都被设置成输出,而每次操作仅需要

改变低8位的数据而保持高8位不变,假设新的8位数据在变量Newdata中,

这个要求可以通过操作这两个寄存器实现,STM32的固件库中有两个函数

GPIO_SetBits()和GPIO_ResetBits()使用了这两个寄存器操作端口。

上述要求可以这样实现:

GPIO_SetBits(GPIOE, Newdata & 0xff);

GPIO_ResetBits(GPIOE, (~Newdata & 0xff));

也可以直接操作这两个寄存器:

GPIOE-》BSRR = Newdata & 0xff;

GPIOE-》BRR = ~Newdata & 0xff;

当然还可以一次完成对8位的操作:

GPIOE-》BSRR = (Newdata & 0xff) | ( (~Newdata & 0xff)《《16 );

当然还可以一次完成对16位的操作:

GPIOE-》BSRR = (Newdata & 0xffff) | ( (~Newdata )《《16 );

从最后这个操作可以看出使用BSRR寄存器,可以实现8个端口位的同时修改操作。

有人问是否BSRR的高16位是多余的,请看下面这个例子:

假如你想在一个操作中对GPIOE的位7置‘1’,位6置‘0’,则使用BSRR非常方便:

GPIOE-》BSRR = 0x400080;

如果没有BSRR的高16位,则要分2次操作,结果造成位7和位6的变化不同步!

GPIOE-》BSRR = 0x80;

GPIOE-》BRR = 0x40;

怎样用STM32单片机的GPIO控制LED显示状态

BSRR还有一个特点,就是Set比Reset的级别高,

就是说同一个bit又做Set又做Reset,最后结果是Set

要同步变化只要简单的 GPIOx-》BSRR = 0xFFFF0000 | PATTEN;

即可,不用考虑哪些需要置1,哪些需要清零

从最后这个操作可以看出使用BSRR寄存器,可以实现8个端口位的同时修改操作。

技术专区

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播
收藏 人收藏
分享:

评论

相关推荐

ADuCM360应用体会

发表于 2018-11-01 09:18 ? 12次阅读
ADuCM360应用体会

F7 DISC板子的官方例程里SDRAM部分的代码不见GPIO

发表于 2018-11-01 08:45 ? 62次阅读
F7 DISC板子的官方例程里SDRAM部分的代码不见GPIO

STM32的USB问题

发表于 2018-11-01 08:42 ? 39次阅读
STM32的USB问题

stm32f4串口发数用pc接收的数据不对

发表于 2018-11-01 08:34 ? 71次阅读
stm32f4串口发数用pc接收的数据不对

请帮我看一下供电部分是否正确?stm32f1无法和AD5410进行SPI通信是硬件问题吗?

发表于 2018-10-31 09:50 ? 28次阅读
请帮我看一下供电部分是否正确?stm32f1无法和AD5410进行SPI通信是硬件问题吗?

解答树莓派三种连接电脑的方式

连接树莓派,树莓派的GPIO针(就是SD卡插槽旁边的两排一共26根针)的1号针旁边写了一个P1,其他...

发表于 2018-10-30 17:35 ? 54次阅读
解答树莓派三种连接电脑的方式

基于STM32单片机高级控制定时器TIM1和TI...

STM32的通用定时器是一个通过可编程预分频器(PSC)驱动的16 位自动装载计数器(CNT)构成。...

发表于 2018-10-30 16:10 ? 72次阅读
基于STM32单片机高级控制定时器TIM1和TI...

基于STM32单片机对跑马灯的控制

首先要知道普通的IO就两种功能一个为输入,一个为输出。然后再以输入和输出细分为以哪种模式输出、以哪种...

发表于 2018-10-30 16:02 ? 52次阅读
基于STM32单片机对跑马灯的控制

如何选择STM32的启动代码

●小容量产品是指闪存存储器容量在16K 至32K 字节之间的STM32F101xx、STM32F10...

发表于 2018-10-30 16:00 ? 41次阅读
如何选择STM32的启动代码

基于STM32单片机对流水灯的控制

1.跟着例程自己创建自己的工程时,出现了GPIO库文件里有undefined等等,在我们刚开始学习新...

发表于 2018-10-30 15:42 ? 67次阅读
基于STM32单片机对流水灯的控制

基于STM32单片机秒中断源和闹钟中断源的解决方...

在计算机应用上,2038年问题可能会导致某些软件在2038年无法正常工作。所有使用UNIX时间表示时...

发表于 2018-10-30 14:58 ? 29次阅读
基于STM32单片机秒中断源和闹钟中断源的解决方...

想用汇编对DSP端口操作请问汇编指令中有这样的语句吗?

发表于 2018-10-30 10:12 ? 84次阅读
想用汇编对DSP端口操作请问汇编指令中有这样的语句吗?

AD5315无电压输出

发表于 2018-10-30 10:01 ? 27次阅读
AD5315无电压输出

基于STM32单片机在手持设备中的应用设计

STM32作为现在最流行的单片机,广泛应用与各个领域。现在的手持设备也经常用STM32作为主控芯片。...

发表于 2018-10-29 15:53 ? 91次阅读
基于STM32单片机在手持设备中的应用设计

基于STM32单片机流水灯控制中的GPIO_In...

学习STM32时,首先要熟悉流水灯例程,在这里就来分析流水灯中的GPIO_Init()函数 例...

发表于 2018-10-29 15:42 ? 64次阅读
基于STM32单片机流水灯控制中的GPIO_In...

如何在PSoC 4中以编程方式将GPIO配置为输入/输出?

发表于 2018-10-29 11:42 ? 76次阅读
如何在PSoC 4中以编程方式将GPIO配置为输入/输出?

请问STM32F103C8T6 TIM3 CH1如何才能映射到PB4?

发表于 2018-10-29 08:37 ? 128次阅读
请问STM32F103C8T6 TIM3 CH1如何才能映射到PB4?

请问GPIO的默认电平在哪儿?是参考手册的复位电平吗?

发表于 2018-10-29 08:36 ? 161次阅读
请问GPIO的默认电平在哪儿?是参考手册的复位电平吗?

基于STM32单片机FSMC协议分析

FSMC对于类RAM存储器的读操作过程一般是:先发出片选信号、读写信号和地址信号,然后等待数据建立完...

发表于 2018-10-26 15:42 ? 43次阅读
基于STM32单片机FSMC协议分析

基于ESP8266和STM32单片机的程序代码编...

ESP8266模块在STM32上做Server时,外部对其端口进行收发数据的程序,大部分代码都备注了...

发表于 2018-10-25 15:12 ? 132次阅读
基于ESP8266和STM32单片机的程序代码编...

基于stm32单片机利用通用定时器输出PWM

第一步:开启时钟使能 RCC-》APB1ENR:1 位 //开启定时器3 时钟使能 第二...

发表于 2018-10-25 15:05 ? 100次阅读
基于stm32单片机利用通用定时器输出PWM

ST推出了STLINK-V3下一代STM8和ST...

意法半导体推出了STLINK-V3下一代STM8 和STM32微控制器代码烧写及调试探针,进一步改进...

发表于 2018-10-25 14:48 ? 83次阅读
ST推出了STLINK-V3下一代STM8和ST...

基于STM32单片机低功耗模式机制详细解析

本文主要解读STM32低功耗模式的机制,并不侧重STM32低功耗的程序实现,而且借助STM32固件库...

发表于 2018-10-24 16:16 ? 106次阅读
基于STM32单片机低功耗模式机制详细解析

基于STM32单片机的串口使用解析

STM32串口功能比较强大,但仅仅使用串口来说,是很简单的

发表于 2018-10-24 16:11 ? 95次阅读
基于STM32单片机的串口使用解析

基于STM32F103系列单片机的11个定时器解...

STM32F103系列的单片机一共有11个定时器,其中: 2个高级定时器 4个普通定时器...

发表于 2018-10-23 15:54 ? 62次阅读
基于STM32F103系列单片机的11个定时器解...

基于STM32单片机ADC连续采集和DMA循环转...

描述:用ADC连续采集11路模拟信号,并由DMA传输到内存。ADC配置为扫描并且连续转换模式,ADC...

发表于 2018-10-22 15:28 ? 112次阅读
基于STM32单片机ADC连续采集和DMA循环转...

基于STM32单片机通过使用宏assert_pa...

固件函数库通过检查库函书的输入来实现运行时间错误侦测。通过使用宏assert_param来实现运行时...

发表于 2018-10-22 15:12 ? 62次阅读
基于STM32单片机通过使用宏assert_pa...

基于STM32时钟系统的开发及配置

研究过时钟来源,再来研究时钟的去向,MCU自身要能正常运作,即需要一个时钟,这个时钟既是系统时钟(S...

发表于 2018-10-19 15:55 ? 158次阅读
基于STM32时钟系统的开发及配置

STM32单片机常见的工作异常现象分析及解决方案

工作异常现象:main函数中的系统运行指示灯不闪烁,但是初始化过程中点的一个灯是亮的!说明程序运行一...

发表于 2018-10-19 15:55 ? 105次阅读
STM32单片机常见的工作异常现象分析及解决方案

基于stm32单片机,FLASh先擦后写的函数分...

void FLASH_WriteByte(u32 addr ,u16 flashdata1) ...

发表于 2018-10-18 15:30 ? 122次阅读
基于stm32单片机,FLASh先擦后写的函数分...

基于STM32单片机利用ST库函数设置Systi...

对于STM32系列的微处理器中,执行一条指令只需要几十ns,进行for循环时,要实现N毫秒延时,那么...

发表于 2018-10-18 15:12 ? 90次阅读
基于STM32单片机利用ST库函数设置Systi...

MAX7219和BC7281的LED显示方式与控...

MAX7219 是MAXIM 公司生产的8 位7 段LED串行输入/ 输出共阴显示驱动芯片,目前针对...

发表于 2018-10-18 08:37 ? 528次阅读
MAX7219和BC7281的LED显示方式与控...

基于STM32单片机的功能及特点

STM32是32位的单片机却只要八位单片机的价格,速度也是八位的好几倍。 更重要的是它作为ARM入...

发表于 2018-10-17 16:51 ? 176次阅读
基于STM32单片机的功能及特点

基于LCD单片机输入/输出端口GPIO编程

一、输入/输出端口GPIO编程一—(02)、控制LCD1602显示~~废话不多说了~~直接上图~~然...

发表于 2018-10-17 16:33 ? 73次阅读
基于LCD单片机输入/输出端口GPIO编程

stm32的八种GPIO配置模式

上拉输入就是在输入电路上使用了上拉电阻。这种模式的好处在于我们什么都不输入时,由于内部上拉电阻的原因...

发表于 2018-10-14 08:20 ? 196次阅读
stm32的八种GPIO配置模式

STM32单片机外部晶振配置时钟设置

由于STM32的库默认是外部晶振8M的情况下实现的,所以配置串口波特率的时候也是按8M,包括主频。 ...

发表于 2018-10-12 16:11 ? 181次阅读
STM32单片机外部晶振配置时钟设置

基于通过寄存器和调用库函数的方式,对比测试STM...

通过在线调试的方式,可以看出1条C语句:GPIOA -> BSRR = 1<<3;//PA3输出高电...

发表于 2018-10-12 15:59 ? 97次阅读
基于通过寄存器和调用库函数的方式,对比测试STM...

如何学习STM32?STM32入门学习经验总结

当我们在入门之前(ARM是这样,DSP也一样),总会有很多疑问,会有很多顾虑。我们渴望知道学习STM...

发表于 2018-10-03 19:45 ? 397次阅读
如何学习STM32?STM32入门学习经验总结

使用STM32开发为什么要先开启外设模块?什么时...

1.为什么我们要先开启STM32外设模块时钟; 2.关于STM32的 I/O 复用功能及什么时候开...

发表于 2018-09-24 12:35 ? 300次阅读
使用STM32开发为什么要先开启外设模块?什么时...

关于学习代码固件ADC精度的5点建议

这里是一些通用的固件设计技巧,可用来降低系统或信号噪声,以实现更好的ADC 转换精度.

发表于 2018-09-22 17:42 ? 265次阅读
关于学习代码固件ADC精度的5点建议

STM32单片机特性解析

其基于专为要求高性能、 低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M内核,同时具有一...

发表于 2018-09-10 16:55 ? 402次阅读
STM32单片机特性解析

基于单片机STM32 GPIO 基本简单操作函数...

STM32库函数太多,而且不能识别大小写,经常记错,GPIO简单记忆。---第一步--模式配置voi...

发表于 2018-09-04 11:00 ? 105次阅读
基于单片机STM32 GPIO 基本简单操作函数...

嵌入式GPIO接口基础操作

PORT A的端口配置寄存器GPACON中每一位对应一个引脚(PORT A共23个引脚,bit0~b...

发表于 2018-08-15 14:00 ? 699次阅读
嵌入式GPIO接口基础操作

如何在单一设计中使用多个VL53L0X

近年来,接近传感器越来越备受关注。 例如,接近传感器现今广泛用于智能手机,在手机进行通话时停用触摸屏...

发表于 2018-07-23 09:00 ? 3171次阅读
如何在单一设计中使用多个VL53L0X

无人机设计中STM32库实现的模拟i2c代码

PID计算完成之后,便可以通过STM32自带的定时资源很容易的调制出四路pwm信号。

发表于 2018-07-19 09:36 ? 2841次阅读
无人机设计中STM32库实现的模拟i2c代码

M6708U-T系列工控核心板隔离设计指南

GPIO作为常用个开关量控制信号,广泛应用于工业领域的数据采集和驱动控制。当GPIO配置为DI和DO...

发表于 2018-07-10 09:04 ? 1722次阅读
M6708U-T系列工控核心板隔离设计指南

介绍ATMEL MCU的GPIO配置

Getting Started with Atmel SMART SAM D MCU Configu...

发表于 2018-07-09 00:25 ? 549次阅读
介绍ATMEL MCU的GPIO配置

被zynq的GPIO唬住,告诉你zynq的3种G...

我们先看有哪三种GPIO:MIO、EMIO、AXI_GPIO。其中MIO和EMIO是直接挂在PS上的...

发表于 2018-07-07 08:23 ? 443次阅读
被zynq的GPIO唬住,告诉你zynq的3种G...

单片机的简介51单片机和STM32单片机的区别及...

单片微型计算机简称单片机,简单来说就是集CPU(运算、控制)、RAM(数据存储-内存)、ROM(程序...

发表于 2018-07-06 15:57 ? 1391次阅读
单片机的简介51单片机和STM32单片机的区别及...

GPIO、中断和事件:为ARM初学者导航(6)

第六讲:GPIO、中断和事件--《为ARM初学者导航》

发表于 2018-07-02 00:22 ? 773次阅读
GPIO、中断和事件:为ARM初学者导航(6)

强力巨彩与3位盟友签订合作协议

近日,强力巨彩在驱动IC领域迎来了三位新盟友。强力巨彩分别与眀微电子、日月成科技、士兰--视芯科技正...

发表于 2018-06-29 14:27 ? 419次阅读
强力巨彩与3位盟友签订合作协议

OLED市场即将爆发之际,默克启用上海全新OLE...

目前OLED显示材料主要提供商有默克、出光、三星、杜邦、住友、康宁、UDC等企业,其中默克和出光在O...

发表于 2018-06-23 10:14 ? 514次阅读
OLED市场即将爆发之际,默克启用上海全新OLE...

复用功能输入输出的概念 一文读懂GPIO复用功能

什么是普通功能输入输出?普通功能输入输出类似于:大厅《--》门《----》室外的关系,大厅只需要经过...

发表于 2018-06-19 07:30 ? 833次阅读
复用功能输入输出的概念 一文读懂GPIO复用功能

浅谈占空比与PWM电路和GPIO单双相电路

占空比(Duty Cycle)有如下含义: 在一串理想的脉冲序列中(如方波),正脉冲的持续时间与脉冲...

发表于 2018-06-17 10:40 ? 453次阅读
浅谈占空比与PWM电路和GPIO单双相电路

国星首款Mini LED发布 LED显示行业步入...

6月8日下午,在美国Infocomm视听展和广州国际照明展期间,“‘视’不可挡”国星Mini LED...

发表于 2018-06-14 15:04 ? 1009次阅读
国星首款Mini LED发布 LED显示行业步入...

利亚德成为全球LED显示领域龙头企业的原因是什么...

近日,机会宝组织机构投资者前往利亚德进行了实地调研,普曜资本、民生证券等多家机构参与了本次调研。

发表于 2018-06-07 14:15 ? 904次阅读
利亚德成为全球LED显示领域龙头企业的原因是什么...

如何使用负载开关来管理电源排序

对于一个终端用户来说,打开一个电子设备很简单;只需按下按钮就可以了。然而,需要花费大量的精力来创建一...

发表于 2018-06-01 09:35 ? 1987次阅读
如何使用负载开关来管理电源排序

关于STM32配置中断和GPIO针脚问题

嵌入式软体搭配最新版的STM32CubeMX个人电 脑开发 工具使用, 设计人员 可在绘图介面向导内...

发表于 2018-05-10 02:41 ? 594次阅读
关于STM32配置中断和GPIO针脚问题

嵌入式学习之GPIO接口详解

本文开始介绍了GPIO的概念好优点,其次阐述了GPIO硬件以及何为上拉电阻和下拉电阻,最后阐述了GP...

发表于 2018-04-26 15:17 ? 650次阅读
嵌入式学习之GPIO接口详解

基于STM32F4的 C++封装(完整代码)

一直有一个想法就是用 C++ 去做 STM32 的开发,但是很少有这方面的资料。经过一段时间的思考,...

发表于 2018-04-26 11:03 ? 711次阅读
基于STM32F4的 C++封装(完整代码)

在ASF中控制GPIO的两种方法对比

传统编程中,使用GPIO都是通过寄存器来控制的。使用寄存器代码简洁、效率高,但是可读性差,可移植性也...

发表于 2018-04-25 10:15 ? 320次阅读
在ASF中控制GPIO的两种方法对比

STM32中GPIO的这八种配置种类你知道几种?

推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,...

发表于 2018-04-19 13:36 ? 3082次阅读
STM32中GPIO的这八种配置种类你知道几种?

7个基于STM32单片机的精彩设计实例

STM32是ST公司推出的基于ARM-Cortex-M3内核的32位单片机。

发表于 2018-04-13 17:11 ? 2950次阅读
7个基于STM32单片机的精彩设计实例

led数字标牌已成为公共场所重要信息传播工具

数字标牌(Digital Signage)是一种新的媒体概念,指的是在大型商场、超市、酒店大堂、饭店...

发表于 2018-04-01 11:44 ? 5477次阅读
led数字标牌已成为公共场所重要信息传播工具

苹果致力研究Micro LED显示面板技术,Mi...

美国彭博社日前报道称,苹果公司正在秘密研发下一代的Micro LED显示面板技术,准备未来摆脱对三星...

发表于 2018-04-01 08:53 ? 1258次阅读
苹果致力研究Micro LED显示面板技术,Mi...

stm32单片机休眠模式后无法下载程序怎么办

利用stm32单片机的休眠模式,使单片机间歇的休眠从而实现低功耗的目的。往往会出现进入休眠后无法唤醒...

发表于 2018-03-23 14:40 ? 548次阅读
stm32单片机休眠模式后无法下载程序怎么办

GPIO电路图以及上拉电阻的作用

GPIO口,通用输入输出,这个大家都知道,但是输入,输出的电路是什么样的,其实并不用太关心,只需配置...

发表于 2018-03-04 16:10 ? 2363次阅读
GPIO电路图以及上拉电阻的作用

ATxmage入门应用之时钟模块和GPIO模块的...

任何嵌入式系统要正常运行都必须需要一个稳定的时钟系统。下面简单介绍一下xmega的时钟系统及初始化过...

发表于 2018-02-27 09:12 ? 2186次阅读
ATxmage入门应用之时钟模块和GPIO模块的...

STM32的GPIO输入编程实例之读取按键状态

按键的一端与STM32的GPIO(PH15)相连,另外一端接地,且PH15外接一个1K电流大小的上拉...

发表于 2018-02-10 11:08 ? 3162次阅读
STM32的GPIO输入编程实例之读取按键状态

STM32的GPIO输出编程实例之点亮三色LED

本实验通过STM32的三个GPIO口驱动三色LED的三个通道,将GPIO设置为推挽输出模式,采用灌电...

发表于 2018-02-07 11:14 ? 3754次阅读
STM32的GPIO输出编程实例之点亮三色LED
a计划博彩 a计划博彩,连环夺宝注册送,唯品会注册送60元