libxr
Embedded C++ framework for bare-metal, RTOS and Linux
Loading...
Searching...
No Matches
LibXR::MSPM0Timebase Class Reference
Inheritance diagram for LibXR::MSPM0Timebase:
[legend]
Collaboration diagram for LibXR::MSPM0Timebase:
[legend]

Public Member Functions

 MSPM0Timebase ()
 构造函数 / Constructor
 
- Public Member Functions inherited from LibXR::Timebase
 Timebase ()=default
 默认构造函数。 Default constructor.
 
 Timebase (const Timebase &)=delete
 禁止拷贝构造。 Copy construction is disabled.
 
Timebase & operator= (const Timebase &)=delete
 禁止拷贝赋值。 Copy assignment is disabled.
 

Static Public Member Functions

static void OnSysTickInterrupt ()
 SysTick 中断入口辅助函数。 Helper called from the SysTick interrupt path.
 
static void Sync (uint32_t ticks)
 同步毫秒计数器。 Synchronize the millisecond counter.
 
- Static Public Member Functions inherited from LibXR::Timebase
static MicrosecondTimestamp GetMicroseconds ()
 获取当前时间的微秒级时间戳。 Gets the current timestamp in microseconds.
 
static MillisecondTimestamp GetMilliseconds ()
 获取当前时间的毫秒级时间戳。 Gets the current timestamp in milliseconds.
 
static bool IsReady () noexcept
 检查时间基是否已经初始化。 Check whether the active timebase backend is initialized.
 
static void DelayMicroseconds (uint32_t us)
 微秒级延时 / Delay in microseconds
 

Static Public Attributes

static volatile uint32_t sys_tick_ms
 SysTick 毫秒计数器。 SysTick millisecond counter.
 

Additional Inherited Members

- Static Protected Member Functions inherited from LibXR::Timebase
static void SetReady (bool ready=true) noexcept
 设置时间基就绪状态。 Set the timebase ready flag.
 
static void ConfigureWrapRange (uint64_t max_valid_us, uint32_t max_valid_ms) noexcept
 配置时间戳回绕上界。 Configure the timestamp wraparound limits.
 
static uint64_t GetConfiguredWrapRangeUs () noexcept
 读取当前配置的微秒回绕上界。 Read the configured microsecond wraparound limit.
 
static uint32_t GetConfiguredWrapRangeMs () noexcept
 读取当前配置的毫秒回绕上界。 Read the configured millisecond wraparound limit.
 

Detailed Description

Definition at line 10 of file mspm0_timebase.hpp.

Constructor & Destructor Documentation

◆ MSPM0Timebase()

MSPM0Timebase::MSPM0Timebase ( )

构造函数 / Constructor

配置 MSPM0 SysTick 时间基的回绕范围,开启 SysTick 中断并设为最高优先级(0), 然后标记时间基已就绪。SysTick 的 1 ms 周期和启动由 SysConfig 配置。 Configures the MSPM0 SysTick wrap range, enables the SysTick interrupt at the highest priority (0) and marks the timebase ready. SysConfig configures the 1 ms SysTick period and starts SysTick.

Definition at line 5 of file mspm0_timebase.cpp.

6{
7 ConfigureWrapRange(static_cast<uint64_t>(UINT32_MAX) * 1000ULL + 999ULL, UINT32_MAX);
8 // SysTick 中断必须能抢占 LibXR 驱动的中断(优先级 1)。
9 // The SysTick interrupt must preempt the interrupts of the LibXR drivers (priority 1).
10 NVIC_SetPriority(SysTick_IRQn, 0U);
11 DL_SYSTICK_enableInterrupt();
12 SetReady();
13}
static void ConfigureWrapRange(uint64_t max_valid_us, uint32_t max_valid_ms) noexcept
配置时间戳回绕上界。 Configure the timestamp wraparound limits.
Definition timebase.hpp:95
static void SetReady(bool ready=true) noexcept
设置时间基就绪状态。 Set the timebase ready flag.
Definition timebase.hpp:85

Member Function Documentation

◆ OnSysTickInterrupt()

void MSPM0Timebase::OnSysTickInterrupt ( )
static

SysTick 中断入口辅助函数。 Helper called from the SysTick interrupt path.

Definition at line 66 of file mspm0_timebase.cpp.

67{
68 // 只有 SysTick 中断写入;C++20 弃用 volatile 的 ++,改为显式读改写。
69 // Only the SysTick interrupt writes it; C++20 deprecates ++ on volatile, so read and
70 // write explicitly.
72}
static volatile uint32_t sys_tick_ms
SysTick 毫秒计数器。 SysTick millisecond counter.

◆ Sync()

void MSPM0Timebase::Sync ( uint32_t ticks)
static

同步毫秒计数器。 Synchronize the millisecond counter.

Parameters
ticks新的毫秒计数值 / New millisecond tick value.

Definition at line 73 of file mspm0_timebase.cpp.

Member Data Documentation

◆ sys_tick_ms

volatile uint32_t LibXR::MSPM0Timebase::sys_tick_ms
inlinestatic

SysTick 毫秒计数器。 SysTick millisecond counter.

Definition at line 41 of file mspm0_timebase.hpp.


The documentation for this class was generated from the following files: