RTC时间程序相关问题

2019-08-22 16:03发布

本帖最后由 春心荡漾 于 2017-4-6 12:49 编辑

给为大神可以告诉我下为什么下面两段代码的执行效果不同吗?万分感谢!!!
第一段:[mw_shl_code=applescript,true]void RTC_IRQHandler(void)
{
        if(RTC_GetITStatus(RTC_IT_SEC))
        {
//                TimeDisplay =1;
                RTC_ClearITPendingBit(RTC_IT_SEC);
                RTC_WaitForLastTask();
                if (RTC_GetCounter() == 0x00015180){
                        RTC_SetCounter(0x00);
                        RTC_WaitForLastTask();
                }
        }
}

while(1)
        {
//                if(TimeDisplay == 1)
                {
                        Time_Display(RTC_GetCounter());
//                        TimeDisplay = 0;
                }
        }[/mw_shl_code]

第二段:
[mw_shl_code=applescript,true]void RTC_IRQHandler(void)
{
        if(RTC_GetITStatus(RTC_IT_SEC))
        {
                TimeDisplay =1;
                RTC_ClearITPendingBit(RTC_IT_SEC);
                RTC_WaitForLastTask();
                if (RTC_GetCounter() == 0x00015180){
                        RTC_SetCounter(0x00);
                        RTC_WaitForLastTask();
                }
        }
}

while(1)
        {
                if(TimeDisplay == 1)
                {
                        Time_Display(RTC_GetCounter());
                        TimeDisplay = 0;
                }
        }[/mw_shl_code]

区别就在于有没有添加显示标志

第一种显示效果是在到达00:00:00是正常的,第二种的话到达23:59:58后直接跳到00:00:00,然后00:00:00停顿一秒钟
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
春心荡漾
1楼-- · 2019-08-22 21:14
自己顶自己
春心荡漾
2楼-- · 2019-08-23 02:21
 精彩回答 2  元偷偷看……
操作系统
3楼-- · 2019-08-23 03:56
应该是大不同了.
有标志位控制的是一秒执行一次.
没有标志位控制的.大约几个微秒执行一次吧.
春心荡漾
4楼-- · 2019-08-23 06:59
操作系统 发表于 2017-4-6 12:03
应该是大不同了.
有标志位控制的是一秒执行一次.
没有标志位控制的.大约几个微秒执行一次吧.

可是那为什么有了标志位会在计时到00:00:00的时候停顿一秒再从00:00:01开始正常计时呢?
春心荡漾
5楼-- · 2019-08-23 11:42
有显示标志的时候就会出现两个00:00:00,如图所示
操作系统
6楼-- · 2019-08-23 15:42
这个细节还得请你自己调试才知道.

一周热门 更多>