OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4677|回复: 8

上拉输入跟下拉输入为什么对应是0x48跟0x28??

[复制链接]

7

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2017-7-7
在线时间
14 小时
发表于 2021-12-1 17:16:55 | 显示全部楼层 |阅读模式
1金钱


按照中文手册里,1000是上拉或下拉输入



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

369

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4241
金钱
4241
注册时间
2020-7-24
在线时间
714 小时
发表于 2021-12-1 17:25:05 | 显示全部楼层
哪里的0x48跟0x28,截个图看看
回复

使用道具 举报

7

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2017-7-7
在线时间
14 小时
 楼主| 发表于 2021-12-1 17:38:31 | 显示全部楼层
GJJ1999 发表于 2021-12-1 17:25
哪里的0x48跟0x28,截个图看看

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;

#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_AIN) || ((MODE) == GPIO_Mode_IN_FLOATING) || \
                            ((MODE) == GPIO_Mode_IPD) || ((MODE) == GPIO_Mode_IPU) || \
                            ((MODE) == GPIO_Mode_Out_OD) || ((MODE) == GPIO_Mode_Out_PP) || \
                            ((MODE) == GPIO_Mode_AF_OD) || ((MODE) == GPIO_Mode_AF_PP))


这论坛不知道怎么发图片
回复

使用道具 举报

0

主题

465

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1734
金钱
1734
注册时间
2021-4-11
在线时间
320 小时
发表于 2021-12-1 17:48:02 | 显示全部楼层
配置端口的模式时会根据这些值把相应的寄存器配置成相应的值。
回复

使用道具 举报

7

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2017-7-7
在线时间
14 小时
 楼主| 发表于 2021-12-1 19:18:24 | 显示全部楼层
huanan 发表于 2021-12-1 17:48
配置端口的模式时会根据这些值把相应的寄存器配置成相应的值。

这我知道
回复

使用道具 举报

3

主题

117

帖子

0

精华

高级会员

Rank: 4

积分
559
金钱
559
注册时间
2018-10-3
在线时间
107 小时
发表于 2021-12-1 20:04:01 | 显示全部楼层
看手册 找到GPIO寄存器看就行
回复

使用道具 举报

7

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2017-7-7
在线时间
14 小时
 楼主| 发表于 2021-12-1 20:36:20 | 显示全部楼层
stm32中GPIO-mode的值,比如GPIO_Mode_IPD = 0x28, GPIO_Mode_IPU = 0x48,是如何设定的?
GPIO_Mode_IPD = 0x28,——0x00101000;如果只是后四位表示模式,那前面的四位有什么作用?
回复

使用道具 举报

4

主题

55

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
367
金钱
367
注册时间
2020-6-12
在线时间
49 小时
发表于 2021-12-1 20:38:05 | 显示全部楼层
本帖最后由 jefyang 于 2021-12-2 09:28 编辑

不能只看枚举变量的值,具体实现定位到GPIO_Init函数里,里面模式有一条语句,gpio_mode & 0x0F 运算,只取低4位,所以最后得到的值依然是1000。至于为何枚举要0x28,0x48,我觉得应该是考虑到部分模式的值相同,枚举类型定义的变量值又不能相同,故如此定义
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2021-12-2 01:46:44 | 显示全部楼层
a1exchan 发表于 2021-12-1 20:36
stm32中GPIO-mode的值,比如GPIO_Mode_IPD = 0x28, GPIO_Mode_IPU = 0x48,是如何设定的?
GPIO_Mode_IPD ...

跟踪代码,结合寄存器描述,就知道怎么回事了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 21:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表