OpenEdv-开源电子网

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

烈日灼心 发表于 2018-11-2 10:06 玩STM8 玩的多,用的标准库,但是STM32也没什么难的。 想请教你个问题,,只作为一个初学...

[复制链接]

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2018-10-23
在线时间
30 小时
发表于 2018-11-2 21:52:02 | 显示全部楼层 |阅读模式
4金钱

bb7e5856d82f92888bb04c232ff637c.png
c159a242a0e1a8c27226617cc5994ae.png

最佳答案

查看完整内容[请看2#楼]

端口是以组为单位的,以你说的GPIOA来说, 有若干的寄存器来对引脚进行定义和控制操作,这些寄存器有唯一的物理地址(通过基址和结构体指针就可以轻松访问到每个寄存器) 至于具体的引脚,则是通过这些寄存器来配置、控制、读写的。 所谓的#define GPIO_Pin_0 ((uint16_t)0x0001) 只是为了在代码中做“与”“或”逻辑运算时,在16位或32位寄存器值中方便且易懂地定位到相应的引脚BIT位
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4524
金钱
4524
注册时间
2018-5-11
在线时间
947 小时
发表于 2018-11-2 21:52:03 | 显示全部楼层
端口是以组为单位的,以你说的GPIOA来说,
有若干的寄存器来对引脚进行定义和控制操作,这些寄存器有唯一的物理地址(通过基址和结构体指针就可以轻松访问到每个寄存器)
至于具体的引脚,则是通过这些寄存器来配置、控制、读写的。
所谓的#define GPIO_Pin_0                 ((uint16_t)0x0001)
只是为了在代码中做“与”“或”逻辑运算时,在16位或32位寄存器值中方便且易懂地定位到相应的引脚BIT位
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2018-10-23
在线时间
30 小时
 楼主| 发表于 2018-11-2 21:55:13 | 显示全部楼层
我想问下使STM32 的端口引脚他是怎么映射的?比如#define GPIO_Pin_0                 ((uint16_t)0x0001)  /*!< Pin 0 selected */
我只看到她映射到寄存器了,并没有看到他对端口进行定义映射啊???它只定义了GPIOA,,但是我想问下他A组的引脚怎么定义的啊?????
回复

使用道具 举报

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2018-10-23
在线时间
30 小时
 楼主| 发表于 2018-11-2 22:04:55 | 显示全部楼层
是不是每个引脚下边都有寄存器组啊?????
回复

使用道具 举报

19

主题

169

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
409
金钱
409
注册时间
2018-4-21
在线时间
107 小时
发表于 2018-11-2 22:21:09 | 显示全部楼层
你截图里的GPIOA的地址映射关系应该搞懂了吧,然后你去看看GPIO_Init这个函数,他没组GPIO口对应都有一组寄存器组,具体对应GPIOx->CRL!!你可以看看函数理解下
回复

使用道具 举报

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2018-10-23
在线时间
30 小时
 楼主| 发表于 2018-11-2 22:32:14 | 显示全部楼层
学习STM32F103 发表于 2018-11-2 22:21
你截图里的GPIOA的地址映射关系应该搞懂了吧,然后你去看看GPIO_Init这个函数,他没组GPIO口对应都有一组寄 ...

哦哦,貌似知道了,他在寄存器里边已将包含对引[img][/img]脚的设置了
回复

使用道具 举报

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2018-10-23
在线时间
30 小时
 楼主| 发表于 2018-11-2 22:34:01 | 显示全部楼层
辉99 发表于 2018-11-2 22:32
哦哦,貌似知道了,他在寄存器里边已将包含对引[/img]脚的设置了

而且,直接用库给封装好了,所以还得看寄存器设置。。。
回复

使用道具 举报

19

主题

169

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
409
金钱
409
注册时间
2018-4-21
在线时间
107 小时
发表于 2018-11-2 23:00:04 | 显示全部楼层
辉99 发表于 2018-11-2 22:34
而且,直接用库给封装好了,所以还得看寄存器设置。。。

这个编程时可以不用了解这么多,知道用哪个GPIO,怎么配置就可以
回复

使用道具 举报

17

主题

193

帖子

0

精华

高级会员

Rank: 4

积分
708
金钱
708
注册时间
2014-7-2
在线时间
137 小时
发表于 2018-11-3 15:59:38 来自手机 | 显示全部楼层
这个只是管脚的位,你配合端口ABCD就可以用了,都是一样的
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4524
金钱
4524
注册时间
2018-5-11
在线时间
947 小时
发表于 2018-11-3 21:01:41 | 显示全部楼层
另外,提示一下楼主,
如果要对端口引脚进行操作,
STM32有非常方便的位段操作功能,
如PAout(5)=1;    就可以令PA5引脚输出高电平。
具体看我的帖子http://www.openedv.com/forum.php?mod=viewthread&tid=274196
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-5 21:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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