我是靠谱客的博主 留胡子白开水,最近开发中收集的这篇文章主要介绍8.7、ARM接口编程 -- 看门狗,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

看门狗
当程序异常(死机),可以自动重启。

看门狗定时器
WTCON 预分频寄存器
[15:8] = 0xff 对总线时钟做除法,降低频率
[5] =1 启用wdt
[4:3] = 3 固定分频
[2] = 1 使能中断
[0] = 1 使能复位信号

WTDAT 重载寄存器 [15:0]

WTCNT [15:0] 减法计数寄存器 = 15259

WTCLRINT 中断清除寄存器
在这里插入图片描述
1、定时5S?
系统时钟 100M
100M/128 / (255+1)
计数15259 定时5s
1K = 100M/固定分频/预分频/重载值
16(00) 9+1 625

y*c = 100M/16/1K = 6250

2、使用看门狗定时器实现sleep
(1)、看门狗为中断模式
(2)、GIC WDT中断
(3)、do_irq处理wdt中断

/*****************************************************************
*   Copyright (C) 2018 Sangfor Ltd. All rights reserved.
*   
*   文件名称:watchdog.c
*   创 建 者:yinfei-hu
*   创建日期:
*   功能描述:看门狗		 
*
*****************************************************************/

#include"exynos_4412.h"
#include"uart.h"

unsigned int tic;//时间戳,每ms自增

//void wdt_init(void);
void wdt_init_exit(void);
void msleep(unsigned int ms);

int main()
{
    int a = 100;
    uart_init();
    printf("hello!a=%drn",a);

    wdt_init_exit();
    
    while(1)
    {    
        printf("tic=%urn",tic);
        msleep(1000);    
    }
    return 0;
}

void wdt_init_exit(void)
{
    WDT.WTCON = WDT.WTCON & ~(0XFF<<8) | 9<<8;//9+1
    WDT.WTCON &= ~(0X3<<3); //固定分频16
    WDT.WTCNT = 625;
    WDT.WTDAT = 625;//自动重装值为625
    WDT.WTCON &= ~1;//不使能复位
    WDT.WTCON |= 1<<2;//使能中断
    WDT.WTCON |= 1<<5;//启动wdt
    //配置wdt GIC   ID 75
    ICDDCR = 1; //开总中断
    ICDISER.ICDISER2 |= 1<<11;//使能端口中断
    ICDIPR.ICDIPR18 &= ~(0xff<<24);//设置端口优先级
    ICDIPTR.ICDIPTR18 = ICDIPTR.ICDIPTR18 & ~(0xff<<24) | 0x1<<24;//中断处理送CPU0
    //设置cpu0使能中断
    CPU0.ICCICR = 1;
    //CPU0中断优先级过滤寄存器
    CPU0.ICCPMR = 255;
    tic = 0;
}

void do_irq(void)
{
    //get id
    int id;
    id = CPU0.ICCIAR;
    if(id == 75)
    {
        tic++;
        //清除中断挂起
        WDT.WTCLRINT = 1;
        //清除gic中断挂起
        ICDICPR.ICDICPR2 |= 1<<11;
    }
    //3、清除CPU中断挂起
    CPU0.ICCEOIR = id;
}

void msleep(unsigned int ms)
{
    unsigned int ttic;
    ttic = tic;//获取函数调用时的时间
    while(tic - ttic < ms);//延时时间未到,阻塞等待
}

最后

以上就是留胡子白开水为你收集整理的8.7、ARM接口编程 -- 看门狗的全部内容,希望文章能够帮你解决8.7、ARM接口编程 -- 看门狗所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部