STR710的警报中断标志一直为1?!

thanks1   2007-1-5 14:50 楼主
                                 开放RTC的通用中断和秒中断后,可以正常产生中断,但是一旦使能警报中断,这里警报中断时间比秒中断时间长的多,但是秒中断来的时候,警报中断标志也产生了,这是何故?请高手指点?

回复评论 (6)

能否将你的初始化代码贴出来。

                                  
点赞  2007-1-8 10:57

源代码

 RTC_PrescalerConfig(0x8000);  //RTC has its own clock of 32k Hz
   EIC_IRQChannelConfig(RTC_IRQChannel, ENABLE);
   EIC_IRQChannelPriorityConfig(RTC_IRQChannel,1);
   EIC_IRQConfig(ENABLE); 
   RTC_ITConfig(RTC_GIT|RTC_AIT|RTC_SIT, ENABLE);
   RTC_ClearCounter(); 
   RTC_AlarmConfig(RTC_CounterValue()+10);
   while(1);
初始化,如上,每次秒中断来的时候,报警中断也会来,即报警中断标志也会被置位,请ST_ARM 给予指点?
点赞  2007-1-15 14:01

关于每次秒中断来时,报警中断也会来的问题

                                 实际程序烧写到芯片内部运行时,不会发生这种现象,这是因为仿真停顿造成的时间缘故,如果你将报警时间从10变成100,或更大,就没有了。
点赞  2007-1-16 11:02

烧写到内部flash问题还是存在?

                                 把程序烧写到内部flash问题还是存在,代码就是如上,在rtc中断里秒中断来时候,报警中断还是跟秒中断一起来,特郁闷!请ST_ARM 帮忙分析下?
点赞  2007-1-24 15:15

这是我使用的代码

main.c文件:

#include "71x_lib.h"

/* Define the RTC prescaler 0x8000 to have 1 second basic clock */
#define RTC_Prescaler 32768 

int main (void)
{
    RTC_ITConfig(RTC_GIT | RTC_SIT | RTC_AIT, DISABLE );    // Disable Second and Alarm Interrupt

    RTC_FlagClear ( RTC_OWIR );
    RTC_FlagClear ( RTC_AIR );
    RTC_FlagClear ( RTC_SIR );
    RTC_FlagClear ( RTC_GIR );                        // Clear Pending Flags

    RTC_PrescalerConfig ( RTC_Prescaler );            // Configure RTC prescaler
    RTC_CounterConfig (0x00);                        // RTC_ClearCounter();
    RTC_AlarmConfig(RTC_CounterValue() + 20);
    RTC_ITConfig(RTC_GIT | RTC_SIT | RTC_AIT, ENABLE );    // Enable Second and Alarm Interrupt

    EIC_IRQChannelConfig( RTC_IRQChannel, ENABLE );    // Enable RTC IRQ channel
    EIC_IRQChannelPriorityConfig( RTC_IRQChannel, 1);
    EIC_IRQConfig( ENABLE );
    GPIO_Config (GPIO0, 0x2C, GPIO_OUT_PP);            // Configure Port 0 pins
    GPIO0->PD = 0x0000;

    while (1);
}

71x_it.c文件中的
void RTC_IRQHandler(void)
{
#ifdef _RTC
    if ( RTC_FlagStatus ( RTC_SIR ) == SET ) {
        RTC_FlagClear ( RTC_SIR );                        // Clear the SIR & GIR RTC flags
        GPIO_BitWrite(GPIO0, 2, ~GPIO_BitRead(GPIO0, 2));
    }

    if ( RTC_FlagStatus ( RTC_AIR ) == SET ) {
        RTC_FlagClear ( RTC_AIR );                        // Clear the SIR & GIR RTC flags
        RTC_AlarmConfig(RTC_CounterValue() + 20);
        GPIO_BitWrite(GPIO0, 3, ~GPIO_BitRead(GPIO0, 3));
    }

    RTC_FlagClear ( RTC_GIR );
#endif
}

71x_conf.h文件

#define RCCU_Main_Osc 4000000

/* Comment the lines below corresponding to unwanted peripherals */
#define _EIC

#define _GPIO
#define _GPIO0
/* #define _GPIO1 */
/* #define _GPIO2 */

#define _RTC


你可以对照这个代码比较一下,判别你的问题在哪里。
点赞  2007-1-25 16:08

喔,有价值的代码

                                 很好的参考。多谢ST_ARM!!!
点赞  2007-1-28 23:18
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复