查看: 3062|回复: 9

[求助] LLS低功耗模式唤醒问题

[复制链接]

该用户从未签到

2

主题

12

帖子

0

注册会员

Rank: 2

积分
53
最后登录
2019-4-29
发表于 2015-4-13 14:18:59 | 显示全部楼层 |阅读模式
我在用KL25 调试低功耗模式LLS这一部分,采用外部中断引脚唤醒,可是一直没有反应,不知道是什么问题,请各位大侠帮我看看配置是否正确。
软件开发工具codewarrior10.5,开发板FRDM-KL25Z,采用PE配置run模式下core clock48MHz,bus clock 24MHz,程序如下:
int main(void)
{

  /*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/
  PE_low_level_init();
  /*** End of Processor Expert internal initialization.                    ***/

  SIM_SCGC5 = SIM_SCGC5_PORTD_MASK;

  PORTD_PCR6 =(PORT_PCR_ISF_MASK | //clear flag if there
               PORT_PCR_MUX(01) | //set pin functionality -GPIO
               PORT_PCR_IRQC(0x0A)| //falling edge interrupt enable
               PORT_PCR_PE_MASK | // pull enable
               PORT_PCR_PS_MASK); // pullup enable
  /* Set the LLWU pin enable bits to enable the PORTE1 input
  * to be a wake-up source.
  * WUPE15 is used in this case since it is associated with PTD6.  
  */

  LLWU_PE4 = LLWU_PE4_WUPE15(2); //falling edge detection

  MCG_C6 &= ~MCG_C6_CME0_MASK; //CME=0 clock monitor disable

  enter_lls();

  if (LLWU_F2 & LLWU_F2_WUF15_MASK)
       {
              LLWU_F2 |= LLWU_F2_WUF15_MASK;  
       }

  Blue_LED_SetVal(Blue_LED_DeviceData);
  Green_LED_SetVal(Green_LED_DeviceData);
  Red_LED_SetVal(Red_LED_DeviceData);
}
void enter_lls(void)
{
  volatile uint32 dummyread;

  SMC_PMPROT |= SMC_PMPROT_ALLS_MASK;   
  SMC_PMCTRL &= ~SMC_PMCTRL_STOPM_MASK;  
  SMC_PMCTRL |=  SMC_PMCTRL_STOPM(0x3);  

  dummyread = SMC_PMCTRL;
  SCB_SCR |= SCB_SCR_SLEEPDEEP_MASK;  

  asm("WFI");
}
我知道答案 目前已有9人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2015-4-13 16:09:29 | 显示全部楼层
    楼主没有开启中断、优先级设置等。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    124

    主题

    3600

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5781
    最后登录
    1970-1-1
    发表于 2015-4-14 09:58:29 | 显示全部楼层
    初始化LLWU外部引脚的步骤如下代码所示,改代码来自于KL25_lowpower_code,你可以浏览例程代码分享了解一下。https://www.nxpic.org.cn/module/forum/thread-555664-1-1.html
    1. /*******************************************************************************************************/
    2. void LLWU_Init(void)
    3. {
    4. #ifdef CMSIS
    5.           NVIC_EnableIRQ(LLW_IRQn);
    6.                 NVIC_EnableIRQ(LPTimer_IRQn);
    7. #else
    8.     enable_irq(LLWU_irq_no);
    9.     enable_irq(LPTMR_irq_no);
    10. #endif

    11.     llwu_configure(0x0080/*PTC3*/, LLWU_PIN_RISING, 0x1);
    12. }
    复制代码



    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    12

    帖子

    0

    注册会员

    Rank: 2

    积分
    53
    最后登录
    2019-4-29
     楼主| 发表于 2015-4-16 14:50:58 | 显示全部楼层
    FSL_TICS_ZP 发表于 2015-4-14 09:58
    初始化LLWU外部引脚的步骤如下代码所示,改代码来自于KL25_lowpower_code,你可以浏览例程代码分享了解一下 ...

    我使用的是PE生成的代码,中断函数都应该在event.c文件里面加入。我参考了官方提供的代码PEx_low_power_demo,该代码采用了PE,并且在event.c里面生成了有关LLWU的中断函数,
    void Cpu_OnLLSWakeUpINT(void)
    {
      /* Write your code here ... */
        SIM_SCGC5 |= SIM_SCGC5_LPTMR_MASK;
        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  );
    }
    但是我的project里面并没有生成这个中断函数,不知道是哪里没有配置到位,也不知道如何添加LLWU的中断。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    124

    主题

    3600

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5781
    最后登录
    1970-1-1
    发表于 2015-4-17 09:25:04 | 显示全部楼层
    再这里配置。 2015-04-17_9-24-19.jpg
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    12

    帖子

    0

    注册会员

    Rank: 2

    积分
    53
    最后登录
    2019-4-29
     楼主| 发表于 2015-4-20 17:41:48 | 显示全部楼层

    我用code warrior10.5生成的KL25的PE工程中,在CPU的配置里面并没有Allowed power modes这一栏
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    12

    帖子

    0

    注册会员

    Rank: 2

    积分
    53
    最后登录
    2019-4-29
     楼主| 发表于 2015-4-20 17:51:38 | 显示全部楼层

    你的QQ是多少呢,我的是385109959,希望你能加我,这样比较方便讨论问题
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    12

    帖子

    0

    注册会员

    Rank: 2

    积分
    53
    最后登录
    2019-4-29
     楼主| 发表于 2015-4-20 18:05:44 | 显示全部楼层

    如果我的软件中不能生成Allowed power modes,如果LLWU属于NMI中断,我是否可以在event.c中生成的NMI中断函数中写LLWU中断,好纠结啊,希望大侠给予指点,小妹不胜感激啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    124

    主题

    3600

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5781
    最后登录
    1970-1-1
    发表于 2015-5-13 17:29:00 | 显示全部楼层
    你的问题现在解决啊吗?如无,留贴讨论
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    124

    主题

    3600

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5781
    最后登录
    1970-1-1
    发表于 2015-5-13 17:29:09 | 显示全部楼层
       非常感谢你关于Kinetis的技术问题。如果你没有其他问题,我们将此帖默认为已解决.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-24 08:12 , Processed in 0.108781 second(s), 31 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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