stm32的GPIO端口模式的枚举结构定义只是标识不代表直接寄存器的操作值而是间接操作是STM32封装操作的值

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


摘自霸道103手册,侵删

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值