(Kinetis K60)WDOG看门狗测试
来源:互联网 发布:百度seo引流 编辑:程序博客网 时间:2024/06/10 22:36
原文地址:<wbr>K60)WDOG看门狗测试" HREF="http://blog.sina.com.cn/s/blog_51cf75010101jgbj.html" TARGET="_blank">(http://blog.sina.com.cn/s/blog_4ac1eaae0101dab5.html
看门狗是一种计数器。当计数的值溢出时会自动复位MCU。(需要在溢出前“喂狗”,避免复位)
看门狗机制可以避免程序跑死(跑死时自动复位)
改变看门狗寄存器参数前必须解锁看门狗。freescalekinetis看门狗解锁步骤是向看门狗的解锁寄存器连续写入0XC520和0xD928.两次写入不能超过20个时钟周期。
注:程序需要烧至flash,否则复位后程序丢失。
初始化看门狗
void WDOG_Init(void)
{
WDOG_UNLOCK=0xC520;
WDOG_UNLOCK=0xD928; //解锁看门狗寄存器(重新写入前必须解锁)两次写入不能超过20个时钟周期
WDOG_PRESC= 0x0700; //(7+1)分频
WDOG_TOVALH=0x0110; //看门狗超时时间设置为3s
WDOG_TOVALL= 0x5E90;
}
喂狗
void WDOG_Feed(void)
{
WDOG_REFRESH= 0xA602;
WDOG_REFRESH=0xB480; //喂狗
}
关闭和开启看门狗
void WDOG_Close(void)
{
WDOG_UNLOCK= 0xC520u;
WDOG_UNLOCK= 0xD928u;
WDOG_STCTRLH&= ~0x0001; //关闭看门狗 WDOTEN 0
}
void WDOG_Open(void)
{
WDOG_UNLOCK= 0xC520;
WDOG_UNLOCK= 0xD928;
WDOG_STCTRLH|= 0x0001; //打开看门狗 WDOTEN 1
}
=================================华丽的代码分割线===============================
所有代码
#include "LED.h"
void WDOG_Init(void);
void WDOG_Feed(void);
void WDOG_Close(void);
void WDOG_Open(void);
void main(void)
{
DisableInterrupts;
WDOG_Init(); //初始化看门狗
init_LED();
EnableInterrupts;
WDOG_Open(); //开启看门狗
Delay(1500);
while(1)
{
LED1(0);
LED2(0);
LED3(0);
LED4(0);
//WDOG_Feed(); //喂狗
}
}
void WDOG_Init(void)
{
WDOG_UNLOCK=0xC520;
WDOG_UNLOCK=0xD928; //解锁看门狗寄存器(重新写入前必须解锁)两次写入不能超过20个时钟周期
WDOG_PRESC= 0x0700; //(7+1)分频
WDOG_TOVALH=0x0110; //看门狗超时时间设置为3s
WDOG_TOVALL= 0x5E90;
}
void WDOG_Feed(void)
{
WDOG_REFRESH= 0xA602;
WDOG_REFRESH=0xB480; //喂狗
}
void WDOG_Close(void)
{
WDOG_UNLOCK= 0xC520u;
WDOG_UNLOCK= 0xD928u;
WDOG_STCTRLH&= ~0x0001; //关闭看门狗 WDOTEN 0
}
void WDOG_Open(void)
{
WDOG_UNLOCK= 0xC520;
WDOG_UNLOCK= 0xD928;
WDOG_STCTRLH|= 0x0001; //打开看门狗 WDOTEN 1
}
===========================华丽的实验现象===============================
注释掉“喂狗后”LED 1.5秒闪烁(初始化LED为低电平)3秒看门狗复位
喂狗,LED亮1.5后熄灭
看门狗机制可以避免程序跑死(跑死时自动复位)
改变看门狗寄存器参数前必须解锁看门狗。freescalekinetis看门狗解锁步骤是向看门狗的解锁寄存器连续写入0XC520和0xD928.两次写入不能超过20个时钟周期。
注:程序需要烧至flash,否则复位后程序丢失。
初始化看门狗
void WDOG_Init(void)
{
}
喂狗
void WDOG_Feed(void)
{
}
关闭和开启看门狗
void WDOG_Close(void)
{
}
void WDOG_Open(void)
{
}
=================================华丽的代码分割线===============================
所有代码
#include "LED.h"
void WDOG_Init(void);
void WDOG_Feed(void);
void WDOG_Close(void);
void WDOG_Open(void);
void main(void)
{
}
void WDOG_Init(void)
{
}
void WDOG_Feed(void)
{
}
void WDOG_Close(void)
{
}
void WDOG_Open(void)
{
}
===========================华丽的实验现象===============================
注释掉“喂狗后”LED 1.5秒闪烁(初始化LED为低电平)3秒看门狗复位
喂狗,LED亮1.5后熄灭
0 0
- (Kinetis K60)WDOG看门狗测试
- 飞思卡尔Kinetis 60(K60)时钟…
- <转>(Kinetis K60)flash读写
- Kinetis 时钟分类
- K60 ADC
- K60 PIT定时器
- K60 first GPIO
- kinetis bootloader测试case
- 飞思卡尔Kinetis 60(K60)时钟系统分析
- K60学习笔记1——kinetis 启动分析
- 看门狗测试
- 看门狗测试
- K60 GPIO外部中断
- #山外K60函数 FTM_PWM_…
- Feescale K60开发笔记8: MQX中看门狗的使用
- 玩转Kinetis之教你将K60主频超到200MHz以上
- Cortex-M4的启动过程分析从GCC开始-Kinetis K60为例
- 看门狗溢出测试
- IIC 概述与操作
- 闪存
- 对通用输入输出GPIO的深入理解
- vbus架构之源于linux的驱动架构思想
- c51编程中sbit sfr 用法
- (Kinetis K60)WDOG看门狗测试
- {转]太经典了,我不得不收藏
- 记住这15条你就会少走弯路
- 一个自动化-博客
- kinetis时钟模块MCG详解
- 飞思卡尔Kinetis 60(K60)时钟…
- 简单验证K60内部时钟运行频率
- ROM、RAM、DRAM、SRAM、FLASH的区…
- Android自定义View 自定义组合控件