打印
[Kinetis]

KE02Z64VLD4 ,,,,RTC进不了中断

[复制链接]
3016|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xujunhb|  楼主 | 2014-11-10 16:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
用的这个库里的程序kexx_drv_lib\build\keil\ke02\RTC_demo,用的内部晶振#define USE_FEI ,,RTC时钟源配置是pRTC_Config->u16ModuloValue = 999,,,,pRTC_Config->bClockSource   = RTC_CLKSRC_BUS;      其他的什么都没改,就是进不了中断,但是RTC->CNT会加到999后自动清零,中断标志位一直为0,
ISR.H里面#undef  VECTOR_036
#define VECTOR_036      RTC_Isr     /*!< Vector 36 points to RTC interrupt service routine */

extern void RTC_Isr(void);
求解

相关帖子

沙发
FSL_TICS_Jeremy| | 2014-11-10 17:23 | 只看该作者
你好,楼主!
你的意思例程有问题呢,无**常进入到RTC中断函数中?

使用特权

评论回复
板凳
xujunhb|  楼主 | 2014-11-10 18:38 | 只看该作者
FSL_TICS_Jeremy 发表于 2014-11-10 17:23
你好,楼主!
你的意思例程有问题呢,无**常进入到RTC中断函数中?

也不是说例程有问题,由于板子上没画晶振,用的内部晶振,目前没找到问题,看你们有解决的办法没有

使用特权

评论回复
地板
qqljhang| | 2014-11-10 21:41 | 只看该作者
RTC中断优先级设置没?  全局 中断开关开了没?    中断向量表号放进PRM里了没?      

使用特权

评论回复
5
xujunhb|  楼主 | 2014-11-11 10:53 | 只看该作者
qqljhang 发表于 2014-11-10 21:41
RTC中断优先级设置没?  全局 中断开关开了没?    中断向量表号放进PRM里了没?        ...

优先级设置了,对应的中断和全局中断开了,我用的keil ,jlink转的SWD调试的,编译时勾了MicrLib,不勾的话编译通不过,busclkOUT可以输出,拿示波器测得,始终进不了中断,还有一点就是拔掉烧写器后上电busclkOUT不输出了,程序没运行

使用特权

评论回复
6
xujunhb|  楼主 | 2014-11-11 10:54 | 只看该作者
FSL_TICS_Jeremy 发表于 2014-11-10 17:23
你好,楼主!
你的意思例程有问题呢,无**常进入到RTC中断函数中?

优先级设置了,对应的中断和全局中断开了,我用的keil ,jlink转的SWD调试的,编译时勾了MicrLib,不勾的话编译通不过,busclkOUT可以输出,拿示波器测得,始终进不了中断,还有一点就是拔掉烧写器后上电busclkOUT不输出了,程序没运行

使用特权

评论回复
7
FSL_TICS_ZJJ| | 2014-11-11 10:59 | 只看该作者
楼主你好!
你RTC的中断是怎么配置的,
当你计数满的时候,RTIF标志有没有置位?
先检查下配置,以及中断标志情况。

使用特权

评论回复
8
xujunhb|  楼主 | 2014-11-11 11:14 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-11-11 10:59
楼主你好!
你RTC的中断是怎么配置的,
当你计数满的时候,RTIF标志有没有置位?

你好,RTIF置1了,但由于进不了中断函数,就没清掉一直保持,还有个问题就是我让BUSclkOUT输出,DEBUG时是有输出的,拔掉JLINK后,再上电就没输出了,感觉像没运行啊
int main (void)
{
    uint8_t u8Ch;
    uint16_t u16ModuloValue;
    RTC_ConfigType  sRTCConfig;
    RTC_ConfigType  *pRTC_Config=&sRTCConfig;
    sysinit();
    LED0_Init();  

    u16ModuloValue = 999;
    pRTC_Config->u16ModuloValue = u16ModuloValue;
    pRTC_Config->bInterruptEn   = RTC_INTERRUPT_ENABLE;     /*!< enable interrupt */
    pRTC_Config->bClockSource   = RTC_CLKSRC_BUS;          /*!< clock source is 1khz */
    pRTC_Config->bClockPresaler = RTC_CLK_PRESCALER_100;    /*!< prescaler is 100 */
    RTC_SetCallback(RTC_Task);
        RTC_Init(pRTC_Config);
     
        while(1)
        {
        }
}
void RTC_Task(void)
{
    LED0_Toggle();      /*!< toggle LED1 */
}

使用特权

评论回复
9
FSL_TICS_ZJJ| | 2014-11-11 11:55 | 只看该作者
xujunhb 发表于 2014-11-11 11:14
你好,RTIF置1了,但由于进不了中断函数,就没清掉一直保持,还有个问题就是我让BUSclkOUT输出,DEBUG时 ...

我这边测下,待会回复你啊
如果标志都置了,但是不能进中断,就是程序问题。
你要在中断中加断点看。
先解决中断进入问题,待会再帮你看下载不能输出的问题,下载你要下到flash里面。

使用特权

评论回复
10
xujunhb|  楼主 | 2014-11-11 13:02 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-11-11 11:55
我这边测下,待会回复你啊
如果标志都置了,但是不能进中断,就是程序问题。
你要在中断中加断点看。

中断加断点进不去,同时我在中断中加了testcnt++,也没加,下载我选择了download to flash 了,还是一样的情况,是不是不能勾选MicrLib额,不勾的话编译通不过

使用特权

评论回复
11
FSL_TICS_ZJJ| | 2014-11-11 15:38 | 只看该作者
楼主你好!
我在原来代码的基础上,修改时钟模式为FEI,如下:

主程序修改和你一样, u16ModuloValue = 999;//0x09;
然后在RTC的中断中设置断点,能够正常进断点:

你和我的寄存器对一下,看看是不是一样,你除了这两点修改,有没有改其他地方。
另外,如果你用的是FRDM-KE02的板子,建议你用opensda下载试试。
如果还有问题,欢迎继续交流。

使用特权

评论回复
12
xujunhb|  楼主 | 2014-11-11 18:46 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-11-11 15:38
楼主你好!
我在原来代码的基础上,修改时钟模式为FEI,如下:

你好,我用的不是FRDM-KE02,是自己做的,时钟我也是修改为FEI,今天供应商商来看了下,没找到什么问题,他怀疑是板子问题,但是MCU可以跑起来,就是进不去中断,我先自己看下吧。

使用特权

评论回复
13
xujunhb|  楼主 | 2014-11-11 20:47 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-11-11 15:38
楼主你好!
我在原来代码的基础上,修改时钟模式为FEI,如下:

你好,问题解决了,应该是板子问题,用飞思卡尔的开发板是可以的

使用特权

评论回复
14
qqljhang| | 2014-11-11 21:29 | 只看该作者
void g_v_initRTI(void)
{
        uint8_t s_u8_howManyMs_DMS = 0;   //
        s_u8_howManyMs_DMS = ((CN_CTRLTORQUE_PERIOD_US * 1000)/(1000L * CN_OSC_PERIOD_NS)) - 1;
        CPMURTI_RTDEC      = 1;//0-Binary based divider value. See Table 8-11;        1-Decimal based divider value. See Table 8-12
        //////////////////////////////
        //here is 1000us
        CPMURTI_RTR6       = 0;//
        CPMURTI_RTR5       = 0;////6:4-These bits select the prescale rate for the RTI
        CPMURTI_RTR4       = 0;//
       
        CPMURTI_RTR3       = ((0x01 << 3) & s_u8_howManyMs_DMS) >> 3;//
        CPMURTI_RTR2       = ((0x01 << 2) & s_u8_howManyMs_DMS) >> 2;////3:0-These bits select the modulus counter target value to provide additional granularity
        CPMURTI_RTR1       = ((0x01 << 1) & s_u8_howManyMs_DMS) >> 1;////
        CPMURTI_RTR0       = ((0x01 << 0) & s_u8_howManyMs_DMS) >> 0;//

       
        ///////////////////////////////

        CPMUCLKS_RTIOSCSEL = 1;//0-RTI clock source is IRCCLK.        1-RTI clock source is OSCCLK.//internal RC OC 1MHz
        CPMUINT_RTIE       = 1;//1-enable interrupter,0-disable
}
这是我的一个初始化程序,你看看有无启示

使用特权

评论回复
15
FSL_TICS_ZJJ| | 2014-11-12 09:19 | 只看该作者
xujunhb 发表于 2014-11-11 20:47
你好,问题解决了,应该是板子问题,用飞思卡尔的开发板是可以的

原来是自己的板子。
那么你要检查下你的原理图。
NMI引脚加上拉,SWD接口参考KL的快速指南第2章。

使用特权

评论回复
16
FSL_TICS_ZJJ| | 2014-11-12 09:19 | 只看该作者
xujunhb 发表于 2014-11-11 20:47
你好,问题解决了,应该是板子问题,用飞思卡尔的开发板是可以的

另外,如果这个问题不是本事RTC代码问题,建议你先结贴。
如果是板子问题,可以重新发个贴交流。

使用特权

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

本版积分规则

11

主题

54

帖子

0

粉丝