野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 91|回复: 3

初学者求教 {p->BRR=i;} 怎么理解,网上都只说用法

[复制链接]
发表于 7 天前 | 显示全部楼层 |阅读模式
今天学到串口控制LED灯 有这么一个宏

/* 直接操作寄存器的方法控制IO */
#define        digitalHi(p,i)                 {p->BSRR=i;}        //输出为高电平               
#define     digitalLo(p,i)                 {p->BRR=i;}             //输出低电平
#define     digitalToggle(p,i)         {p->ODR ^=i;}     //输出反转状态



/* 定义控制IO的宏 */
#define LED1_TOGGLE                   digitalToggle(LED1_GPIO_PORT,LED1_GPIO_PIN)
#define LED1_OFF                           digitalHi(LED1_GPIO_PORT,LED1_GPIO_PIN)
#define LED1_ON                           digitalLo(LED1_GPIO_PORT,LED1_GPIO_PIN)


digitalHi(p,i) 其中的p->BSRR  是代表 LED1_GPIO_PORT->BSRR   是吗?  不过这个 i 是什么鬼?给一个PIN它怎么会改变电平?

是利用其二进制值将对应位的  1  赋值给BSRR寄存器吗? 是这样理解吗?
PIN_0 的二进制为 0000 0000 0000 00001
PIN_1 的二进制为 0000 0000 0000 00010
PIN_5 的二进制为 0000 0000 0001 00000
回复

使用道具 举报

发表于 6 天前 | 显示全部楼层
遇到宏,展开即可。你把GPIO-PIN展开看一下就知道了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 6 天前 | 显示全部楼层
bg6agf 发表于 2020-5-22 09:28
遇到宏,展开即可。你把GPIO-PIN展开看一下就知道了。

是的,我已经展开了,就在最后那里有写着,不知道这样理解对不对,是这样理解吗?
回复 支持 反对

使用道具 举报

发表于 6 天前 | 显示全部楼层
疯狂的芒果 发表于 2020-5-22 10:55
是的,我已经展开了,就在最后那里有写着,不知道这样理解对不对,是这样理解吗? ...

可以啊,对寄存器的相应位操作
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|联系站长|手机版|站点地图|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号-2 ) 大学生ARM嵌入式2群

GMT+8, 2020-5-28 16:17 , Processed in 0.226218 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表