OpenEdv-开源电子网

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

STM32F103RE的闹钟中断问题求教

[复制链接]

2

主题

6

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2021-12-22
在线时间
5 小时
发表于 2022-1-9 18:41:30 | 显示全部楼层 |阅读模式
10金钱
使用的是正点原子的例子,但是用的是LSI最为时钟源,但是一直复位,不懂为什么,有没有老哥解答一下的,main函数里面有一个打印,上电之后就是一直刷那个打印static void RTC_NVIC_Config(void)
{      
  NVIC_InitTypeDef NVIC_InitStructure;
        EXTI_InitTypeDef EXTI_InitStructure;
        NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn;                //RTC諾ÖÖD¶Ï
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;        //ÏèÕ¼óÅÏè¼¶1λ,′óóÅÏè¼¶3λ
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;        //ÏèÕ¼óÅÏè¼¶0λ,′óóÅÏè¼¶4λ
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                //ê1Äü¸Ãí¨μàÖD¶Ï
        NVIC_Init(&NVIC_InitStructure);                //¸ù¾YNVIC_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèNVIC¼Ä′æÆ÷
        NVIC_InitStructure.NVIC_IRQChannel =RTCAlarm_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelCmd =ENABLE;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =1;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority =1;
        NVIC_Init(&NVIC_InitStructure);
        EXTI_ClearITPendingBit(EXTI_Line17);
        EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_Line = EXTI_Line17;
        EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;
        EXTI_Init(&EXTI_InitStructure);
}

//êμê±ê±ÖóÅäÖÃ
//3õê¼»ˉRTCê±Öó,í¬ê±¼ì2aê±ÖóêÇ·ñ1¤×÷Õy3£
//BKP->DR1óÃóú±£′æêÇ·ñμúò»′ÎÅäÖÃμÄéèÖÃ
//·μ»Ø0:Õy3£
//ÆäËû:′íÎó′úÂë

u8 RTC_Init(void)
{
        //¼ì2éêÇ2»êÇμúò»′ÎÅäÖÃê±Öó
        u8 temp=0;                                                                                                                                                                                                           
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);        //ê1ÄüPWRoíBKPíaéèê±Öó   
        PWR_BackupAccessCmd(ENABLE);        //ê1Äüo󱸼Ä′æÆ÷·ÃÎê  
      
      
                BKP_DeInit();        //¸′λ±¸·YÇøóò        
                RCC_LSICmd(ENABLE);        //éèÖÃía2¿μíËù¾§Õñ(LSE),ê1óÃíaéèμíËù¾§Õñ
                       
                while (RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET)        //¼ì2éÖ¸¶¨μÄRCC±ê־λéèÖÃóë·ñ,μè′yμíËù¾§Õñ¾íD÷
                        {
                        temp++;
                        delay_ms(10);
                        }
                if(temp>=250)return 1;//3õê¼»ˉê±Öóê§°ü,¾§ÕñóDÎêìa            
                       
                RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);                //éèÖÃRTCê±Öó(RTCCLK),Ñ¡ÔñLSE×÷ÎaRTCê±Öó   
                RCC_RTCCLKCmd(ENABLE);        //ê1ÄüRTCê±Öó  
                       
                RTC_WaitForLastTask();        //μè′y×î½üò»′ζÔRTC¼Ä′æÆ÷μÄD′2ù×÷íê3é
                RTC_WaitForSynchro();                //μè′yRTC¼Ä′æÆ÷í¬2½                 
                RTC_ITConfig(RTC_IT_SEC|RTC_IT_ALR, ENABLE);                //ê1ÄüRTCÃëÖD¶ÏoíÄÖÖóÖD¶Ï
                RTC_WaitForLastTask();        //μè′y×î½üò»′ζÔRTC¼Ä′æÆ÷μÄD′2ù×÷íê3é
                       
                RTC_EnterConfigMode();/// ÔêDíÅäÖà     
                RTC_SetPrescaler(39999); //éèÖÃRTCÔ¤·ÖÆμμÄÖμ
                RTC_WaitForLastTask();        //μè′y×î½üò»′ζÔRTC¼Ä′æÆ÷μÄD′2ù×÷íê3é
                       
        RTC_SetCounter(0);                            //??????0s
        /* Wait until last write operation on RTC registers has finished */
        RTC_WaitForLastTask();
        //????WORK_TIMES
        RTC_SetAlarm(10);
                RTC_WaitForLastTask();
                RTC_WaitForSynchro();
                RTC_ExitConfigMode(); //íË3öÅäÖÃģ꽠 

      
        RTC_NVIC_Config();//RCTÖD¶Ï·Ö×ééèÖà                
    printf("Time is  =%d \r\n",RTC_GetCounter()); //???????      
        return 0; //ok

}                                                     
//RTCê±ÖóÖD¶Ï
//ÿÃë′¥·¢ò»′Î
extern int count;
void RTC_IRQHandler(void)
{
        if(RTC_GetITStatus(RTC_IT_SEC)!=RESET)
        {
    printf("Time is  =%d \r\n",RTC_GetCounter()); //???????
        }
      
                RTC_ClearITPendingBit(RTC_IT_OW|RTC_IT_SEC);
                RTC_WaitForLastTask();
}
//ÄÖÖóÖD¶Ï
void RTCAlarm_IRQHandler(void)
{
        if(RTC_GetITStatus(RTC_IT_ALR) != RESET)
        {
                 printf("THE ALARM  READY =%d \r\n",RTC_GetCounter());//???????
                          RTC_ClearITPendingBit(RTC_IT_ALR);
                          PWR_BackupAccessCmd(ENABLE);
                          RTC_EnterConfigMode();  
                          RTC_WaitForLastTask();
                          RTC_SetAlarm(10+RTC_GetCounter());        //???????40s?
                          RTC_WaitForLastTask();
                          RTC_ExitConfigMode();   
                          PWR_BackupAccessCmd(DISABLE);
    }      

                EXTI_ClearITPendingBit(EXTI_Line17);
        RTC_WaitForLastTask();
                RTC_ClearITPendingBit(RTC_IT_ALR);
                RTC_WaitForLastTask();
}

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

使用道具 举报

6

主题

890

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1481
金钱
1481
注册时间
2020-8-19
在线时间
336 小时
发表于 2022-1-10 10:17:42 | 显示全部楼层
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2022-1-10
在线时间
0 小时
发表于 2022-1-10 11:38:49 来自手机 | 显示全部楼层
应该是串口没有初始化吧
回复

使用道具 举报

11

主题

2146

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4886
金钱
4886
注册时间
2015-1-10
在线时间
611 小时
发表于 2022-1-10 14:06:03 | 显示全部楼层
debug一下看看有没有进main
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2021-12-22
在线时间
5 小时
 楼主| 发表于 2022-1-10 15:36:19 | 显示全部楼层
zbs813270556 发表于 2022-1-10 11:38
应该是串口没有初始化吧

串口有打印诶,应该是初始化了,目前看就是一直重启
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2021-12-22
在线时间
5 小时
 楼主| 发表于 2022-1-10 15:36:44 | 显示全部楼层
阿侑kevin 发表于 2022-1-10 14:06
debug一下看看有没有进main

简陋的很,没有工具
回复

使用道具 举报

11

主题

2146

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4886
金钱
4886
注册时间
2015-1-10
在线时间
611 小时
发表于 2022-1-10 16:21:15 | 显示全部楼层
nikejian 发表于 2022-1-10 15:36
简陋的很,没有工具

你有下载器就可以debug
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2021-12-22
在线时间
5 小时
 楼主| 发表于 2022-1-11 09:02:34 | 显示全部楼层
别沉呀老铁们
回复

使用道具 举报

14

主题

821

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2100
金钱
2100
注册时间
2021-7-17
在线时间
658 小时
发表于 2022-1-11 10:53:57 | 显示全部楼层
可以debug一下看看
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-20 18:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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