查看: 2803|回复: 9

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

[复制链接]

该用户从未签到

3

主题

11

帖子

0

注册会员

Rank: 2

积分
144
最后登录
2019-7-1
发表于 2015-6-17 14:15:59 | 显示全部楼层 |阅读模式
看例程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指针的问题?


[size=13.3333339691162px]
截图00.png (60.75 KB, 下载次数: 0)

[url=][/url]

[url=][size=13.3333339691162px]相同现象还有如下:

[size=13.3333339691162px]dspi_status_t DSPI_DRV_MasterInit ( uint32_t instance, dspi_master_state_t *dspiState, const dspi_master_user_config_t  *userConfig) ;

[size=13.3333339691162px]dspi_status_t DSPI_DRV_MasterConfigureBus ( uint32_t instance, const dspi_device_t  *device, uint32_t  *calculatedBaudRate ) ;

[size=13.3333339691162px]只能在main()中才能正确初始化,一旦放在一函数并在main()中调用,即不成功。[/url]

[url=][size=13.3333339691162px]
[/url]

[url=][size=13.3333339691162px]
[/url]



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

使用道具 举报

  • TA的每日心情
    开心
    2018-1-30 19:52
  • 签到天数: 19 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    19

    主题

    628

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1511
    最后登录
    2018-5-28
    发表于 2015-6-17 14:27:38 | 显示全部楼层
    学习……
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情

    2018-10-30 22:37
  • 签到天数: 28 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    9

    主题

    435

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1107
    最后登录
    2020-8-28
    发表于 2015-6-17 16:33:04 | 显示全部楼层
    又是这看瞎眼的绿色背景…… ctrl+w 已送。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    11

    帖子

    0

    注册会员

    Rank: 2

    积分
    144
    最后登录
    2019-7-1
     楼主| 发表于 2015-6-17 16:56:35 | 显示全部楼层
    谢楼上秘笈,下次必用
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    11

    帖子

    0

    注册会员

    Rank: 2

    积分
    144
    最后登录
    2019-7-1
     楼主| 发表于 2015-6-18 12:49:29 | 显示全部楼层
    自己顶下,FSL似乎在回避这个问题
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2015-6-18 13:56:00 | 显示全部楼层
    llxmails 发表于 2015-6-18 12:49
    自己顶下,FSL似乎在回避这个问题

    楼主一楼贴都是绿色的代码,看起来真的很费劲。
    建议楼主去除背景色。
    另外,你看的是SDK1.2哪个路径下的代码?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    11

    帖子

    0

    注册会员

    Rank: 2

    积分
    144
    最后登录
    2019-7-1
     楼主| 发表于 2015-6-18 14:37:36 | 显示全部楼层
    看例程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,原型为:
    lptmr_status_t LPTMR_DRV_Init ( uint32_t instance, lptmr_state_t *userStatePtr, const lptmr_user_config_t  *userConfigPtr );

    相同现象还有如下:
    dspi_status_t DSPI_DRV_MasterInit ( uint32_t instance, dspi_master_state_t *dspiState, const dspi_master_user_config_t *userConfig) ;
    dspi_status_t DSPI_DRV_MasterConfigureBus ( uint32_t instance, const dspi_device_t *device, uint32_t * calculatedBaudRate ) ;

    只能在main()中才能正确初始化,一旦放在一函数并在main()中调用,即不成功。

    代码为C:\Freescale\KSDK_1.2.0\examples\twrk64f120m\demo_apps\hello_world下的。IAR和Keil均试过。

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    11

    帖子

    0

    注册会员

    Rank: 2

    积分
    144
    最后登录
    2019-7-1
     楼主| 发表于 2015-6-19 11:55:36 | 显示全部楼层
    再顶起,已满足版主要求
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    11

    帖子

    0

    注册会员

    Rank: 2

    积分
    144
    最后登录
    2019-7-1
     楼主| 发表于 2015-6-19 14:33:40 | 显示全部楼层
    在阿莫论坛也发了同样的帖子,同样如沉大海,渺无音信。到底是肿么了啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2015-6-19 17:14:29 | 显示全部楼层
    llxmails 发表于 2015-6-19 14:33
    在阿莫论坛也发了同样的帖子,同样如沉大海,渺无音信。到底是肿么了啊

    好的,我试一下,然后会回复你,还请耐心等待下。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-27 16:58 , Processed in 0.106594 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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