野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12213|回复: 3

Systick与RTC中断同时使用异常

[复制链接]
发表于 2016-8-17 20:31:17 | 显示全部楼层 |阅读模式
今天用103的开发板写了个测试代码,用SYSTICK做延时函数,用RTC做1S计数器。关键代码如下:
void SysTick_Init(void)
{
        SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);//72MHz/8 = 9MHz
        NVIC_SetPriority(SysTick_IRQn, 0);
        fac_us = sysclk / 8;//72/8 = 9,9次1uS
        fac_ms = (u16)fac_us * 1000;
}

SYSTICK中断优先级为0,RTC中断优先级为1,1

void NVIC_RTC_Config(void)
{
        NVIC_InitTypeDef NVIC_InitStructure;

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
       
        NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
       
        NVIC_Init(&NVIC_InitStructure);
}

主函数执行LED亮灭1秒钟循环:
        while( 1 )
        {
                GPIO_SetBits(GPIOB, GPIO_Pin_5);//LED灭
                Delay_ms(1000);
                GPIO_ResetBits(GPIOB, GPIO_Pin_5);//LED亮
                Delay_ms(1000);
        }

RTC时钟秒中断中执行:
void RTC_IRQHandler(void)
{
        if(RTC_GetITStatus(RTC_IT_SEC) != RESET)
        {
                RTC_ClearITPendingBit(RTC_IT_SEC);
                Time_Convert();
                Display();
                if((second % 2) == 0)
                        Display_Dot();
                else
                        NotDisplay_Dot();
        }
}


主函数的循环不执行,LED保持灭的状态。RTC时钟秒中断函数正常执行。无论将两个中断优先级设置为高或者低都是一样,systick延时不执行。这两个计数器工作会冲突?或者是设置需要有特别注意的地方?
回复

使用道具 举报

发表于 2016-8-17 23:56:36 来自手机 | 显示全部楼层
绝对是中断优先级冲突了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-18 15:16:17 | 显示全部楼层
一开始我也以为是中断优先级冲突了,重新设置了两个的优先级,分别设置两者抢占优先级为0或者1,RTC秒中断响应优先级为0或者1,几种情况分别测试结果一致。因此判断跟优先级无关,或者其他地方设置错误或不到位。
回复 支持 反对

使用道具 举报

发表于 2016-8-18 19:24:54 来自手机 | 显示全部楼层
那只能靠自己了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-12 16:16 , Processed in 0.027672 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表