OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3436|回复: 1

stm32f103zet6闹钟中断进不去求助

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
48
金钱
48
注册时间
2015-10-7
在线时间
8 小时
发表于 2016-3-23 17:18:15 | 显示全部楼层 |阅读模式
1金钱
捣鼓了好久,闹钟中断一直进不去,拜托大家帮我看看哪里出问题了,本人小白一个谢谢哈
下面是主要代码来着
void RTC_Config(void)
{
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP|RCC_APB1Periph_PWR,ENABLE);//配置BKP备份时钟和电源管理时钟都要打开
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF|RCC_APB2Periph_AFIO,ENABLE);
  PWR_BackupAccessCmd(ENABLE);  //使能RTC备份寄存器访问
  BKP_DeInit();     //复位BKP
  RCC_LSEConfig(RCC_LSE_ON);   //打开LSE时钟
  while(RCC_GetFlagStatus(RCC_FLAG_LSERDY)==RESET);  //等待LSE就绪
  RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);  //RTC时钟源为LSE
  RCC_RTCCLKCmd(ENABLE);   //RTC时钟开启
  RTC_WaitForSynchro();   //RTC等待同步
  RTC_WaitForLastTask();   //等待就绪
  RTC_ITConfig(RTC_IT_SEC|RTC_IT_ALR,ENABLE);   //RTC秒中断开
  RTC_WaitForLastTask();   //等待就绪
  RTC_SetPrescaler(32767);  //RTC预分频器
  RTC_WaitForLastTask();   //等待就绪
}


优先级和中断线设置:
void NVIC_Config(void)
{
   NVIC_InitTypeDef NVIC_InitStructure;

   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //中断优先级分组
                 
    NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn;                        //使能按键USER1所在的外部中断通道
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;        //抢占优先级1,
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;                                        //子优先级0
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //使能外部中断通道
          NVIC_Init(&NVIC_InitStructure);
       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //中断优先级分组
                 
    NVIC_InitStructure.NVIC_IRQChannel = RTCAlarm_IRQn;                        //使能按键USER1所在的外部中断通道
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;        //抢占优先级1,
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;                                        //子优先级0
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //使能外部中断通道
          NVIC_Init(&NVIC_InitStructure);
}

void RTCAlarm_EXIT(void)
{
   EXTI_InitTypeDef  EXTI_InitStructure;

   EXTI_ClearITPendingBit(EXTI_Line17);                  //清除中断标志

   EXTI_InitStructure.EXTI_Line=EXTI_Line17;                  //选择中断线8
   EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;   //设置为中断请求
   EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;   //下降沿触发
   EXTI_InitStructure.EXTI_LineCmd=ENABLE;                              //使能中断线
   EXTI_Init(&EXTI_InitStructure);
}



中断服务程序:
void RTC_IRQHandler(void)
{                       
        if(RTC_GetITStatus(RTC_IT_SEC) != RESET)
        {                 
                RTC_ClearITPendingBit(RTC_IT_SEC);
                RTC_WaitForLastTask();                         
                if (RTC_GetCounter() == 0x00015180)
                    {
                        RTC_SetCounter(0x0);
                        RTC_WaitForLastTask();
                    }
        }
}


void RTCAlarm_IRQHandler(void)
{     
        if(RTC_GetITStatus(RTC_IT_ALR) != RESET)
        {
                 GPIO_ResetBits(GPIOF,GPIO_Pin_6);
        }
        EXTI_ClearITPendingBit(EXTI_Line17);
          RTC_WaitForLastTask();
          RTC_ClearITPendingBit(RTC_IT_ALR);
          RTC_WaitForLastTask();
}

谢谢大家

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-3-23 22:22:22 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 20:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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