打印
[其他ST产品]

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

[复制链接]
3084|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
夜孤城|  楼主 | 2007-1-5 14:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ST, RTC, tc
开放RTC的通用中断和秒中断后,可以正常产生中断,但是一旦使能警报中断,这里警报中断时间比秒中断时间长的多,但是秒中断来的时候,警报中断标志也产生了,这是何故?请高手指点?
沙发
ST_ARM| | 2007-1-8 10:57 | 只看该作者

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

使用特权

评论回复
板凳
夜孤城|  楼主 | 2007-1-15 14:01 | 只看该作者

源代码

 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 给予指点?

使用特权

评论回复
地板
ST_ARM| | 2007-1-16 11:02 | 只看该作者

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

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

使用特权

评论回复
5
夜孤城|  楼主 | 2007-1-24 15:15 | 只看该作者

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

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

使用特权

评论回复
6
ST_ARM| | 2007-1-25 16:08 | 只看该作者

这是我使用的代码

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


你可以对照这个代码比较一下,判别你的问题在哪里。

使用特权

评论回复
7
gyt| | 2007-1-28 23:18 | 只看该作者

喔,有价值的代码

很好的参考。多谢ST_ARM!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

33

帖子

0

粉丝