江苏建安建设有限公司网站,建筑培训网查询,百度公司高管排名,建筑培训网安全员考试成绩查询目录 1 WDT简介
2 Exynos4412下的WDT控制器
2.1 概述
2.2 WDT的特性
2.3 工作原理
2.4 其他细节
3 WDT寄存器详解
3.1 WTCON控制寄存器
3.2 WTDAT 实时中断寄存器
3.3 WTCNT 递减计数器
3.4 WTCLRINT清除中断寄存器
4 WDT编程 1 WDT简介
Watch Dog Timer即看门狗定…目录 1 WDT简介
2 Exynos4412下的WDT控制器
2.1 概述
2.2 WDT的特性
2.3 工作原理
2.4 其他细节
3 WDT寄存器详解
3.1 WTCON控制寄存器
3.2 WTDAT 实时中断寄存器
3.3 WTCNT 递减计数器
3.4 WTCLRINT清除中断寄存器
4 WDT编程 1 WDT简介
Watch Dog Timer即看门狗定时器其主要作用是当发生软件故障时可产生复位信号使SOC复位其本质是一个计数器独立于CPU但是集成在SOC中的芯片 WDT工作原理 2 Exynos4412下的WDT控制器
2.1 概述
Exynos 4412 SCP中的看门狗定时器WDT是一种计时设备。可以使用该设备在系统错误引起的故障后恢复控制器的操作。可以将WDT用作普通的16位间隔定时器以请求中断服务。WDT也可以生成复位信号。
2.2 WDT的特性
支持带有中断请求的普通间隔定时器模式。当定时器计数值达到0超时时会触发内部复位信号。支持电平触发的中断机制。
2.3 工作原理 看门狗定时器使用的时PCLK时钟100Mhz 由soc提供给我们。
WTCNT寄存器中存入的是递减计数器的值会自动递减。
减到0时可以发送2种信号中断和普通定时器一样和复位监控CPU
WTCON寄存器[2]位可以设置是否中断
WTCON寄存器[0]位可以设置是否复位
WTCON寄存器[15:8]位设置预分频器降低频率可以设置0~255降低1~256倍。
WTCON寄存器[4:3]位二级分频再次降低频率可以降低1/16 1/32 1/64 1/128。
公式为递减周期计算
2.4 其他细节 3 WDT寄存器详解 3.1 WTCON控制寄存器 3.2 WTDAT 实时中断寄存器
WTDAT寄存器可以指定超时持续时间。在初始WDT操作中您无法将WTDAT的内容加载到计时器计数器中。然而通过使用0x8000初始值可以驱动WDT计数器首次超时。设置Count reload value每当超时都会把WTDAT里的值复制到WTCNT中来产生实时中断。 3.3 WTCNT 递减计数器 不好超过65535
3.4 WTCLRINT清除中断寄存器 4 WDT编程
介绍编程实现看门狗运行程序运行5s后开发板复位
注exynos_4412.h见前期接口介绍。 #include exynos_4412.hvoid Delay(unsigned int Time)
{while(Time--);
}int main()
{/*设置一级分频*/WDT.WTCON WDT.WTCON | (0xFF 8);/*设置二级分频*//*WTCNT递减频率 PLCK(100000000)/(0xFF 1)/128 3052*/WDT.WTCON WDT.WTCON | (0x3 3);/*禁止WDT产生中断信号*/WDT.WTCON WDT.WTCON (~(1 2));/*使能WDT产生复位信号*/WDT.WTCON WDT.WTCON | 1;/*设置计数器的初始值*/WDT.WTCNT (3052 * 5);/*使能WDT,计数器开始递减*/WDT.WTCON WDT.WTCON | (1 5);while(1){printf(WDT.WTCNT %d\n,WDT.WTCNT);/*喂狗*///WDT.WTCNT 3052;Delay(100000);}return 0;
}
练习
编程实现将WDT的递减频率设置为10000HZ程序运行5s后开发板复位 #include exynos_4412.hvoid Delay(unsigned int Time)
{while(Time--);
}int main()
{/*设置一级分频*/WDT.WTCON WDT.WTCON | (0x4D 8);/*设置二级分频*//*WTCNT递减频率 PLCK(100000000)/(0x4D 1)/128 ≈ 10000*/WDT.WTCON WDT.WTCON | (0x3 3);/*禁止WDT产生中断信号*/WDT.WTCON WDT.WTCON (~(1 2));/*使能WDT产生复位信号*/WDT.WTCON WDT.WTCON | 1;/*设置计数器的初始值*/WDT.WTCNT (10000 * 5);/*使能WDT,计数器开始递减*/WDT.WTCON WDT.WTCON | (1 5);while(1){printf(WDT.WTCNT %d\n,WDT.WTCNT);/*喂狗*///WDT.WTCNT 10000;Delay(100000);}return 0;
}效果5s后开发板复位
注开发板已经帮我们实现了串口的功能所以直接调用printf即可否则串口也不会打印上电的信息。