OpenEdv-开源电子网

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

寄存器操作GPIOA->CRH&=0XFFFFFFF0; GPIOA->CRH|=0X00000003这两句,为什么就推挽输出了?

[复制链接]

19

主题

45

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
403
金钱
403
注册时间
2016-4-24
在线时间
69 小时
发表于 2016-5-13 09:26:36 | 显示全部楼层 |阅读模式
1金钱
我以前是用库函数的,现在想研究底层寄存器,这个我知道不难,但是百度不好搜索类似答案.求助坛友们.

最佳答案

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

你首先应该查查知道,CRH这个寄存器是端口配置高寄存器,控制8-15这些io口的配置,之所以用&=是为了不影响其他位的状态,只把A8配置为0000,然后|=仍旧不改变其他位的状态,A8配置为0011。00表示通用推挽输出,11表示输出模式,最大速度50MHz。这些东西都是通过看寄存器手册得到的。这样的话,编程速度和维护速度会大幅度降低,所以开发了库函数方式。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2016-4-19
在线时间
8 小时
发表于 2016-5-13 09:26:37 | 显示全部楼层
本帖最后由 萧晨 于 2016-5-13 09:45 编辑

你首先应该查查知道,CRH这个寄存器是端口配置高寄存器,控制8-15这些io口的配置,之所以用&=是为了不影响其他位的状态,只把A8配置为0000,然后|=仍旧不改变其他位的状态,A8配置为0011。00表示通用推挽输出,11表示输出模式,最大速度50MHz。这些东西都是通过看寄存器手册得到的。这样的话,编程速度和维护速度会大幅度降低,所以开发了库函数方式。
回复

使用道具 举报

19

主题

45

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
403
金钱
403
注册时间
2016-4-24
在线时间
69 小时
 楼主| 发表于 2016-5-13 09:57:24 | 显示全部楼层
OK,刚才仔细看了看寄存器手册就明白了,谢谢你啊兄弟
回复

使用道具 举报

1

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2018-2-3
在线时间
16 小时
发表于 2018-6-30 22:25:03 | 显示全部楼层
好贴,同样解决了我的疑惑
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4521
金钱
4521
注册时间
2018-5-11
在线时间
946 小时
发表于 2018-6-30 23:25:46 | 显示全部楼层
查手册,看寄存器的作用、各BIT位的定义。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 22:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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