栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

STC15W系列单片机休眠唤醒与看门狗配置问题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

STC15W系列单片机休眠唤醒与看门狗配置问题

STC15W系列单片机休眠唤醒与看门狗配置问题
  • 关于STC单片机之定时器唤醒与看门狗寄存器配置
  • 硬件看门狗
    • 硬件看门狗配置
  • 主程序参考配置

本次是记录自己在STC单片机低功耗模式下使用过程中遇到的一些问题。本来想这是一件简单的事情,三下五除二就能解决问题了。在实际配置中却遇到了一些波折,在这里做一个学习记录,方便以后自己查看。

关于STC单片机之定时器唤醒与看门狗寄存器配置

最开始的时候,我先完计数周期配置,最后再使能定时器唤醒。结果不论怎么配置,总时间都不变。经过多次测试摸索,最后确定WKTCH寄存器要一次完成写入配置。

正确配置,如:
void sy_sys_wakeup(void){
	unsigned short timer = 0;
//	 timer = 16384;
	   timer = 8192;//唤醒时间
	 if(timer>=0x7fff)timer = 0x7fff;
 	 timer |= 0x8000;
     WKTCL = timer%256; 
     WKTCH = timer/256;    
}
错误配置,如:
void sy_sys_wakeup(void){
	unsigned short timer = 0;
//	 timer = 16384;
	 timer = 8192;//唤醒时间
	 if(timer>=0x7fff)timer = 0x7fff;
     WKTCL = timer%256; 
     WKTCH = timer/256;    
     WKTCH  |=0x80;
}

硬件看门狗

STC15单片机看门狗配置起来很简单,只需要配置一个寄存器就好了。当然了,现实中,如果没有遇到一点点曲折,我也不会写这篇文章了。
故事事这样的:最开始的时候,我已经配置好休眠唤醒了,单片机利用唤醒寄存器,进行周期唤醒。即,单片机配置为: PCON |= 0x02。最后实测发现,我配置看门狗复位为2秒,结果经过了1分钟也没有出现复位重启问题。开始怀疑自己配置问题,查阅芯片手册,研究来研究去,也没有发现自己配置上的错误。后面经过了大半天时间,猜想到会不会是休眠计数器不走引起的呢?
后面一试将PCON |= 0x02注释掉,结果就正常复位了。验证了自己猜想。

硬件看门狗配置

这个配置起来很简单,具体参考STC用户手册即可。如下,是自己配置的一个参考:

void sy_sys_dog_init(void){
	 WDT_CONTR = 0x27;  //配置为最长周期
}
void sy_dog_load(void)
{
	 WDT_CONTR |= 0x10;      //启动看门狗
	
}
主程序参考配置
void mian(void){
................
sy_sys_wakeup(); //定时唤醒
sy_sys_dog_init();
while(1){
 
        //  usaer handle
		sy_dog_load();
		PCON |= 0x02;         
		_nop_();           
		_nop_();
		_nop_();
}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/925542.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号