打印
[技术问答]

自唤醒 清除掉电模式

[复制链接]
1012|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
如果是自唤醒的话 WKT只能配置片内10kHz时钟源LIRC WKT时钟的预分频16分频  也就是10k;填重装载值到RWK寄存器 RWK = 0x64;        那么他是多久唤醒一次,怎末算的

比如下面的例子  是多久进入一次自唤醒中断  怎末算的  求大佬解惑
void WakeUp_Timer_ISR (void)   interrupt 17     //ISR for self wake-up timer 100ms
{
        static UINT8 Count = 0;
        Count++;
        if(Count<2)
        {Count =0;
              clr_PD;  
                }
        clr_WKTF;                                               //clear interrupt flag   
}
void main (void)
{
        WKCON &=~0x02;
        WKCON |= 0x02;                                                                         //这些位决定WKT时钟的预分频  64分频  2s唤醒    4分频  0.5S唤醒
        RWK = 0x96;                                                                                         //自唤醒定时器重装载数据寄存器 用以保存WKT的8位重载值。注意如果预分频是1/1, RWK限制不能是FFH
        set_EWKT;                                                                                                // 使能由WKTF (WKCON.4) 产生的中断
        set_WKTR;                                                                                         // 当WKT溢出,该位置位。如果WKT中断和全局中断使能, 置位该位会使CPU执行WKT中断服务程序。该位不会被硬件自动清零,应该通过软件清零。
       
while(1)
                {
        set_PD;                         // clr_PD  CPU从掉电模式下唤醒后,该位自动由硬件清零,且程序继续执行唤醒系统的中断源对应的中断服务程序ISR。
                                        // 从ISR返回后,设备执行让系统进入掉电模式的指令,使系统进入掉电模式。
   
                }

}
沙发
heisexingqisi| | 2018-11-1 21:29 | 只看该作者
你看官方的那个例子没。

使用特权

评论回复
板凳
heisexingqisi| | 2018-11-1 21:34 | 只看该作者
另外看手册120页。

使用特权

评论回复
地板
heisexingqisi| | 2018-11-1 21:34 | 只看该作者
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2017 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

//***********************************************************************************************************
//  Nuvoton Technoledge Corp.
//  Website: http://www.nuvoton.com
//  E-Mail : MicroC-8bit@nuvoton.com
//  Date   : Apr/21/2017
//***********************************************************************************************************

//***********************************************************************************************************
//  File Function: N76E003 wake up timer interrupt demo code
//***********************************************************************************************************
#include "N76E003.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_define.h"

void WakeUp_Timer_ISR (void)   interrupt 17     //ISR for self wake-up timer
{
                clr_GPIO1;
                Timer1_Delay10ms(5);
                set_GPIO1;
                Timer1_Delay10ms(5);
                clr_GPIO1;
                Timer1_Delay10ms(5);
                set_GPIO1;
          clr_WKTF;                                               //clear interrupt flag   
}


/************************************************************************************************************
*    Main function
************************************************************************************************************/
void main (void)
{
   
    P12_PushPull_Mode;

                clr_GPIO1;
                Timer0_Delay1ms(400);
                set_GPIO1;
                Timer0_Delay1ms(400);
                clr_GPIO1;
                Timer0_Delay1ms(400);
                set_GPIO1;
                Timer0_Delay1ms(400);
                clr_GPIO1;
                Timer0_Delay1ms(400);
                set_GPIO1;

//-----------------------------------------------------
//        WKT initial        
//-----------------------------------------------------       
                WKCON = 0x02;                                                                                 //timer base 10k, Pre-scale = 1/16
//                RWK = 0XFF;                                                                                        //        if prescale is 0x00, never set RWK = 0xff
                RWK = 0X00;
          set_EWKT;                                                                                                        // enable WKT interrupt
                set_WKTR;                                                                                                 // Wake-up timer run
                EA = 1;
       
                while(1);
}

使用特权

评论回复
5
heisexingqisi| | 2018-11-1 21:35 | 只看该作者

使用特权

评论回复
6
huangcunxiake| | 2018-11-2 09:53 | 只看该作者
解决了没

使用特权

评论回复
7
huangcunxiake| | 2018-11-2 09:54 | 只看该作者
看懂上面的结构图里面

使用特权

评论回复
8
734774645| | 2018-11-3 15:36 | 只看该作者
定时器中断里要注意操作内容。

使用特权

评论回复
9
zhuomuniao110| | 2018-11-4 21:01 | 只看该作者
竟然专门有个唤醒定时器。看来其他定时器中断没法唤醒。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

8

帖子

1

粉丝