OpenEdv-开源电子网

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

WWDG窗口看门狗初始化函数疑问

[复制链接]

21

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
金钱
238
注册时间
2011-4-12
在线时间
0 小时
发表于 2012-2-16 23:57:47 | 显示全部楼层 |阅读模式
 军哥,在窗口看门狗实验中,WWDG_Set_Counter(u8 cnt)函数,重设置WWDG计数器的值中,此函数为:
//重设置WWDG计数器的值
void WWDG_Set_Counter(u8 cnt)
{
 WWDG->CR|=(cnt&0x7F);//重设置7位计数器
}

为什么在给CR赋值前,没有先清除对应的位为零值,比如改为:

void WWDG_Set_Counter(u8 cnt)
{
WWDG->CR&=0XFF80;    //将对应的t[6:0]先清零
 WWDG->CR|=(cnt&0x7F);//重设置7位计数器
}

求解^_^


自信人生一百年
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-2-17 00:21:43 | 显示全部楼层
回复【楼主位】liuliuzelin:
---------------------------------
你的做法是比较妥当.应该先清零一下.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

21

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
金钱
238
注册时间
2011-4-12
在线时间
0 小时
 楼主| 发表于 2012-2-17 00:23:21 | 显示全部楼层
突然发现这个函数也只应用在中断函数里刷新计数器的值,都是WWDG_CNT,  假如局限在这个的话,就没必要先清零了。是这样理解吗?
自信人生一百年
回复 支持 反对

使用道具 举报

21

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
金钱
238
注册时间
2011-4-12
在线时间
0 小时
 楼主| 发表于 2012-2-17 00:29:08 | 显示全部楼层
军哥,我发现你的程序里都将一些独立操作的语句(比如独立看门狗的喂狗函数,窗口看门狗的这个重设置计数器值的函数)都写成一个函数,哪怕只有一条语句,我感觉这样比较清晰,也能够方便调用,但是这样,在程序执行效率上有差别吗?
自信人生一百年
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-2-17 00:55:05 | 显示全部楼层
你又不是频繁调用....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2012-4-12
在线时间
0 小时
发表于 2012-4-26 17:37:12 | 显示全部楼层
貌似楼主那样写会出错WWDG->CR&=0XFF80;    WWDG->CR|=(cnt&0x7F);,必须两句要合成一句写才能正常运行;
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-25 17:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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