恩智浦 飞思卡尔Freescale Kinetis KEA128学习笔记3——看门狗

发布者:czc天天最新更新时间:2021-04-06 来源: eefocus关键字:飞思卡尔  KEA128  看门狗 手机看文章 扫描二维码
随时随地手机看文章

KEA128是M0内核的ARM单片机,只有一个看门狗,不像其他ARM单片机,可能有多个看门狗,如STM32F103系列就有2个看门狗,KEA128只有一个,单可配置成两种模式,即独立看门狗模式或窗口模式。


在使用看门狗时,系统上电后对WDOG_CS1、WDOG_CS2,WDOG_TOVAL只能写一次,之后再写就无效了,除非在需要重新写的寄存器之前加上那个解锁序列:WDOG->CNT = 0x20C5,WDOG->CNT = 0x28D9. 所以在对这些寄存器进行写操作时,最好一次性写完。

//============================================================================

//文件名称:wdog.h

//功能概要:KEA128 看门狗驱动程序头文件

//版权所有:苏州大学飞思卡尔嵌入式中心(sumcu.suda.edu.cn)

//版本更新:2015-05-11  V1.0   初始版本

//=================苏州大学飞思卡尔嵌入式中心2015=========================

 

 

#ifndef __WDOG_H__

#define __WDOG_H__

 

//1 头文件

#include "common.h"

 

 

//=================接口函数声明===========================================

 

//=========================================================================

//函数名称:wdog_init                                                        

//功能概要:初始化看门狗模块                                                

//参数说明:无 

//函数返回:无

//=========================================================================

void wdog_init(void);

 

//=========================================================================

//函数名称:wdog_disable                                                        

//功能概要:关闭看门狗模块                                                

//参数说明:无 

//函数返回:无

//=========================================================================

void wdog_disable(void);

 

//=========================================================================

//函数名称:wdog_enable                                                        

//功能概要:启动看门狗                                                

//参数说明:无 

//函数返回:无

//=========================================================================

void wdog_enable(void);

 

//=========================================================================

//函数名称:wdog_feed                                                        

//功能概要:复位看门狗定时器,喂狗                                                

//参数说明:无 

//函数返回:无

//=========================================================================

void wdog_feed(void);

 

//=========================================================================

//函数名称:wdog_enable_int                                                        

//功能概要:启动看门狗中断                                                

//参数说明:无 

//函数返回:无

//=========================================================================

 

void wdog_enable_int(void);

//=========================================================================

//函数名称:wdog_disable_int                                                        

//功能概要:关闭看门狗中断                                                

//参数说明:无 

//函数返回:无

//=========================================================================

void wdog_disable_int(void);

 

#endif

看门狗操作步骤:


1.取消写保护,解锁看门狗保护


2.确定时钟(KEA128只需确定时钟,其他芯片看情况)


3.设置看门狗重载值,确定溢出时间


4.使能看门狗,设置何种模式下使能看门狗


5,在应用程序开始处要初始化看门狗,在程序容易跑飞的地方设置看门狗


 


//========================================================================

//文件名称:wdog.c

//功能概要:KEA128看门狗驱动程序程序源文件

//=================苏州大学飞思卡尔嵌入式中心2015==========================

 

#include "wdog.h"    //包含wdog.h头文件

#include "uart.h"

 

//=================内部函数声明===========================================

//=========================================================================

//函数名称:wdog_unlock

//功能概要:解锁看门狗

//参数说明:无

//函数返回:无

//=========================================================================

static void wdog_unlock(void);

 

//=================接口函数实现===========================================

 

//=========================================================================

//函数名称:wdog_init                                                        

//功能概要:初始化看门狗模块                                                

//参数说明:无 

//函数返回:无

//=========================================================================

void wdog_init()

{

    //给看门狗模块解锁,以便写寄存器

    wdog_unlock();

 

    //看门狗超时时间设置为1s,0x03e8=1000

    WDOG_TOVALL = 0xE8;

    WDOG_TOVALH = 0x03;

 

    //使用1KHz时钟源

    //00 总线时钟。01 1 KHz内部低功耗振荡器(LPOCLK)。10 32KHz内部振荡器(ICSIRCLK)。11 外部时钟源

    WDOG_CS2 = WDOG_CS2_CLK(1);

 

    //开启看门狗,允许解锁从而更新寄存器,开启停止模式和等待模式

    WDOG_CS1 = WDOG_CS1_EN_MASK|WDOG_CS1_UPDATE_MASK

              |WDOG_CS1_STOP_MASK|WDOG_CS1_WAIT_MASK;

 

}

 

//=========================================================================

//函数名称:wdog_disable                                                        

//功能概要:关闭看门狗模块                                                

//参数说明:无 

//函数返回:无

//=========================================================================

void wdog_disable(void)

{

    //给看门狗模块解锁,以便写寄存器

    wdog_unlock();

    //关闭看门狗

    WDOG_CS1 &= ~WDOG_CS1_EN_MASK;

}

 

//=========================================================================

//函数名称:wdog_enable                                                        

//功能概要:启动看门狗                                                

//参数说明:无 

//函数返回:无

//=========================================================================

void wdog_enable(void)

{

    //给看门狗模块解锁,以便写寄存器

    wdog_unlock();

    //开启看门狗

    WDOG_CS1 |= WDOG_CS1_EN_MASK;

}

 

//=========================================================================

//函数名称:wdog_feed                                                        

//功能概要:喂狗,清看门狗计数器                                                

//参数说明:无 

//函数返回:无

//=========================================================================

void wdog_feed()

{

    DISABLE_INTERRUPTS;

    //刷新序列

    WDOG_CNT = 0x02A6;

    WDOG_CNT = 0x80B4;

    ENABLE_INTERRUPTS;

}

 

//=========================================================================

//函数名称:wdog_enable_int                                                        

//功能概要:启动看门狗中断                                                

//参数说明:无 

//函数返回:无

//=========================================================================

void wdog_enable_int()

{

    //给看门狗模块解锁,以便写寄存器

    wdog_unlock();

    //开看门狗中断

    WDOG_CS1 |= WDOG_CS1_INT_MASK;

    //启动IRQ中断

    NVIC_EnableIRQ(WDOG_IRQn);//28

}

 

//=========================================================================

//函数名称:wdog_disable_int                                                        

//功能概要:关闭看门狗中断,操作WDOG控制和状态寄存器1,WDOG_CS1                                              

//参数说明:无 

//函数返回:无

//=========================================================================

void wdog_disable_int()

{

    //给看门狗模块解锁,以便写寄存器

    wdog_unlock();

    //开看门狗中断

    WDOG_CS1 &= ~WDOG_CS1_INT_MASK;

[1] [2]
关键字:飞思卡尔  KEA128  看门狗 引用地址:恩智浦 飞思卡尔Freescale Kinetis KEA128学习笔记3——看门狗

上一篇:恩智浦 飞思卡尔Freescale Kinetis KEA128学习笔记3--GPIO模块(二)
下一篇:恩智浦 飞思卡尔Freescale Kinetis KEA128学习笔记4——ADC

推荐阅读最新更新时间:2024-11-06 16:57

PIC入门2,看门狗和PWM波产生实验
我使用的是爱晶3ePIC实验板,以下都是自己写的程序,调试都是成功的,只是为了纪念和学习交流使用,别无它意。在我的 相册里有板子的原理图。 启动看门狗后,系统会在一定的时间内重启,当遇到死循环的时候重启系统,在调试的时候ICD2配置字要求关掉看门狗,所以用ICD2把程序直接下载到芯片里执行。 程序: //适合3ePIC实验板,看门狗实验 #include pic.h unsigned long i; //初始化 void initial() { OPTION=0x0F; //把前分频给WTD,且分频倍率为1:128 TRISD=0x00; //D口输出口,点亮LED TRISE=0x00; //LED使能段 } //
[单片机]
MSP430学习点滴—看门狗定时器
简介:看门狗有三种工作模式:停止模式,计时器模式,看门狗模式。控制寄存器WDTCTL由两部分组成,高8位用作口令,低8位实现对WDT的控制操作。要实现对WDT的操作控制,必须先写入高字节看门狗口令。 控制寄存器WDTCTL由两部分组成,高8位用作口令,低8位实现对WDT的控制操作。要实现对WDT的操作控制,必须先写入高字节看门狗口令。口令为5AH,头文件里一般将WDTPW宏定义为5AH.WDTCTL寄存器各位定义如下: 15~8 7 6 5 4 3 2 1 0 口令 HOLD NMIES NMI TMSEL CNTCL SSEL IS1 IS0 IS0 IS1 选择看门狗定时器的定时输出,其中T是WDTCNT的输入
[单片机]
中兴采用飞思卡尔 QorIQ Qonverge B4860 SoC部署基站
飞思卡尔与中兴扩大合作,创建新一代4G宽带无线宏基站 2015年3月2日,西班牙巴塞罗那(世界移动通信大会)讯-飞思卡尔半导体(NYSE:FSL) 与中兴过去成功创建了世界一流的LTE基站解决方案,在此基础上,中兴再次选用飞思卡尔QorIQ Qonverge B4860基带片上系统(SoC)打造新一代LTE-Advanced宏基站。电信业正向4G移动宽带系统迁移,顶级无线OEM和移动运营商越来越需要以更低成本提供更高的用户带宽,B4860 SoC能使其满足这种日益增加的需求。 中兴作为大型跨国企业,主要提供面向移动互联网的电信、企业及消费电子技术解决方案,该公司将使用飞思卡尔B4860 SoC创建高性能、高容量基站,
[网络通信]
B001-Atmega16-看门狗WDT-(ques=1)
今天测试了下看门狗。 可以使用wdt.h中的wdt_enable(value)和wdt_disable(),也可以使用自己定义的WDT_enable(uint8_t count)和WDT_disable(void)。 复位看门狗用wdt.h中的wdt_reset()。 ---------------------------------------------------------------------------------------------------------------------------------- 使用PA0测试复位时间: 1、上电时PA0输出0.5s的高电平(示波器) 2、接着PA
[单片机]
校企联合 共赢未来
日前,飞思卡尔半导体副总裁兼亚太区总经理汪凯博士出席了电子科技大学兼职教授聘任仪式,并接受了电子科技大学通信与信息工程学院的聘任,成为该学院兼职教授。这是近年来,电子科技大学继美国、中国科学院院士、工程院院士、美国IEEE院士、国际著名跨国公司总裁等国内外杰出人士之后,又一次聘任著名跨国企业高级管理人员成为兼职教授。 电子科技大学非常重视国际交流与合作,有力地促进学校学科建设与发展。学校积极响应教育部关于校企联合、取得多赢的号召,近年来与多家国际一流的跨国公司开展技术合作,建立研发实验室,在合作项目中锻炼学生的实践能力,开阔眼界并向技术先进的跨国公司输送了一大批优秀人才。与此同时,企业利用自身优势,提供世界领先
[嵌入式]
freescale单片机SPI通信
//---主SPI初始化程序: void InitSPI(void) { SPI1CR1 = 0b01010010;//SPIE SPE SPTIE MSTR CPOL CPHA SSOE LSBFE //主模式,SS输出使能 SPI1CR2 = 0b00010000;//0 XFRW 0 MODFEN BIDIROE 0 SPISWAI SPC0 //8位输出 SPI1BR = 0x70 | 0x05;//SPPR SPR //Baudrate=fbus/ // =80MHz/512=156.25kHz
[单片机]
飞思卡尔即将推出基于OpenCL的汽车开发环境
飞思卡尔凭借OpenCL环境激发ADAS和自动驾驶系统的创新和开放式开发。 汽车处理领域领导者飞思卡尔计划推出基于OpenCL™的平台,呼吁业内使用完全符合汽车级要求的专用产品大幅提升ADAS安全和质量。 2014 年11月10日,(electronica 2014)慕尼黑讯 – “无人驾驶车辆”概念引发了全世界对这项新技术的想象,当前推出的高级驾驶员辅助系统(ADAS)则加快了这场革命的到来。虽然这些市场蕴藏巨大商机,难题也随之而来,必须首先予以解决。飞思卡尔半导体(NYSE: FSL)如今已经解决了无人自动驾驶技术发展道路上的两大难题—一是ADAS系统开发缺乏开放标准这一难题,二是一项虽然看似普通但尚无人填补的
[汽车电子]
摆脱摩托罗拉阴影,飞思卡尔拓展手机新客户
  近年来饱受摩托罗拉(Motorola)手机业务拖累的飞思卡尔半导体公司(FreescaleSemiconductor),正在寻求现有手机客户──摩托罗拉与RIM(Research In Motion)以外的移动电话客户,预计将为新客户供应3G手机芯片。   上任已经满半年的飞思卡尔半导体资深副总裁暨业务行销执行长Henri Richard日前在一场媒体聚会中做出了如上表示。他不愿透露新手机客户的名单,但表示今年底前将开始为新客户供应3G手机芯片。   在去年9月加入飞思卡尔前,Henri Richard是AMD的全球业务副总裁,并曾任职于Java公司WebGain,Bell Microproducts以及IBM等公司。
[手机便携]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved