定时器1是为FreeRTOS ticks保留的,它使用32 kHz时钟运行,分辨率约为30.5微秒。如果我想以微秒的分辨率获得当前的执行时间,是否有存储16/32mhzxtal或48/96mhzpll信号的地方?我能找到的唯一更改RTOS时钟的地方是自定义配置qspi.h中的dg\u configUSE\u LP\u CLK,它修改了FreeRTOSConfig.h,但似乎只有32000、32768和RCX(10.5 kHz)时钟可供选择。有没有办法把OS-tick改成更快的时钟,这样我就可以用OS-GET-tick-COUNT来跟踪执行时间?
关键词:
设备:
你好,杰森,
Timer1是为免费RTO供电的计时器,只使用LP时钟,它连续运行,您不能将此计时器的源更改为另一个时钟,以便对时间测量具有更大的粒度,因此此计时器的分辨率是您在文章中提到的取决于LP时钟的分辨率。只需读取CAPTIM\U timer\U VAL\U REG寄存器,即可直接读取定时器1时钟的滴答声。还要确保只读取值而不写入,因为这可能会稳定系统。关于OS\u GET\u TICK\u COUNT(),这将使您获得2毫秒的分辨率。
空闲RTO的滴答声不是直接从LP时钟驱动的,而是使用一个预分频器,该预分频器根据当前配置将滴答声扩展到2毫秒分辨率,您可以通过将configTICK\u RATE\u HZ更改为一个较大的值来降低该值,以减少滴答声的时间,但是您应该谨慎进行该修改,因为它将影响整个操作系统,因为它将以较小或较大的滴答声进行操作。
谢谢你的对话
嗨,MT\u dialog,
为什么FreeRTOS由Timer1而不是SysTick提供支持?
谢谢
阿明
你好,阿米尔,
我相信这是因为即使设备处于睡眠模式,定时器1也会持续工作,但在这种情况下,systick不会工作,因为ARM处于WFI()状态。因此,由于您都准备好了一个计时器,它可以持续工作,并专门用来保持时间,因此您可以使用此计时器来勾选FreeRTOS,而不是使用另一个类似systick模块的计时器来执行该操作。
谢谢你的对话