跳到主要内容

软件定时器

LibXR实现了一个轻量级的软件定时器,即使在裸机环境下也可以使用。

对于非裸机环境,软定时器需要指定线程优先级和堆栈深度。

示例

裸机环境下会生成以下代码,不需要传入任何参数:

PlatformInit();

对于RTOS环境,需要传入线程优先级和堆栈深度:

PlatformInit(2, 512);

第一个参数为线程优先级,第二个参数为堆栈深度。

对于线程优先级有如下定义:

  enum class Priority : uint8_t
{
IDLE = 0, ///< 空闲优先级 Idle priority
LOW = 1, ///< 低优先级 Low priority
MEDIUM = 2, ///< 中等优先级 Medium priority
HIGH = 3, ///< 高优先级 High priority
REALTIME = 4, ///< 实时优先级 Realtime priority
NUMBER = 5 ///< 优先级数量 Number of priority levels
};

配置文件

对于非裸机环境,会在User/libxr_config.yaml中生成如下配置:

software_timer:
priority: 2
stack_depth: 512

可直接修改该文件。如需应用更新配置,请执行以下任一命令以重新生成代码:
xr_cubemx_cfg -d .

xr_gen_code_stm32 -i ./.config.yaml -o ./User/app_main.cpp