STM有哪些特性?
- 自由運行的 64 位計數器
- 所有 64 位可同步讀取
- 可同步讀取 64 位計數器的不同 32 位部分
- 基于與 STM 部分內容的比較匹配,靈活地產生服務請求
- 在應用復位后自動開始計數
- 若 ARSTDIS.STMxDIS 位清零,應用復位將復位 STM 寄存器;若該位被置位,則應用復位不復位 STM 寄存器,改由系統復位進行復位
- 特殊的 STM 寄存器語義提供對整個 64 位計數器的同步視圖,或不同分辨率的 32 位子集視圖
????????上圖是STM模塊的概覽圖,展示了讀取 STM 內容各部分的選項。
STM有哪些功能?
????????STM 是一個向上計數的計數器,工作頻率為 fSTM。若發生應用復位,且SCU_ARSTDIS.STMxDIS 位清零,則 STM 被復位。復位后,STM 被使能并立即開始向上計數。在正常運行期間無法改變定時器的內容。定時器寄存器只能讀,不能寫。
????????STM 可選地被禁用以節能,或在調試時掛起。在掛起模式下,STM 時鐘停止,但所有寄存器仍可讀。
????????由于 STM 的寬度為 64 位,無法用一條指令讀出其全部內容。需要兩次加載指令。因為在兩次讀取之間定時器會繼續計數,所以可能導致兩次讀取的值不一致(低位部分在兩次讀取間溢出到高位)。為實現對 STM 內容的同步一致讀取,實現了一個捕獲寄存器(CAP)。每當讀取 TIM0 至 TIM5 中任一寄存器時,它會鎖存 STM 高位部分的內容。因此,CAP 在與低位部分讀取完全相同的時間點保持定時器高位的值。第二次讀取再讀取 CAP 的內容以獲取完整的定時器值。
????????STM 也可以從七個寄存器 TIM0 至 TIM6 中的任意一個分段讀取,這些寄存器選擇 STM 的不同高階 32 位范圍。可以將它們視作各自獨立的 32 位定時器,每個具有不同的分辨率和計時范圍。
????????64 位系統定時器的內容可與存儲在 CMP0 和 CMP1 寄存器中的兩個比較值進行比較。可在與 CMP0 或 CMP1 比較匹配時產生服務請求。
比較寄存器操作
64 位 STM 的內容可以與存儲在 CMP0 和 CMP1 寄存器中的兩個比較值進行比較。在與 CMP0 或 CMP1 比較匹配時可以產生服務請求。
比較操作可編程的兩個參數:
- 用于比較操作的 CMP0/CMP1 寄存器(比較寬度 MSIZEx)中相關位的寬度,可從 0 到 31 編程。
- 用于比較操作的 64 位 STM 中的起始位位置,可從 0 到 31 編程。
這些編程能力使比較功能非常靈活。甚至可以通過設置 MSIZE = 0 且 MSTART = n(n = 0 到 31)來檢測 64 位 STM 中單個位 n 的位躍遷。