NXP SDK 环境 freeRTOS CPU动态频率切换

动态切换CPU频率在SOC的层面比较简单,但是对于RTOS环境,切换频率后直接导致的一个问题就是之前的tick不准了。

比如做task delay,主频从600MHz降到100MHz,tick的时间基准变了,导致定时时间也会变。
实测1秒delay降频后变成6秒delay。
解决方法,见下面的code。

void set_core_100MHz(void)

    CLOCK_SetDiv(kCLOCK_AhbDiv, 5);
    SystemCoreClockUpdate();
    vPortSetupTimerInterrupt();
}

void set_core_600MHz(void)

    CLOCK_SetDiv(kCLOCK_AhbDiv, 0);
    SystemCoreClockUpdate();
    vPortSetupTimerInterrupt();
}

需要重新配置SDK的系统时间参数,以及freeRTOS的tick。
经测试,上面的代码在切换系统频率后,task delay能保持恒定时间超时返回。

简书, 郭嘉16038, 于2020.05.13

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。