Stm32F10x之窗口看门狗(WWDG) 的窗口值问题

Alpha00 2013-07-12 11:40:57
直接操作寄存器

//RCC->APB1ENR.WWDGEN
RCC->APB1ENR &= ~(((u32)0x01)<<11);
RCC->APB1ENR |= ((u32)0x01)<<11;

//Early wakeup interrupt:enable
WWDG->CFR &= 0xFFFFFDFF;
WWDG->CFR |= (u32)0x200;

//Timer base:PCLK1/4096/8
WWDG->CFR &= 0xFFFFFE7F;
WWDG->CFR |= (u32)0x0180;

//window value:0x50
// WWDG->CFR &= (u32)0xFFFFFF80; /////问题在这句代码
WWDG->CFR |= 0x50;

WWDGClrItFlag();

WWDGUpdateCNT();

//WWDG Enable
WWDG->CR &= 0xFFFFFF7F;
WWDG->CR |= (u32)0x80;


在给窗口值赋新值之前(其复位值为0x7F),如果使用想先清除(通过&0x0方式)再赋值的方式,则程序会跑飞。如果直接赋值(通过|1)的方式,程序正常向下运行。但此时的窗口值是在复位值0x7F的基础上按位与得到的,并不是真正想要的值。 求解?????
...全文
111 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
lbing7 2013-07-16
  • 打赏
  • 举报
回复
表示在STM32上没直接操作过寄存器,全都用库实现的路过...

27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧