Timer1保留用于Freertos Ticks,它正在使用32 kHz时钟运行,其分辨率为约30.5微秒。如果我想在微秒的较小分辨率下获取当前的执行时间,那么在其中存储16/32 MHz Xtal或48/96 MHz PLL刻度的地方?我唯一可以发现更改RTOS时钟的地方是DG_CONFIGUSE_LP_CLK在CUSTOM_CONFIG_QSPI.H中修改FreerTOSCONFIG.H,但似乎只选择选择是32000,32768和RCX(10.5 kHz)时钟。有没有办法将操作系统滴滴更快到更快的时钟,所以我可以使用OS_GET_TICK_COUNT来跟踪执行时间?
关键词:
设备:
嗨Envirosenjason,
Timer1是为免费RTOS提供支持的计时器,仅使用LP时钟并连续运行,您无法将该计时器的源更改为另一个时钟,以便对您的时间测量具有更大的粒度,因此该计时器的分辨率是你在帖子上提到的一个,具体取决于LP时钟。您可以通过读取CAPTIM_TIMER_VAL_REG寄存器直接读取定时器1时钟的刻度。另请确保您只读取该值并从不写它,因为这可以达到系统。关于OS_GET_TICK_COUNT()这将为您提供2毫秒的分辨率。
删除redros的勾选不会直接从LP时钟驱动,但使用预分频器将刻度缩放到2 ms分辨率使用当前配置,可以通过将ConfigTick_rate_Hz更改为更大的值来减少时间来降低。蜱虫,但你应该谨慎,因为它会影响整个操作系统,因为它将被较小或更大的蜱运行。
谢谢mt_dialog.
嗨mt_dialog,
为什么Freertos由Timer1提供支持而不是Systick?
谢谢
arm
嗨Arminl,
我相信这是因为即使设备进入睡眠模式,Timer1也经常运行,但是,由于ARM在WFI()状态下,Systick不会操作。因此,由于您已经有一个不断运行的计时器,并且专用于保留时间,您可以使用此计时器勾选FreertOS,而不是将另一个定时器与该操作的Systick模块相同。
谢谢mt_dialog.