N76E003|N76E003 定时唤醒WKT
1、分析
文章图片
10KHz内部振荡器,通过WKTR寄存器控制是否启动,后进入分频器,通过WKPS进行预分频(1/1 到 1/2048),再通过RWK重载值,实现对溢出速度的控制,最后通过WKTF溢出标志触发自动唤醒定时器中断。
计算公式大致如下
定时时间/((Pre-scalar预分频+1)/10)=255-重载值(RWK)
eg:
定时1000ms,64分频,算重载值
1000/((64+1)/10)=153
RWK =255-153;
//最好做成这样
eg:定时2000ms,256分频(不能超过RWK的范围),算重载值
2000/25.7=77
RWK =255-77;
【N76E003|N76E003 定时唤醒WKT】(PS:计算出来的重载值会存在一定的误差,可能并不会是最符合实际情况的,有条件最好使用逻辑分析仪或示波器测量确定)
文章图片
文章图片
文章图片
文章图片
2、代码&验证
#include "N76E003.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_define.h"sbit LED=P0^4;
void main (void)
{Set_All_GPIO_Quasi_Mode;
LED=1;
WKCON =0x04;
//预分频配置256
//RWK = 0XFF;
// if prescale is 0x00, never set RWK = 0xff
RWK =255-76;
//定时2s
set_EWKT;
//使能定时唤醒中断
set_WKTR;
//开启定时唤醒功能
EA = 1;
//开启总中断
while(1);
}//---------定时唤醒中断服务程序--------------
void WakeUp_Timer_ISR (void)interrupt 17
{
LED=~LED;
//翻转电平
clr_WKTF;
//清除WKT溢出标志位
}
文章图片
推荐阅读
- linux定时任务contab
- 芯灵思SinlinxA33开发板Linux内核定时器编程
- STM32F4|STM32F4 TIM6 TIM7 基本定时器
- Waking|Waking Fitness唤醒真实的自己
- 无聊时
- 用生命追光,被晚钟唤醒了梦的时空(小女15记)
- 20180305|20180305 小确幸
- 闭包-定时器-BOM
- 教育是一种唤醒
- 跳河自尽的您唤醒了谁的良知