时钟基准
STM32CubeMX默认会将Systick作为时钟基准,也可以手动指定其他定时器。
对于裸机来说,保持时钟 基准为Systick即可,但是建议将Systick的中断优先级调至最高。
对于RTOS,建议指定其他定时器作为时钟基准,并且将该定时器的中断优先级调至最高。
从当前 generator 的角度,这一页真正决定的主要是 PlatformInit(...) 前那一行 timebase 实例构造形状。
示例
代码生成工具会根据STM32CubeMX的时钟配置生成如下代码:
// Systick 作为时钟基准
STM32Timebase timebase;
// 定时器作为时钟基准
STM32TimerTimebase timebase(&htimX); // X 为时钟基准的定时器
当前 generator 覆盖范围
当前 GeneratorCodeSTM32.py 在 timebase 这一项的主要行为是:
Timebase.Source == SysTick时生成STM32Timebase timebase;Timebase.Source为TIMx / LPTIMx / HRTIMx时,生成STM32TimerTimebase timebase(&hxxx);- 随后
PlatformInit(...)的参数是否为空、还是包含软件定时器优先级/栈深度,取决于当前SYSTEM(裸机 / FreeRTOS / ThreadX)。
使用
// 获取微秒级时间戳
LibXR::Timebase::GetMicroseconds();
// 获取毫秒级时间戳
LibXR::Timebase::GetMilliseconds();