stm32的GPIO端口模式的枚举结构定义的每个模式的高四位是什么意思,是用来干什么的?
答案:1 悬赏:0 手机版
解决时间 2021-11-13 13:16
- 提问者网友:雾里闻花香
- 2021-11-13 05:59
stm32的GPIO端口模式的枚举结构定义的每个模式的高四位是什么意思,是用来干什么的?
最佳答案
- 五星知识达人网友:白昼之月
- 2021-11-13 06:44
在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,可以通过此判断你的模式是输入还是输出。
if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD)
{
GPIOx->BRR = (((u32)0x01) << pinpos);
}
else
{
if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU)
{
GPIOx->BSRR = (((u32)0x01) << pinpos);
}
}
他会判断你配置的模式是什么,然后根据pinpos来设置对应的端口
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,可以通过此判断你的模式是输入还是输出。
if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD)
{
GPIOx->BRR = (((u32)0x01) << pinpos);
}
else
{
if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU)
{
GPIOx->BSRR = (((u32)0x01) << pinpos);
}
}
他会判断你配置的模式是什么,然后根据pinpos来设置对应的端口
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯