OpenEdv-开源电子网

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

窗口看门狗关于&0X7F的理解

[复制链接]

12

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2019-5-27
在线时间
74 小时
发表于 2019-7-25 14:37:22 | 显示全部楼层 |阅读模式
在学习到窗口看门狗的时候,有些疑惑,但经过自己查找资料,思考,解决了自己的疑惑,分享出来,希望能够帮助大家!!!
                                             u8 WWDG_CNT=0x7f;
                                             WWDG_CNT=tr&WWDG_CNT;
                                             WWDG_Enable(WWDG_CNT);
         第一句话就是一个全局变量,并且赋初值为:0111 1111==0x7f
         第二句话:tr是要往计数器里面写的值,但是这里是按位与0111 1111,意思是无论tr是什么值,哪怕最高位为1,经过与0x7f
按位与后WWDG_CNT的最高位为0,这是必须的,因为递减计数器的值只有后7位有效,而最高位为窗口看门狗激活位。同时
0x7f也是该递减计数器的最大值

         第三句话WWDG_Enable(WWDG_CNT),不仅使能窗口看门狗,而且还给递减计数器赋初值,一举两得。但是这里WWDG_CNT

的值为0111 1111,最高位为0,怎么使能窗口看门狗呢?查看这个函数可以看到这条语句:WWDG->CR = WWDG_CR_WDGA | Counter;

WWDG_CNT即是我们传入函数的值,即Counter==WWDG_CNT,再往下查看,可以看到WWDG_CR_WDGA 的值为#define  WWDG_CR_WDGA   ((uint8_t)0x80)

WWDG_CR_WDGA | Counter;这句话等价于   1000 0000 |0111 1111==1111 1111,所以使能窗口看门狗。


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2019-8-17
在线时间
30 小时
发表于 2019-9-7 11:57:10 | 显示全部楼层
我也发现了这个问题,哈哈感谢解答
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-11 08:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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