查看: 3032|回复: 14

[其他] 我用lptmr做定时器,遇到IO口中断后,lptmr就不工作了

[复制链接]
  • TA的每日心情
    开心
    2024-7-31 10:09
  • 签到天数: 392 天

    连续签到: 1 天

    [LV.9]以坛为家II

    45

    主题

    1338

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3163
    最后登录
    2024-12-27
    发表于 2015-4-29 08:53:15 | 显示全部楼层 |阅读模式
    我用lptmr做定时器,遇到IO口中断后,lptmr就不工作了,这个有没有人遇到过,是什么原因?其他的中断都能过运行,就是定时器不进中断了,怎么回事???
    我知道答案 目前已有14人回答
    今天天气不错!签到!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-31 10:09
  • 签到天数: 392 天

    连续签到: 1 天

    [LV.9]以坛为家II

    45

    主题

    1338

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3163
    最后登录
    2024-12-27
     楼主| 发表于 2015-4-29 09:18:24 | 显示全部楼层
    不按键,一切都工作正常,一按键,lptmr就停止了
    今天天气不错!签到!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-11-24 10:19
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    50

    主题

    1028

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2870
    最后登录
    1970-1-1
    发表于 2015-4-29 09:29:22 | 显示全部楼层
    把相关代码贴出来让大伙分析下
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-31 10:09
  • 签到天数: 392 天

    连续签到: 1 天

    [LV.9]以坛为家II

    45

    主题

    1338

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3163
    最后登录
    2024-12-27
     楼主| 发表于 2015-4-29 09:35:50 | 显示全部楼层
    void lptmr_init(int count, int clock_source)
    {
        SIM_SCGC5 |= SIM_SCGC5_LPTMR_MASK;
        LPTMR0_CSR &= ~LPTMR_CSR_TEN_MASK;
    //    SIM_SCGC6 |= SIM_SCGC6_RTC_MASK;
    //    SIM_SOPT1 |= SIM_SOPT1_OSC32KSEL(2); // ERCLK32 is RTC OSC CLOCK

    //    RTC_CR |= RTC_CR_OSCE_MASK |
    //              RTC_CR_CLKO_MASK |
    //              RTC_CR_SC8P_MASK  ;

        LPTMR0_PSR = ( LPTMR_PSR_PRESCALE(0) // 0000 is div 2
                     | LPTMR_PSR_PBYP_MASK  // LPO feeds directly to LPT
                     | LPTMR_PSR_PCS(clock_source)) ; // use the choice of clock
      //  if (clock_source== 0)
      //    printf("\n LPTMR Clock source is the MCGIRCLK \n\r");
      //  if (clock_source== 1)
      //    printf("\n LPTMR Clock source is the LPOCLK \n\r");
      //  if (clock_source== 2)
      //    printf("\n LPTMR Clock source is the ERCLK32 \n\r");
      //  if (clock_source== 3)
      //    printf("\n LPTMR Clock source is the OSCERCLK \n\r");
                
        LPTMR0_CMR = LPTMR_CMR_COMPARE(count);  //Set compare valuecount 499
       

    //    LPTMR0_CSR =(  LPTMR_CSR_TCF_MASK   // Clear any pending interrupt
    //                 | LPTMR_CSR_TIE_MASK   // LPT interrupt enabled
    //                 | LPTMR_CSR_TPS(0)     //TMR pin select
    //                 |!LPTMR_CSR_TPP_MASK   //TMR Pin polarity
    //                 |!LPTMR_CSR_TFC_MASK   // Timer Free running counter is reset whenever TMR counter equals compare
    //                 |!LPTMR_CSR_TMS_MASK   //LPTMR0 as Timer
    //                );
        LPTMR0_CNR = 0;               
            LPTMR0_CSR |=  LPTMR_CSR_TCF_MASK;        //清除中断标志        
        LPTMR0_CSR = (LPTMR_CSR_TCF_MASK | LPTMR_CSR_TIE_MASK);        //LPTMR0中断允许
            LPTMR0_CSR |= LPTMR_CSR_TEN_MASK;   //Turn on LPT and start counting
       
        set_irq_priority((INT_LPTimer-16), 3);  
        enable_irq(INT_LPTimer - 16);
    }
    今天天气不错!签到!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-31 10:09
  • 签到天数: 392 天

    连续签到: 1 天

    [LV.9]以坛为家II

    45

    主题

    1338

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3163
    最后登录
    2024-12-27
     楼主| 发表于 2015-4-29 09:36:21 | 显示全部楼层
    void LPTMR0_ISR(void)
    {
      // enable timer
      // enable interrupts
      // clear the flag
        printf("\PPPPP\n\r");
        LPTMR0_CSR |=  LPTMR_CSR_TCF_MASK;   // write 1 to TCF to clear the LPT timer compare flag
    //    LPTMR0_CSR = ( LPTMR_CSR_TEN_MASK | LPTMR_CSR_TIE_MASK | LPTMR_CSR_TCF_MASK );
    //           Clear_WDT();                                                //Watchdog Timer
        if(++uT500ms_cnt >= TxCycle)        //采集周期到       
        {
            uT500ms_cnt = 0;
            fConverst=1;                                //开始温度转换         
            fCheck=0;
            fRFState=TxRF;                                //需射频发送                                       
        }
    }
    今天天气不错!签到!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-31 10:09
  • 签到天数: 392 天

    连续签到: 1 天

    [LV.9]以坛为家II

    45

    主题

    1338

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3163
    最后登录
    2024-12-27
     楼主| 发表于 2015-4-29 09:37:03 | 显示全部楼层
    平时不按键,每次中断输出PPPPP,一按键,就停了
    今天天气不错!签到!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-31 10:09
  • 签到天数: 392 天

    连续签到: 1 天

    [LV.9]以坛为家II

    45

    主题

    1338

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3163
    最后登录
    2024-12-27
     楼主| 发表于 2015-4-29 09:38:29 | 显示全部楼层
    void key1_BAT_interrupt_init(void)   //PortC_irq_no
    {   
        PORTC_ISFR = PORT_ISFR_ISF(0x0009);  /* Clear interrupt status flag */
        KEY1_PCR |= PORT_PCR_IRQC(0x0A);  //falling_adge
        KEY2_PCR |= PORT_PCR_IRQC(0x0A);  //falling_adge
        BAT_PCR  |= PORT_PCR_IRQC(0X0B);  //edge trigging
    //    NVIC_IPR7 = (uint32_t)((NVIC_IPR7 & (uint32_t)~(uint32_t)(
    //               NVIC_IP_PRI_31(0x7F)
    //              )) | (uint32_t)(
    //               NVIC_IP_PRI_31(0x80)
    //              ));
        set_irq_priority(31, 3);
        enable_irq(31);   //enable interrupt
    //    PORTA_PCR12 = PORT_PCR_MUX(0x1)|PORT_PCR_IRQC(0x08) ;  //GPIO,logic 0
    //    PORTA_PCR13 = PORT_PCR_MUX(0x1)|PORT_PCR_IRQC(0x08) ;  //GPIO,logic 0
    }
    今天天气不错!签到!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-31 10:09
  • 签到天数: 392 天

    连续签到: 1 天

    [LV.9]以坛为家II

    45

    主题

    1338

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3163
    最后登录
    2024-12-27
     楼主| 发表于 2015-4-29 09:38:50 | 显示全部楼层
    void PORTC_PORTD_ISR(void)
    {
         if (KEY1_PCR & (PORT_PCR_ISF_MASK))                                 
         {                                
            time_delay_ms(30);                                             
            if (key1StateGet() == 0)
            {
                f_key1 = 1;                                                  
            }
            KEY1_PCR |= PORT_PCR_ISF_MASK;
    //        PORTC_ISFR = PORT_ISFR_ISF(0x0001);
        }
       
        if (KEY2_PCR & (PORT_PCR_ISF_MASK))                                 
         {                                
            time_delay_ms(30);                                             
            if (key2StateGet() == 0)
            {
                f_key2 = 1;                                                  
            }
            PORTC_ISFR = PORT_ISFR_ISF(0x0004);                                 
        }
       
        if (BAT_PCR& (PORT_PCR_ISF_MASK))
        {        
            if(batstateGet()==1)
            {   
                f_bat_in=1;
                PORTC_ISFR = PORT_ISFR_ISF(0x0008);
            }
            else
            {
                f_bat_out=1;
                PORTC_ISFR = PORT_ISFR_ISF(0x0008);
            }        
        }
       
    }
    今天天气不错!签到!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-31 10:09
  • 签到天数: 392 天

    连续签到: 1 天

    [LV.9]以坛为家II

    45

    主题

    1338

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3163
    最后登录
    2024-12-27
     楼主| 发表于 2015-4-29 09:39:18 | 显示全部楼层
    cxtarm 发表于 2015-4-29 09:29
    把相关代码贴出来让大伙分析下

    分析一下,一个LPTMR中断,一个按键中断
    今天天气不错!签到!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-31 10:09
  • 签到天数: 392 天

    连续签到: 1 天

    [LV.9]以坛为家II

    45

    主题

    1338

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3163
    最后登录
    2024-12-27
     楼主| 发表于 2015-4-29 09:39:57 | 显示全部楼层
    cxtarm 发表于 2015-4-29 09:29
    把相关代码贴出来让大伙分析下

    有没有这种现象???
    今天天气不错!签到!
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-9-12 18:32 , Processed in 0.110833 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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