请教STM32知识点:GPIOA->BSRR 与GPIOA->BRR两个管脚寄存器

GPIOA->BSRR=cmd&0XFF;//GPIOA[7:0]为输出数据端口,1:设置对应的ODRy为1GPIOA->BRR=(~cmd)&0XFF;//GPIOA[... GPIOA->BSRR = cmd & 0XFF; //GPIOA[7:0]为输出数据端口,1:设置对应的ODRy为1
GPIOA->BRR = (~cmd) & 0XFF; //GPIOA[7:0]为输出数据端口;1:设置对应的ODRy为0
是不是功能一样的语句?急急急
展开
 我来答
百度网友9d80b6bac
2014-09-12 · TA获得超过1031个赞
知道小有建树答主
回答量:692
采纳率:66%
帮助的人:354万
展开全部
BSRR写1的位置1,BRR写1的位置0;这两个命令是不同的,一个用于清零,一个用于置1;这两句话等同与GPIOA->ODR = GPIOA->(ODR&0xff00)|cmd;
追问
GPIOA->ODR = (GPIOA->ODR & 0xff00)| cmd;

这条语句是将GPIOA口的低8位清零后,再将cmd写入低8位?(高8位保持不变)
追答
........,那你自己想你那两句话是不是就是为了把低八位写成cmd,我也不知道你在哪看的程序,根本就是在炫耀技能,其实一点用都没。cmd & 0XFF,(~cmd) & 0XFF,都是瞎子戴眼镜多余的圈圈。

,
woshiyewending
2014-09-10
知道答主
回答量:19
采纳率:0%
帮助的人:12.5万
展开全部
是针对同一个功能但是状态不同,BSRR是置GPIOA为高对应于一个模式,BRR清除这个模式
更多追问追答
追问
能不能只写一个呢?写代码时,两个必须同时出现吗?顺序也不变吗?
BSRR居然设置了一个模式,BRR为什么还要清除该模式呢?
追答
可能是我记错了,BSRR应该是先清除这个模式,然后置位,一般都是这么写,你直接置为用第二句也行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式