stm32的GPIO端口模式的枚举结构定义的每个模式的高四位是什么意思,是用来干什么的?
根据手册配置分为两个部分
上下拉输入模式配置,CRL或CRH相应的4bit配置位应该配置为 1000
ODR配置,配置该输入端口是上拉还是下拉,根据手册应该是上拉,ODR的相应bit为1,下拉ODR的相应bit为0。
但是库文件给出的GPIO模式枚举结构中,将上下来的高位分别定义为0100/0010这是为什么?
还有输出模式也是的高位都定义为1,也不知道是何用意?
深刻求解释????
我来答
分享
举报浏览 1994 次
2个回答
小月之神
推荐于2016-06-23
在GPIO枚举结构中 给出的结构体
typedef enum
{ GPIO_Mode_AIN = 0x0,
GPIO_Mode_IN_FLOATING = 0x04,
GPIO_Mode_IPD = 0x28,
GPIO_Mode_IPU = 0x48,
GPIO_Mode_Out_OD = 0x14,
GPIO_Mode_Out_PP = 0x10,
GPIO_Mode_AF_OD = 0x1C,
GPIO_Mode_AF_PP = 0x18
}GPIOMode_TypeDef;
这里的只是一个标示,并不能代表它对寄存器是怎么设置的,你可以看下面他的库函数里怎么设置的,另外此处枚举还很好的区分输入输出,输出模式的第4位为1,可以通过此判断你的模式是输入还是输出。
/* Reset the corresponding ODR bit */
if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD)
{
GPIOx->BRR = (((u32)0x01) << pinpos);
}
else
{
/* Set the corresponding ODR bit */
if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU)
{
GPIOx->BSRR = (((u32)0x01) << pinpos);
}
}
他会判断你配置的模式是什么,然后根据pinpos来设置对应的端口
11 1
评论
分享
举报收起
天蝎黎明86
2019-02-20