野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13402|回复: 5

为什么不把BSR和BRR分开命名,而是合在一起叫BSRR,是否因为习惯或者其他原因?

[复制链接]
发表于 2016-4-7 15:16:24 | 显示全部楼层 |阅读模式
《零死角玩转STM32—F429.pdf》的第58页是这么写的:
/*PH10 BSRR寄存器的 BR10置1,使引脚输出低电平*/
GPIOH_BSRR |= (1<<16<<10);
/*PH10 BSRR寄存器的 BS10置1,使引脚输出高电平*/
GPIOH_BSRR |= (1<<10);


我只是好奇,为什么不把BSR和BRR分开命名,而是合在一起叫BSRR。是否有特殊原因?
如果把
#define GPIOH_BSRR   *(unsigned int*)(GPIOH_BASE+0x18)
拆分成
#define GPIOH_BSR   *(unsigned int*)(GPIOH_BASE+0x18)
#define GPIOH_BRR   *(unsigned int*)(GPIOH_BASE+0x28)
这两个名称来定义,那么给BR10和BS10分别置1的代码就可以简化为
GPIOH_BSR |= (1<<10);
GPIOH_BRR |= (1<<10);
这样对初学者来说不是更好理解么?
回复

使用道具 举报

发表于 2016-4-7 15:26:46 | 显示全部楼层
算是遗留问题吧,因为在F1里这两个寄存器是合在一起的,写F4代码的时候就习惯这样用了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-7 15:30:59 | 显示全部楼层
flyleaf 发表于 2016-4-7 15:26
算是遗留问题吧,因为在F1里这两个寄存器是合在一起的,写F4代码的时候就习惯这样用了

谢谢回答!
stm32f4xx.h这个文件在所有例程里都相同么?如果我把它修改,分开定义BSR和BRR,对别的例程会有影响么?
回复 支持 反对

使用道具 举报

发表于 2016-4-7 16:08:35 | 显示全部楼层
suj 发表于 2016-4-7 15:30
谢谢回答!
stm32f4xx.h这个文件在所有例程里都相同么?如果我把它修改,分开定义BSR和BRR,对别的例程 ...

所有都相同的,这个是标准库的文件,我们一般都不改,

要自己定义寄存器的话,可以在自己建的头文件定义,最好不要改stm32f4xx
回复 支持 反对

使用道具 举报

发表于 2016-4-7 16:08:38 | 显示全部楼层
suj 发表于 2016-4-7 15:30
谢谢回答!
stm32f4xx.h这个文件在所有例程里都相同么?如果我把它修改,分开定义BSR和BRR,对别的例程 ...

所有都相同的,这个是标准库的文件,我们一般都不改,

要自己定义寄存器的话,可以在自己建的头文件定义,最好不要改stm32f4xx
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-7 16:12:36 | 显示全部楼层
哦,读到第8章时,发现定义库时已经把BSRR拆分成了BSRRH和BSRRL两段,就相当于BSR和BRR了。谢谢!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-11 21:06 , Processed in 0.027533 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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