打印
[热门应用]

KF8L22xx WDT看门狗例程

[复制链接]
889|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jerow|  楼主 | 2019-8-30 16:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
看门狗的配置
/*******************************************************************************
  * [url=home.php?mod=space&uid=288409]@file[/url]    KungFu8_WDT.c
  * [url=home.php?mod=space&uid=187600]@author[/url]  ChipON Application Team
  * [url=home.php?mod=space&uid=895143]@version[/url] V0.0.1
  * @date
  * @brief
  * *
  ******************************************************************************
  */

#include        "KungFu8_WDT.h"

/***********************************************************************************
* 函数名             :WDT_Configuration
* 函数功能        :看门狗配置
* 入口参数        :无
* 返回         :无
* 看门狗配置
**********************************************************************************/
void WDT_Configuration(void)
{
        _CWDT();          // 如果使能OPTR的分频,需要看门狗系统存在下的喂狗

//        PSA=1;                //bit3  =1   0x08 选择分频器给看门狗使用,否则给T0分频使用
//
//        PS2=1;
//        PS1=1;
//        PS0=1;                //bit0~bit2 1到128的倍分频设定

        OPTR=OPTR        &        0xF0 |        0x08        |        WDT_PRE_1DIV1;   // 相关为清零,是否使能给看门狗  使能下分频值 注:可综合系统直接配置最终目标值


        WDTPS=WDT_Prescaler_512; //bit0~bit3 预分频

        SWDTEN=1;  // 软件开启关闭看门  1开启 0关闭,但配置位开启下,软件开关无效的长开启


        // 注:预分频器与分频[未配置时为1]构成看门狗系统的总分频
}
/***********************************************************************************
//
******************************************************************************
*/


使用特权

评论回复
沙发
jerow|  楼主 | 2019-8-30 16:39 | 只看该作者
主函数的配置
/****************************************************************************************
*
* 文件名: main.c
* 项目名:
* 版 本: v1.0
* 日 期:
* 作 者: jianzheng
*
****************************************************************************************/
#include "includes.h"
/***********************************************************************************
* 函数名             :
* 函数功能        :有限周期数的延迟
* 入口参数        :1~255的有效范围
* 返回         :无
***********************************************************************************
*/
void Delay_Wait_CLK_Sample(unsigned char x)
{
#pragma save
#pragma disable_warning 59
#pragma disable_warning 85   // 59 85 屏蔽参数未使用警告,函数未返回警告,作用于嵌汇编函数功能实现

        __asm
         ;// 参数使用R0传递
         ;//MOV R0,#0x05 固定样例
         DECJZ R0
         JMP $-1
        __endasm;

#pragma restore
}
//***********************************************************************************
//主函数
//***********************************************************************************
void main()
{
        WDT_Configuration();
        while(1)
        {// 注:调试时第二次循环指向上一行代码,此为正常现象,是因为嵌汇编的XX指令在KF工具中没有行号,被属于需上一行代码的尾指令。
                _CWDT_();  // 周期性清理,如果代码执行时间超过看门狗的周期,应该在代码中插入清狗指令。

                // 未清狗下的复位实验信号
                ANS53=0;
                TR53=0;
                P5LR3=1;
                P5LR3=0;
                P5LR3=1;
                P5LR3=0;
                P5LR3=1;
        }
}
//中断函数0:0X04入口地址
void int_fun0() __interrupt (0)
{

}


//中断函数1:0x14入口地址
void int_fun1() __interrupt (1)
{

}

使用特权

评论回复
板凳
jerow|  楼主 | 2019-8-30 16:46 | 只看该作者
KF8L22xx WDT看门狗的介绍
为了防止单片机在正常工作时程序跑飞,KF8L22Z20XX 提供一个看门狗定时器。看门狗定时器使用内部低频振荡器作为工作时钟源,因此它无需外接任何器件。单片机正常工作时,当看门狗定时器定时时间达到超时时间后,会使单片机产生复位。在休眠模式看门狗仍能正常运行,超时将唤醒单片机并使其继续执行 IDLE 后面的指令。

使用特权

评论回复
地板
jerow|  楼主 | 2019-8-30 16:48 | 只看该作者
KF8L22xx WDT看门狗寄存器的介绍

使用特权

评论回复
5
jerow|  楼主 | 2019-8-30 16:49 | 只看该作者
KF8L22xx WDT看门狗的开启
看门狗的开启/关闭方式:
 通过配置位 WDTEN,打开/关闭看门狗;
 通过寄存器 PCTL 的 SWDTEN 位,打开/关闭看门狗。
上述两种方式任意一种都可启动看门狗;配置位 WDTEN 一旦使能,看门狗将一直开启,软件配置位 SWDTEN 无效;配置位 WDTEN 未使能时,软件配置位 SWDTEN 允许用户在软件上根据实际需求打开/关闭看门狗。

使用特权

评论回复
6
jerow|  楼主 | 2019-8-30 16:50 | 只看该作者
KF8L22xx 看门狗的清狗方式
为了防止在正常工作时看门狗超时复位,要在固定的时间内对看门狗定时器进行清狗操作。执行 CWDT 指令进行清狗操作或者执行 IDLE 指令进入休眠模式后,将清零整个看门狗定时器(包括看门狗预分频器和后分频器)。当看门狗定时器出现超时时,状态字寄存器PSW 中的TO 位将被清 0。
看门狗定时器使用内部低频振荡器作为工作时钟源,因此它无需外接任何器件,在休眠模式仍能正常运行。WDT 超时事件对单片机的动作:
 在正常运行时,WDT 超时事件将使单片机产生一次复位;
 在休眠模式下,WDT 超时事件将唤醒单片机并使其继续执行 IDLE 后面的指令

使用特权

评论回复
7
jerow|  楼主 | 2019-8-30 16:52 | 只看该作者
KF8L22xx 看门狗的周期

如上框图所示:看门狗定时器的时钟源为内部低频时钟(带校正功能的 31.25KHZ),相关内容详见内部低频振荡器章节。
看门狗定时器的周期由两个分频器的配置决定,最短约 1ms,最长约 268s,默认配置时为 16ms。由于温度、电源电压和工艺等的差异,不同器件之间的超时周期稍有不同。
看门狗定时器带有两个分频器:
 一个 16 位(11 位可编程)预分频器;
 一个 8 位可编程后分频器(与 T0 共用)。
16 位预分频器中有 11 位可编程,由 WDTCTL 寄存器的 WDTPS<3:0>位选择预分频比(1:32 到 1:65536),共 12 档。
后分频器为看门狗定时器和定时/计数器 T0 共用,通过 OPTR 寄存器的 PSA 位将后分频器分配给 WDT 或者 T0;,OPTR 寄存器的 PS<2:0>位选择后分频器的分频比(1/1 到 1/128)。

使用特权

评论回复
8
zlmin| | 2019-10-3 09:11 | 只看该作者
谢谢分享!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

72

主题

520

帖子

3

粉丝