打印
[DemoCode下载]

[Timer][M051]离开省电模式後,如何马上运行主程序

[复制链接]
2206|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tcchiu1|  楼主 | 2015-1-12 18:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在NuMicro的芯片里,如果从省电模式唤醒,以计时器而言,必须要设定中断及唤醒功能,也就是设定以下两个函数。

    TIMER_EnableInt(TIMER0);
    TIMER_EnableWakeup(TIMER0);

在一般的程序流程,一旦唤醒後,系统就会进入到计时器中断副程序。但我的应用需要先在主程序储存一部分参数,再进中断。
为了避免唤醒後,马上进入中断副程序,这时候就可以使用到__disable_irq()。它不会影响芯片唤醒流程,但又可以决定中断启动的时间点。

以下主程序,系统唤醒之後,会先打印"*** Wake Up and Enable IRQ ***\n",在__enable_irq()之後,才会进入中断副程序。

        printf("*** Enter Sleep ***\n");
        UART_WAIT_TX_EMPTY(UART0);
        __disable_irq();
        SYS_UnlockReg();
        CLK_PowerDown();
        printf("*** Wake Up and Enable IRQ ***\n");
        __enable_irq();


M051_Series_BSP_CMSIS_Rev3.00.001_TimerWakeUp.zip

313.55 KB

沙发
gaoyang9992006| | 2015-1-12 19:20 | 只看该作者
唤醒后,关闭总中断使能,清理所有中断标志位。如果需要再次中断,再次开启中断使能。

使用特权

评论回复
板凳
tcchiu1|  楼主 | 2015-1-12 19:36 | 只看该作者
必须在唤醒前,开闭总中断使能,唤醒後会来不及。

使用特权

评论回复
地板
gaoyang9992006| | 2015-1-13 23:01 | 只看该作者
离开省电模式,立马开启全速模式。

使用特权

评论回复
5
mintspring| | 2015-1-20 23:07 | 只看该作者
谢谢楼主分享,我还是没懂啥意思,我慢慢看。

使用特权

评论回复
6
zxf0168| | 2015-1-21 09:57 | 只看该作者
大同小异

使用特权

评论回复
7
广东新唐| | 2015-1-22 09:27 | 只看该作者
这个问题问新唐的技术就行了,加这个群:121181398,新唐技术群,找九哥!

使用特权

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

本版积分规则

14

主题

73

帖子

3

粉丝