[资料] 【经验分享】KL系列低功耗例程KEIL工程问题补丁
694 查看
1 回复
 楼主 | 发布于 2020-10-10 | 只看楼主
分享到:

1问题描述
        细心的网友可能发现,在调试KL系列的低功耗例程的KEIL工程时,比如以KL25-SC例程中lower_power_demo为例。在进入VLLSx模式的时候,功耗方面都很正常,但是在使用引脚唤醒的时候,就会发现使用KEIL工程和IAR工程还是有比较大的区别。程序中唤醒可以使用PTC3作为唤醒源,如果测试平台为FRDM-KL25,因为没有按键,可以使用一根线模拟按键。当使用IAR工程的时候,可以正常使用PTC3唤醒,程序唤醒后复位执行。但是使用keil工程的时候,使用PTC3唤醒,可以看到功耗上升了,但是没有回复到进入VLLSx前的功耗,大概只有一半,并且也没有看到串口窗口打印出复位后的信息。按道理两个程序的源程序是一样的,为什么会出现这种情况?又如何解决?
IAR测试情况:

KEIL测试情况:



 
2 解决方案
在KEIL 工程的system_MKL25Z4.c文件的void SystemInit (void) 函数开始处加上如下代码:
 if (PMC_REGSC & PMC_REGSC_ACKISO_MASK)
            PMC_REGSC |= PMC_REGSC_ACKISO_MASK;
在文件的开头加上包含文件:
       #include "common.h"
然后编译,重新烧录,就可以和IAR的唤醒情况一样了。
3.原因分析
IAR和KEIL的启动函数不一样。
IAR启动按照如下进行:
  

 
 
而KEIL的启动过程如下:
 
  
所以对于keil的启动,进入main之前没有对PEMC_REGSC中的ACKISO寄存器清位,这个位是用于针对VLLSX唤醒后释放I/O引脚以及具体的外设到正常工作模式中。
详情请查看对应的用户手册。

另外,附件中给出了修改后的lower_power_demo例程,其余比如官方的LQRUG_bme_ex2 KEIL例程的唤醒也是一样的修改方法。
关于kinetis的低功耗,这里再给大家推荐两个应用笔记:AN4470和AN4503。
有兴趣的网友可以到网站下载查看。

本帖有更多资源,需 登录 才可以下载,没有帐号?立即 注册

(0 ) (0 )
回复 举报

回复于 2020-10-10 沙发

感谢分享
(0 )
评论 (0) 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部