OpenEdv-开源电子网

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

关于窗口看门狗里的WWDG->CFR |= fprer << 7;//PCLK1/4096再除2^fprer。这句看不懂!!求解释……

[复制链接]

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
发表于 2013-2-27 14:46:37 | 显示全部楼层 |阅读模式
 



这个函数里的那个画红色横线的句子的作用,我怎么都想不明白,WWDG->CFR |= fprer << 7;就是把fprer的第0位赋给CRF的第7位(WDGIB0)啊,但对第8位(WDGIB1)没影响呢!而 PCLK1/4096再除以x,中的x的值是由WDGIB0和WDGIB1两位决定的啊!求解释……
WWDG_Init(0x7f, 0x5f, 3);//计数器值为7F,窗口寄存器为5F,分频数为8。这句话当然就不懂了……
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

20

主题

75

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2013-1-21
在线时间
3 小时
发表于 2013-2-27 15:09:51 | 显示全部楼层
fprer是8位的哦,注意到没。
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-2-27 15:35:50 | 显示全部楼层
回复【2楼】jy02326166:
---------------------------------
嗯 是8位的啊?有什么关系吗?
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

20

主题

75

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2013-1-21
在线时间
3 小时
发表于 2013-2-27 16:29:20 | 显示全部楼层
fprer=0=00000000b   
fprer=1=00000001b
fprer=2=00000010b
fprer=3=00000011b
左移7位,第8位怎么没有影响?
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-2-27 16:50:10 | 显示全部楼层
fprer=3=00000011b   左移7位后fprer=10000000b 啊!
由WWDG->CFR |= fprer << 7;可得:WWDG->CFR 的WDGIB0为1,但WDGIB1的值就没受到影响啊!!!
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

47

主题

255

帖子

1

精华

高级会员

Rank: 4

积分
641
金钱
641
注册时间
2012-11-3
在线时间
6 小时
发表于 2013-2-27 16:55:36 | 显示全部楼层
fprer=3=000000011b   左移7位后fprer=110000000b 啊! WDGIB1的值怎么就没受到影响啊!!!
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-2-27 17:07:05 | 显示全部楼层
回复【6楼】liyanchao153:
---------------------------------
fprer=3=000000011b   左移7位后fprer=110000000b  你这有9位数啊…………
void WWDG_Init(u8 tr, u8 wr, u8 fprer)
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-2-27 17:58:14 | 显示全部楼层
明白了啊……
u8 fprer;
WWDG->CFR|=fprer<<7;
和                      
fprer=fprer<<7;
WWDG->CFR|=fprer
不一样啊!

我总是把它们的作用搞成一样的,才导致那样的悲剧事件……

乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

47

主题

255

帖子

1

精华

高级会员

Rank: 4

积分
641
金钱
641
注册时间
2012-11-3
在线时间
6 小时
发表于 2013-2-27 20:51:12 | 显示全部楼层
回复【8楼】可乐虎:
---------------------------------
我又糊涂了,我感觉也是一样的,怎么不一样了啊?
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-2-27 21:10:11 | 显示全部楼层
回复【9楼】liyanchao153:
---------------------------------
不一样啊,你仔细想想啊!fprer这个变量虽然是u8类型,但不影响对它进行操作(左移)啊!所谓左移就是作乘法是吧(结果是使被乘数变大),u8只是对fprer这个变量的大小做了限制,但没说fprer乘以某个数后的结果也要受到u8的限制,是吧?
例如:规定 1<x<10,假设取x=7,那么2x=14,结果是14超过了x所在的范围(1,10),但结果显然是对的。
就是说x的范围(1,10)不会约束2x的结果…… 同理:u8不会约束fprer左移后的结果,故fprer左移后的值(110000000)超过了8位(是9位)是正常的。
明白了吗??
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

47

主题

255

帖子

1

精华

高级会员

Rank: 4

积分
641
金钱
641
注册时间
2012-11-3
在线时间
6 小时
发表于 2013-2-27 21:12:03 | 显示全部楼层
回复【10楼】可乐虎:
---------------------------------
恍然大悟啊!谢了兄弟
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-2-27 21:15:06 | 显示全部楼层
回复【11楼】liyanchao153:
---------------------------------

呵呵,我也糊涂了好长时间啊!共同进步啊……握手……
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

47

主题

255

帖子

1

精华

高级会员

Rank: 4

积分
641
金钱
641
注册时间
2012-11-3
在线时间
6 小时
发表于 2013-2-27 21:15:42 | 显示全部楼层
回复【12楼】可乐虎:
---------------------------------
呵呵!握手、、、
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-2-27 21:23:06 | 显示全部楼层
你对这个函数了解吗?我有些迷惑哦……
MY_NVIC_Init(2, 3, WWDG_IRQChannel, 2);//抢占2,子优先级3,组2
回复【13楼】liyanchao153:
---------------------------------
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-2-27 21:25:18 | 显示全部楼层
void MY_NVIC_Init(u8 NVIC_PreemptionPriority,u8 NVIC_SubPriority,u8 NVIC_Channel,u8 NVIC_Group)
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

47

主题

255

帖子

1

精华

高级会员

Rank: 4

积分
641
金钱
641
注册时间
2012-11-3
在线时间
6 小时
发表于 2013-2-28 08:38:37 | 显示全部楼层
回复【14楼】可乐虎:
---------------------------------
嗯,我用过,怎么了这个函数,你只需按照你的要求配置就可以了,没什么啊
回复 支持 反对

使用道具 举报

86

主题

417

帖子

0

精华

高级会员

Rank: 4

积分
781
金钱
781
注册时间
2013-2-20
在线时间
0 小时
 楼主| 发表于 2013-2-28 16:28:16 | 显示全部楼层
我不知道自己该整个什么要求啊
乐于思考,敢于请教;问人不累,诲人不倦!本人CSDN博客:http://blog.csdn.net/dcx1205 学习嵌入式的同学不要错过啊!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-24 11:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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