OpenEdv-开源电子网

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

在用寄存器配置IO口时,为什么要这么麻烦

[复制链接]

12

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-9-6
在线时间
30 小时
发表于 2016-9-6 21:54:19 | 显示全部楼层 |阅读模式
先给P9赋11,也就是赋3左移18位取反,与运算;然后再赋01左移做或运算。不能直接赋01左移18位吗?

不太了解寄存器位的原理,MODER &= ~(3<<2*9),不就是MODER = MODER & ~(3<<2*9)嘛,那这里面的 MODER 的值是什么或者说多少?
无标题.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

78

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2016-5-7
在线时间
63 小时
发表于 2016-9-8 10:17:49 | 显示全部楼层
这种操作更规范化,先&复位要配置的位,再|配置的数据置位。特殊功能寄存器都有Reset值,真的都是未知的吗?建议去看看datasheet.。各个功能模块初始化顺序不一样,而且初始化各个功能模块可能会用到同一寄存器的不同位,这个顺序导致寄存器里面有非default的值。
回复 支持 1 反对 0

使用道具 举报

12

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-9-6
在线时间
30 小时
 楼主| 发表于 2016-9-6 22:00:48 | 显示全部楼层
可能楼主没表达清楚,就是说“为什么一开始可以给io端口赋 1 、1,为什么不直接就给端口赋我们所想要的io功能 0、1?
回复 支持 反对

使用道具 举报

14

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2016-5-7
在线时间
34 小时
发表于 2016-9-7 08:28:54 | 显示全部楼层
寄存器是这样的,比如说MODER是一个32位的寄存器,是每两位控制一个状态,2*9就是你要左移18位  移动9个状态位, 把第10个状态位设置为11,
回复 支持 反对

使用道具 举报

1

主题

140

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
290
金钱
290
注册时间
2016-8-15
在线时间
20 小时
发表于 2016-9-7 08:32:31 | 显示全部楼层
开始理解不来
回复 支持 反对

使用道具 举报

2

主题

194

帖子

0

精华

高级会员

Rank: 4

积分
981
金钱
981
注册时间
2015-9-20
在线时间
148 小时
发表于 2016-9-7 09:06:45 | 显示全部楼层
因为寄存器写的代码对于新手或者一般人可读性没有库函数的那么直观,所以在写代码的过程中尽量会通过一些技巧能让读者看出来赋值语句赋的是哪个bit,而不单单是实现功能就好了,毕竟代码是要给别人拿去学习的。寄存器看多了,你后你就慢慢明白了。希望是楼主想要的答案
回复 支持 反对

使用道具 举报

12

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-9-6
在线时间
30 小时
 楼主| 发表于 2016-9-7 20:03:04 | 显示全部楼层
杏帘在望 发表于 2016-9-7 09:06
因为寄存器写的代码对于新手或者一般人可读性没有库函数的那么直观,所以在写代码的过程中尽量会通过一些技 ...

寄存器的各个bit的状态一开始都是未知的,这是我今天想的答案。。。
回复 支持 反对

使用道具 举报

2

主题

194

帖子

0

精华

高级会员

Rank: 4

积分
981
金钱
981
注册时间
2015-9-20
在线时间
148 小时
发表于 2016-9-8 08:45:14 | 显示全部楼层
mupb 发表于 2016-9-7 20:03
寄存器的各个bit的状态一开始都是未知的,这是我今天想的答案。。。

你的重点在这儿啊,数字电路里面的知识吧。。。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-28 12:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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