本文将介绍 RT500 如何在 FreeRTOS 下修改 systick 时钟频率。
首先来看 systick 的时钟源有哪些,在 MCUXpresso 打开 freertos_hello 工程,点击配置工具,选择时钟:
可以看到 systick 的时钟源有 mainclk 分频得到,1MHz 的 LPCOSC ,RTC 时钟 32KHz ,
现在默认是使用 mainclk 198MHz ,实际上使用中并不需要很大的频率,频率高意味着功耗也会过高,现在将 systick 和 system clock 的频率都降低为 12MHz ,
在 FreeRTOSConfig.h 中添加如下宏:
在 port.c 中选择 systick 的时钟源为 system 分频后的时钟:
将 task 的内容修改下,串口循环发送:
修改后编译下载,发现并没有跑起来,进调试可以看到跑到 vTaskDelay 函数就跑出错了,这时候找到参考手册 systick config 寄存器介绍:
CPU 的时钟得比分频后的时钟高 2.5 倍以上,我们将分频后的时钟改为 4MHz :
再次编译下载就可以看到代码已经正常跑起来了,这里的主要的地方就在于这个分频后的时钟需要比主时钟低,这里的配置同样适用于裸机。
参考资料:
- 《IMXRT500RM》
用户手册包含了外设配置方法,由 NXP 官网提供下载,链接如下:
https://www.nxp.com.cn/products/processors-and-microcontrollers/arm-microcontrollers/i-mx-rt-crossover-mcus/i-mx-rt500-crossover-mcu-with-arm-cortex-m33-dsp-and-gpu-cores:i.MX-RT500?tab=Documentation_Tab
评论