stm32 IO方向设置

2024-11-24 13:51:14
推荐回答(3个)
回答1:

PG11属于IO口的高8位,需配置GPIOG->CRH寄存器以达到目的。

PG7属于IO口的低8位,需配置GPIOG->CRL寄存器以达到目的。配置如下,借用你的原文:

GPIOG->CRL&=0X0FFFFFFF;GPIOG->CRL|=8<<28; //把PG7定义为输入模式,即
  GPIOG->CRL=0X8FFFFFFF;则寄存器位配置CNF1、CNF0、MODE1、MODE0分别是1000.
同理GPIOG->CRH&=0X0FFFFFFF;GPIOG->CRH|=3<<28;//是把PG7定义为推挽输出模式,即
   GPIOG->CRH&=0X3FFFFFFF;则寄存器位配置CNF1、CNF0、MODE1、MODE0分别是0011.

下面再稍微总结一下,GPIOx->CRH和GPIOx->CRL分别控制配置Px8-Px15和Px0-Px7这16个io口的模式,你可以从下面的图来理解:

回答2:

PG11属于IO口的高8位,需配置GPIOG->CRH寄存器以达到目的。
PG7属于IO口的低8位,需配置GPIOG->CRL寄存器以达到目的。
PG7表示即STM32的GPIO口:0-7的第七个GPIO口,则0X0FFFFFFF中的0应该放在(从左往右表示7-0)最左边。而GPIOG->CRL|=8<<28;其中8表示GPIO输入(3表示GPIO输出),28表示0的左边有7个F,即4*7=28.
综合得到:
GPIOG->CRL&=0X0FFFFFFF;GPIOG->CRL|=8<<28;
GPIOG->CRL&=0X0FFFFFFF;GPIOG->CRL|=3<<28;

回答3:

需要帮你做设计吗