查看: 3546|回复: 1

[已解决] 请高手帮我分析一下,KE02实现RTC和PIT的时间都不准,谢谢(已解决)

[复制链接]

该用户从未签到

25

主题

64

帖子

0

新手上路

Rank: 1

积分
21
最后登录
1970-1-1
发表于 2013-11-9 14:55:09 | 显示全部楼层 |阅读模式
 请高手帮我分析一下下面的程序,单片机用的是KE02,开发工具是IAR和JLINK,外接16M的晶振(波形正确),实现RTC和PIT的1秒中断,结果用示波器测出来的时间都不准,谢谢,程序如下:
 
void ICS_Init(void)
{
    //OSC寄存器设置    
    OSC->CR= 0 | OSC_CR_RANGE_MASK            //设置为高频率范围       
                             | OSC_CR_OSCSTEN_MASK       //设置为停止模式下时钟有效 
                             | OSC_CR_OSCOS_MASK           //时钟源选择为外部晶振
                             | OSC_CR_OSCEN_MASK;          //OSC模块使能       
    while(!(OSC->CR & OSC_CR_OSCINIT_MASK));    //等待XOSC初始化完成

    //ICS寄存器设置
   ICS->C1 =(0x04)& (~ICS_C1_IREFS_MASK);                           //选择外部时钟      
   ICS->C1 |= ICS_C1_RDIV(4);                                  //选择512分频
  asm(
          "nop \n"
          "nop \n"
    );       
    while(ICS->S & ICS_S_IREFST_MASK);             //等待参考时钟变为外部时钟sss
    ICS->C2 =0x20;                                                        //默认值
}
/******************************************************************************/
void RTC_Init(void)
{
    SIM->SCGC     |= SIM_SCGC_RTC_MASK;         //RTC时钟门控使能
    NVIC_EnableIRQ(RTC_IRQn);
    RTC->MOD = 0x09;                                                  //设置时间为1秒            
    //
     RTC->SC= 0 | RTC_SC_RTIE_MASK                 //中断使能
                             | RTC_SC_RTIF_MASK                 //清除中断标志         
                             | RTC_SC_RTCLKS(1)                 //RTC时钟选择:内部1K低功耗时钟 
                             | RTC_SC_RTCPS(6);                  //RTC分频数选择:100 
}
/***************************************************************************/
void RTC_Isr(void) 
{
    RTC->SC |= RTC_SC_RTIF_MASK;                 //清除中断标志
    GPIO_PinToggle(LED_ERR);                            //翻转管脚电平
}
/***************************************************************************/
void PIT0_Init(void)
{  
    SIM->SCGC |= SIM_SCGC_PIT_MASK;             //PIT时钟门控使能                  
     NVIC_EnableIRQ(PIT_CH0_IRQn);           //使能PIT0中断    
    }    
    //  
    PIT->MCR &=(0x06)&(~PIT_MCR_MDIS_MASK);               //PIT定时器使能                                                                                                                           
    PIT->CHANNEL[0].LDVAL = 15999999;              //设置定时周期1s
    PIT->CHANNEL[0l].TCTRL =  PIT_TCTRL_TIE_MASK               //使能PIT中断                  
                                                         | PIT_TCTRL_TEN_MASK;           //使能定时器 
    PIT->CHANNEL[0].TFLG = 0;
}
/***************************************************************************/
void PIT_Ch0Isr(void) 
{   
       PIT->CHANNEL[0].TFLG |= PIT_TFLG_TIF_MASK;                       //清除中断标志
      GPIO_PinToggle(LED_READY);                                                      //翻转管脚电平
}
/***************************************************************************/
int main (void)
{    
     PIT0_Init();
     RTC_Init();
     while(1)
     {
     } 
}
//
实际上用示波器测出的波形在1.3s左右




 
我知道答案 目前已有0人回答
回复

使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2013-11-11 09:06:40 | 显示全部楼层

    回复:请高手帮我分析一下,KE02实现RTC和PIT的时间都不准,谢谢

    请问你下载www.nxpic.org.cn/bbs/article_175_563912.html帖子中的代码,是否能够得到你想要的精确时间?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-19 09:07 , Processed in 0.087862 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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