查看: 3339|回复: 5

[已解决] 关于KL25的LPTMR模块的使用

[复制链接]

该用户从未签到

32

主题

138

帖子

0

中级会员

Rank: 3Rank: 3

积分
390
最后登录
2017-12-29
发表于 2017-4-11 17:43:08 | 显示全部楼层 |阅读模式
问题:
为何我还没有对LPTMR模块初始化时他就已经反复进入中断了?
源程序:
int main(void)
/*lint -restore Enable MISRA rule (6.3) checking. */
{
  /* Write your local variable definition here */
  char Start_flag;
  /*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/
  PE_low_level_init();
  /*** End of Processor Expert internal initialization.                    ***/
  while(1)
  {
   Start_flag=getchar();
   if(Start_flag=='s')
           {
                break;   
           }
  }

  MyDacPtr = DA_PTE30_Init(NULL);            /* Initialization of DA_PTE30 component */  
  Error = DA_PTE30_SetValue(MyDacPtr, OutputData);                    /* Set converter output */      

  TPM1_Init();                        /*TPM Initialization*/
  LPTMR_Init();                        /*LPTMR Initialization*/

/*************************主循环**************************/
  while(1)
   {
    if((Count_Flag==(Length-1))||(Count_Flag>(Length-1)))
          {
                DisableInterrupts;
                for(Count_Flag=Data_Flag;Count_Flag<(Length-1);Count_Flag++)
                {
                        printf("%d\n", Sampling_Data[Count_Flag]);
                }  
                printf("\n\n\n");
                Count_Flag=0;
                Data_Flag=0;
                EnableInterrupts;
          }
        else
        {
                for(;Data_Flag<(Count_Flag-1);Data_Flag++)
                {
                        printf("%d\n", Sampling_Data[Data_Flag]);
                }  
        }
   }

  /*** Don't write any code pass this line, or it will be deleted during code generation. ***/
  /*** RTOS startup code. Macro PEX_RTOS_START is defined by the RTOS component. DON'T MODIFY THIS CODE!!! ***/
  #ifdef PEX_RTOS_START
    PEX_RTOS_START();                  /* Startup of the selected RTOS. Macro is defined by the RTOS component. */
  #endif
  /*** End of RTOS startup code.  ***/
  /*** Processor Expert end of main routine. DON'T MODIFY THIS CODE!!! ***/
  for(;;){}
  /*** Processor Expert end of main routine. DON'T WRITE CODE BELOW!!! ***/
} /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/


void LPT_Isr(void)
{
    LPT_indicator_NegVal(LPT_indicator_DeviceData);        // do this asap - show start of Switch cycle//RED LED
    LPTMR0_CSR |= LPTMR_CSR_TCF_MASK;                //clear interrupt mask       
    Channel_switch();
    printf("s");
}


LPTMR的PE配置:
LPTMR.jpg

最佳答案

胡孟龙 发表于 2017-4-15 11:42 你好,这个链接我也看了。但是并不知道为什么LPTMR会直接进入中断,我希望的是当我初始化后他才正式开启 ... 你把PE模块中的timer enable关了,然后生成代码,等你要使能timer的时候 ...
回复

使用道具 举报

该用户从未签到

723

主题

6382

帖子

0

超级版主

Rank: 8Rank: 8

积分
25448
最后登录
2025-9-4
发表于 2017-4-11 17:46:22 | 显示全部楼层
回复 支持 反对

使用道具 举报

该用户从未签到

32

主题

138

帖子

0

中级会员

Rank: 3Rank: 3

积分
390
最后登录
2017-12-29
 楼主| 发表于 2017-4-15 11:42:35 | 显示全部楼层
小恩GG 发表于 2017-4-11 17:46
请参考从零开始玩转FRDM-KL25Zhttps://www.nxpic.org.cn/module/foru ... ACFRDM-KL25Z&page=6

你好,这个链接我也看了。但是并不知道为什么LPTMR会直接进入中断,我希望的是当我初始化后他才正式开启,请问怎么做啊?
回复 支持 反对

使用道具 举报

该用户从未签到

32

主题

138

帖子

0

中级会员

Rank: 3Rank: 3

积分
390
最后登录
2017-12-29
 楼主| 发表于 2017-4-15 15:23:38 | 显示全部楼层
自己顶一下
回复 支持 反对

使用道具 举报

该用户从未签到

32

主题

138

帖子

0

中级会员

Rank: 3Rank: 3

积分
390
最后登录
2017-12-29
 楼主| 发表于 2017-4-15 18:27:56 | 显示全部楼层
自己顶、。。。
回复

使用道具 举报

该用户从未签到

723

主题

6382

帖子

0

超级版主

Rank: 8Rank: 8

积分
25448
最后登录
2025-9-4
发表于 2017-4-17 09:32:35 | 显示全部楼层
胡孟龙 发表于 2017-4-15 11:42
你好,这个链接我也看了。但是并不知道为什么LPTMR会直接进入中断,我希望的是当我初始化后他才正式开启 ...

你把PE模块中的timer enable关了,然后生成代码,等你要使能timer的时候,自己在程序中写寄存器开启。
因为你在模块中已经开启了,所以初始化后,他就会直接使能LPTMR,所以定时一到,当然就进入中断了。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-9-6 14:29 , Processed in 0.102275 second(s), 28 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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