KSDK1.2中带双指针的函数只能在main()中使用吗?

2020-02-19 20:51发布

看例程HelloWorld用LPTMR初始化一定时器:
  // LPTMR configurations
  lptmr_user_config_t lptmrConfig =
  {
    .timerMode = kLptmrTimerModeTimeCounter,
    .freeRunningEnable = false,
    .prescalerEnable = true,
    .prescalerClockSource = kClockLptmrSrcLpoClk,
    .prescalerValue = kLptmrPrescalerDivide2,
    .isInterruptEnabled = true,
  };
  lptmr_state_t lptmrState;    // LPTMR driver state information

  LPTMR_DRV_Init(LPTMR0_IDX, &lptmrState, &lptmrConfig);    // Initialize LPTMR
  LPTMR_DRV_SetTimerPeriodUs(LPTMR0_IDX, TMR_PERIOD);       // Set timer period for TMR_PERIOD seconds
  LPTMR_DRV_InstallCallback(LPTMR0_IDX, lptmr_call_back);   // Install interrupt call back function for LPTMR
  LPTMR_DRV_Start(LPTMR0_IDX);    // Start LPTMR

将这段代码放在main()中可以正确初始化LPTMR,可在中断中闪烁一LED。
但将这段代码放在一函数中,如:
void lptmr_func(void)
{
  // LPTMR configurations
  lptmr_user_config_t lptmrConfig =
  {
    .timerMode = kLptmrTimerModeTimeCounter,
    .freeRunningEnable = false,
    .prescalerEnable = true,
    .prescalerClockSource = kClockLptmrSrcLpoClk,
    .prescalerValue = kLptmrPrescalerDivide2,
    .isInterruptEnabled = true,
  };
  lptmr_state_t lptmrState;    // LPTMR driver state information

  LPTMR_DRV_Init(LPTMR0_IDX, &lptmrState, &lptmrConfig);    // Initialize LPTMR
  LPTMR_DRV_SetTimerPeriodUs(LPTMR0_IDX, TMR_PERIOD);       // Set timer period for TMR_PERIOD seconds
  LPTMR_DRV_InstallCallback(LPTMR0_IDX, lptmr_call_back);   // Install interrupt call back function for LPTMR
  LPTMR_DRV_Start(LPTMR0_IDX);    // Start LPTMR
}
再在main()中调用lptrm_func(),则无法正确初始化LPTMR。

查API Reference,原型为:


不是是否是const指针的问题?


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
xtrig
1楼-- · 2020-02-20 00:24
 精彩回答 2  元偷偷看……
FSL_TICS_ZP
2楼-- · 2020-02-20 04:50
在执行完hardware_init();后,在试试调用void lptmr_func(void);函数初始化LPTMR模块。
xtrig
3楼-- · 2020-02-20 08:57
是放在hardware_init()之后的。而且是在main()所在文件中。
xtrig
4楼-- · 2020-02-20 14:50
版主可以试试把LPTMR_DRV_Init()放在一个函数里再调用,看看效果是否和我一样。我在IAR和Keil中均试过。用的是HellowWorld例程。
FSL_TICS_ZP
5楼-- · 2020-02-20 14:58
xtrig 发表于 2015-6-16 17:28
版主可以试试把LPTMR_DRV_Init()放在一个函数里再调用,看看效果是否和我一样。我在IAR和Keil中均试过。用 ...

好的,了解,我待会试试!
FSL_TICS_ZP
6楼-- · 2020-02-20 15:32
 精彩回答 2  元偷偷看……

一周热门 更多>