OpenEdv-开源电子网

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

求助大家,这两句程序怎么理解呢?

[复制链接]

21

主题

218

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2300
金钱
2300
注册时间
2017-12-11
在线时间
491 小时
发表于 2020-1-19 19:59:45 | 显示全部楼层 |阅读模式
1金钱
后面两句程序怎么理解呢? 我刚学寄存器,看着有点懵,哪位大佬能帮帮忙吗?
111.jpg
1111.jpg

最佳答案

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

可以直接写成0x0800,或者写成0d2048,但是写成1
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
439
金钱
439
注册时间
2018-12-21
在线时间
126 小时
发表于 2020-1-19 19:59:46 | 显示全部楼层

可以直接写成0x0800,或者写成0d2048,但是写成1<<11更容易理解在熟悉的时候,立马就知道到将第11位置一。
这个规律,你自己打开Windows计算器设置为程序员模式,试试就知道了。
Capture.PNG
回复

使用道具 举报

21

主题

218

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2300
金钱
2300
注册时间
2017-12-11
在线时间
491 小时
 楼主| 发表于 2020-1-19 20:38:26 | 显示全部楼层
部分重映像不应该是1<<10吗?
回复

使用道具 举报

10

主题

161

帖子

0

精华

高级会员

Rank: 4

积分
750
金钱
750
注册时间
2019-9-5
在线时间
134 小时
发表于 2020-1-20 08:41:10 | 显示全部楼层
一个F代表4位,3ff就是00后面10个1,也就是11::10就是00..最后一句是第11位置1,将11:10变成10
回复

使用道具 举报

5

主题

53

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1051
金钱
1051
注册时间
2019-2-14
在线时间
189 小时
发表于 2020-1-20 08:42:58 | 显示全部楼层
先清空配置,再赋值,常规操作。
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6660
金钱
6660
注册时间
2015-8-25
在线时间
1034 小时
发表于 2020-1-20 08:51:07 | 显示全部楼层
&=0XFFFFF3FF;
&逻辑:同1相与为本身,同0相与为0,所以与逻辑一般用来清零,上面这句话,F就是全是1,与逻辑结果就是本身保持不变,3的二进制就是0011,与逻辑的结果就是清零其中的两位,而3的位置在第bit11-bit8,那么清零的就是bit11和bit10,bit11和bit10到底是控制啥有具体的寄存器描述可查
|=1<<11;
| 逻辑:同1相或为1,同0相或为本身,所以或逻辑一般用来置1,上面这句话,先是将1左移11位,拿结果就是bit11是1,其他是0,整句话的或结果就是将bit11置1;
以上两句话的结果:先清零bit11和bit10,再将bit11置1,那就是你截图中的10:部分重映射
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

21

主题

218

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2300
金钱
2300
注册时间
2017-12-11
在线时间
491 小时
 楼主| 发表于 2020-1-20 09:21:43 | 显示全部楼层
没有人吗?
回复

使用道具 举报

21

主题

218

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2300
金钱
2300
注册时间
2017-12-11
在线时间
491 小时
 楼主| 发表于 2020-1-20 09:50:31 | 显示全部楼层
下面那个1<<11 为什么写成这样?
回复

使用道具 举报

2

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2019-12-26
在线时间
16 小时
发表于 2020-1-20 10:17:41 | 显示全部楼层
第二句是把AFIO->MAPR的第10、11位清零,与操作任何数和0与为0
第三句是把AFIO->MAPR的第11位置1,任何数与1或为1,所以是置数
回复

使用道具 举报

8

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
439
金钱
439
注册时间
2018-12-21
在线时间
126 小时
发表于 2020-1-20 10:19:49 | 显示全部楼层
高级语言更注重可读性,有时候你觉得麻烦吧,等到你读别人程序就知道了,那些该交待清楚的东西交代了读起来就是不一样。写的麻烦但是也不会降低效率的,编译器不会直接生成你为了显化问题而写出的解释性步骤的指令,而是计算出最终结果再产生相应的指令。
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2020-1-20 10:26:50 | 显示全部楼层
这样岂不是更直观告诉你配置的是哪一位
回复

使用道具 举报

21

主题

218

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2300
金钱
2300
注册时间
2017-12-11
在线时间
491 小时
 楼主| 发表于 2020-1-20 12:52:46 | 显示全部楼层
0x00000000 发表于 2020-1-20 10:13
可以直接写成0x0800,或者写成0d2048,但是写成1

感谢指导!
回复

使用道具 举报

21

主题

218

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2300
金钱
2300
注册时间
2017-12-11
在线时间
491 小时
 楼主| 发表于 2020-1-20 12:53:08 | 显示全部楼层
henuSTM 发表于 2020-1-20 10:17
第二句是把AFIO->MAPR的第10、11位清零,与操作任何数和0与为0
第三句是把AFIO->MAPR的第11位置1,任何数 ...

感谢感谢!
回复

使用道具 举报

21

主题

218

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2300
金钱
2300
注册时间
2017-12-11
在线时间
491 小时
 楼主| 发表于 2020-1-20 12:53:31 | 显示全部楼层
0x00000000 发表于 2020-1-20 10:19
高级语言更注重可读性,有时候你觉得麻烦吧,等到你读别人程序就知道了,那些该交待清楚的东西交代了读起来 ...

受用了!
回复

使用道具 举报

21

主题

218

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2300
金钱
2300
注册时间
2017-12-11
在线时间
491 小时
 楼主| 发表于 2020-1-20 12:54:04 | 显示全部楼层
三叶草 发表于 2020-1-20 10:26
这样岂不是更直观告诉你配置的是哪一位

对,很直观
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-19 22:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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