请选择 进入手机版 | 继续访问电脑版
查看: 1352|回复: 7

[求助] MKE02Z64进入不了PIT中断

[复制链接]

该用户从未签到

1

主题

6

帖子

0

新手上路

Rank: 1

积分
26
最后登录
2021-9-30
发表于 2021-8-5 15:48:18 | 显示全部楼层 |阅读模式
根据官方SDK_2.10.0的PIT例程,设置了PIT参数,采用了内部晶振。时钟最大32M.但就是进入不了中断。请各位大佬帮我看看问题出在哪(第一次用NXP的单片机)
  1. 中断函数:
复制代码
中断配置:
    /* Init pit module */
    PIT_Init(PIT, &pitConfig);

    /* Set timer period for channel 0 */
    PIT_SetTimerPeriod(PIT, kPIT_Chnl_0, USEC_TO_COUNT(1000U, CLOCK_GetFreq(kCLOCK_BusClk)));

    /* Enable timer interrupts for channel 0 */
    PIT_EnableInterrupts(PIT, kPIT_Chnl_0, kPIT_TimerInterruptEnable);
   

    /* Enable at the NVIC */
    EnableIRQ(PIT_CH0_IRQn);
    PIT_StartTimer(PIT, kPIT_Chnl_0);
时钟配置:
  1. const ics_config_t icsConfig_BOARD_BootClockRUN =
  2.     {
  3.         .icsMode = kICS_ModeFEI,                  /* FEI - FLL Engaged Internal */
  4.         .irClkEnableMode = kICS_IrclkEnable,                     /* ICSIRCLK disabled */
  5.         .bDiv = 0x0U,                             /* Bus clock divider: divided by 1 */
  6.         .rDiv = 0x0U,                             /* FLL external reference clock divider: divided by 1 */
  7.     };
  8. const sim_clock_config_t simConfig_BOARD_BootClockRUN =
  9.     {
  10.         .busDiv = 0x1U,                           /* BUSDIV clock divider: divided by 2 */
  11.         .busClkPrescaler = 0x0U,                  /* bus clock optional prescaler */
  12.     };
  13. const osc_config_t oscConfig_BOARD_BootClockRUN =
  14.     {
  15.         .freq = 0U,                               /* Oscillator frequency: 0Hz */
  16.         .workMode = 0,                            /* Use external clock */
  17.         .enableMode = 0,                          /* Disable external reference clock */
  18.     };

  19. /*******************************************************************************
  20. * Code for BOARD_BootClockRUN configuration
  21. ******************************************************************************/
  22. void BOARD_BootClockRUN(void)
  23. {
  24.     /* Set the system clock dividers in SIM to safe value. */
  25.     CLOCK_SetSimSafeDivs();
  26.     /* Set ICS to FEI mode. */
  27.     CLOCK_BootToFeiMode(icsConfig_BOARD_BootClockRUN.bDiv);
  28.     /* Configure the Internal Reference clock (ICSIRCLK). */
  29.     CLOCK_SetInternalRefClkConfig(icsConfig_BOARD_BootClockRUN.irClkEnableMode);
  30.     /* Set the clock configuration in SIM module. */
  31.     CLOCK_SetSimConfig(&simConfig_BOARD_BootClockRUN);
  32.     /* Set SystemCoreClock variable. */
  33.     SystemCoreClock = BOARD_BOOTCLOCKRUN_CORE_CLOCK;
  34. }
复制代码



最佳答案

虚心学习_ce2a12 发表于 2021-8-10 10:56 内部时钟不管设置为32M,还是16M。用Jlink仿真都会卡死在这,如下图所示:(可惜电路设计时,没考虑外部晶振 ... 如果你要用IAR的话,除了下载SDK_2.10.0_MKE02Z64xxx4 还得 ...
回复

使用道具 举报

该用户从未签到

1

主题

6

帖子

0

新手上路

Rank: 1

积分
26
最后登录
2021-9-30
 楼主| 发表于 2021-8-5 15:49:57 | 显示全部楼层
中断函数:
  1. volatile int pitIsrFlag = 0;

  2. void PIT_CH0_IRQHandler(void)
  3. {
  4.     /* Clear interrupt flag.*/
  5.     PIT_ClearStatusFlags(PIT, kPIT_Chnl_0, kPIT_TimerFlag);
  6.     pitIsrFlag ++;

  7.     __DSB();
  8. }
复制代码
回复 支持 反对

使用道具 举报

该用户从未签到

648

主题

6301

帖子

0

超级版主

Rank: 8Rank: 8

积分
19434
最后登录
2024-3-19
发表于 2021-8-6 15:36:22 | 显示全部楼层
本帖最后由 小恩GG 于 2021-8-6 15:37 编辑

楼主你好
你只是把FEE改成了FEI? 这个直接用clock tools选择后Update Code,然后重新编译即可正常运行。
其余小的改动我看只是把源代码宏定义改回来而已。 我这边测试没啥问题

请问你是在哪块开发板上测试的? 我是在40MHz主频的FRDM-KE20Z40M开发板上测试的,你的MKE02Z64完整型号是多少?(以前有一批20MHz主频的)


frdmke02z40m_pit.zip

1.26 MB, 下载次数: 4, 下载积分: 威望 1

回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

6

帖子

0

新手上路

Rank: 1

积分
26
最后登录
2021-9-30
 楼主| 发表于 2021-8-9 16:39:19 | 显示全部楼层
小恩GG 发表于 2021-8-6 15:36
楼主你好
你只是把FEE改成了FEI? 这个直接用clock tools选择后Update Code,然后重新编译即可正常运行。
其 ...

你好,多谢你帮助。
今天我测试了你代码,还是不行。单片机完整型号是:MKE02Z64VLD4R。
时钟代码是在这个网站上配置生成的https://mcuxpresso.nxp.com/zh/clock?uvid=360473
用亮灯程序测试生成的时钟代码是没问题的。如果复制你的时钟代码,仿真会卡在这个函数
  1.   CLOCK_InitOsc0(&oscConfig_BOARD_BootClockRUN);
复制代码
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

6

帖子

0

新手上路

Rank: 1

积分
26
最后登录
2021-9-30
 楼主| 发表于 2021-8-9 16:44:39 | 显示全部楼层
配置工具生成的时钟代码
微信图片_20210809164308.png
微信图片_20210809163955.png
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

6

帖子

0

新手上路

Rank: 1

积分
26
最后登录
2021-9-30
 楼主| 发表于 2021-8-10 10:56:27 | 显示全部楼层
内部时钟不管设置为32M,还是16M。用Jlink仿真都会卡死在这,如下图所示:(可惜电路设计时,没考虑外部晶振)
Snipaste_2021-08-10_10-53-19.png
回复 支持 反对

使用道具 举报

该用户从未签到

648

主题

6301

帖子

0

超级版主

Rank: 8Rank: 8

积分
19434
最后登录
2024-3-19
发表于 2021-8-10 11:49:11 | 显示全部楼层
虚心学习_ce2a12 发表于 2021-8-10 10:56
内部时钟不管设置为32M,还是16M。用Jlink仿真都会卡死在这,如下图所示:(可惜电路设计时,没考虑外部晶振 ...

如果你要用IAR的话,除了下载SDK_2.10.0_MKE02Z64xxx4 还得另外下载MCUXpresso Config Tools, Windows installer 并安装
然后参考以下步骤在MCUXpresso Config Tools里配置代码,最后直接打开step2 workspace\pit里的IAR工程即可。
step1.jpg step2.jpg step3.jpg step4.jpg step5.jpg
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

6

帖子

0

新手上路

Rank: 1

积分
26
最后登录
2021-9-30
 楼主| 发表于 2021-8-11 12:33:00 | 显示全部楼层
小恩GG 发表于 2021-8-10 11:49
如果你要用IAR的话,除了下载SDK_2.10.0_MKE02Z64xxx4 还得另外下载MCUXpresso Config Tools, Windows in ...

多谢你的帮助。问题解决了。网页版的时钟配置,在采用内部晶振时,生成代码有问题。用MCUXpresso Config Tools这个软件生成的就没问题。顺利进入中断。一切OK.
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2024-3-19 18:27 , Processed in 0.153486 second(s), 30 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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