端口配置寄存器CRH

大家好,以下两句是设置端口的,谁给我解释一下,这两句到底是什么意思?我刚接触STM32,麻烦大家了。。。谢谢。。。#defineDHT11_IO_IN(){GPIOG->... 大家好,以下两句是设置端口的,谁给我解释一下,这两句到底是什么意思?我刚接触STM32,麻烦大家了。。。谢谢。。。
#define DHT11_IO_IN() {GPIOG->CRH&=0XFFFF0FFF;GPIOG->CRH|=8<<12;}
#define DHT11_IO_OUT() {GPIOG->CRH&=0XFFFF0FFF;GPIOG->CRH|=3<<12;}
展开
 我来答
zhang957895723
推荐于2018-04-01
知道答主
回答量:4
采纳率:0%
帮助的人:3万
展开全部
这是用I/O口寄存器定义的方法,其实就是
GPIOG->CRH&=0XFFFF0FFF;GPIOG->CRH|=8<<12; //把PG11定义为输入模式,即
GPIOG->CRH=0XFFFF8FFF;则寄存器位配置CNF1、CNF0、MODE1、MODE0分别是1000.
同理GPIOG->CRH&=0XFFFF0FFF;GPIOG->CRH|=3<<12;//是把PG11定义为推挽输出模式,即
GPIOG->CRH&=0XFFFF3FFF;则寄存器位配置CNF1、CNF0、MODE1、MODE0分别是0011.
binoo7
2019-11-24 · TA获得超过505个赞
知道答主
回答量:167
采纳率:66%
帮助的人:44.4万
展开全部
说一下我自己的理解吧,这个配置gpio的CRH与CRL分别对应的是GPIO16个引脚的高8位于低8位,上面的代码配置的是CRH,也就是高8位的引脚,具体是哪个引脚因看第一个语句,GPIOG->CRH&=0XFFFF0FFF;具体分析一下这个语句,
GPIOG->CRH=GPIOG->CRH&0XFFFF0FFF;也就是用CRH的第4位也就是GPIOG的第11引脚的CRH先清零,其他的位不变,然后再分析下面这个语句
GPIOG->CRH|=8<<12;把这个语句拆开可以这样理解
GPIOG->CRH=GPIOG->CRH|8<<12;也就是说需要GPIO->CRH或上8<<12(这里分析一下这个符号<<与>>该怎么记忆呢,其实可以这样箭头向左就是左移,箭头向右就是右移,这里的8<<12也就是8左移12位,怎么左移呢都用2进制表示一下就清楚了8用二进制的话是1000左移12位是1000 0000 0000 0000,也就是0x8000,对于的就是复用推挽输出模式)
GPIOG->CRH|=8<<12;这句话最终可以看成是这样的GPIOG->CRH|=0x0000 8000;因为前面的模式已经清空了,这里再重新配置
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式