GPT(General Purpose Timer)定時器

基本概念:

在嵌入式系統中,General Purpose Timer(GPT)是一種非常重要的硬件組件,用于提供定時功能。

  • 定義:通用定時器是一種能夠提供精確時間測量和控制功能的電子設備或電路模塊。它可以產生周期性的時鐘信號,通常可提供從微秒級到毫秒級的定時時鐘功能。也可以對事件進行計時和計數,廣泛應用于各種需要時間控制和測量的場景。
  • 工作原理:通常基于振蕩器產生基準時鐘信號,然后通過分頻、計數等操作來實現特定的時間間隔和定時功能。例如,一個簡單的通用定時器可以由一個晶體振蕩器和一個計數器組成,晶體振蕩器產生穩定的振蕩頻率,計數器對振蕩周期進行計數,當計數值達到預設值時,產生一個定時中斷或輸出信號

與其他定時器的比較

  • 與RTC(實時時鐘)的區別

    • 功能側重點不同:RTC主要用于提供準確的日期和時間信息,它能夠持續運行,即使在設備斷電的情況下,也能通過備用電池保持時間的連續性,常用于需要長期準確計時的場景,如電子手表、計算機主板等。而通用定時器更側重于產生精確的時間間隔和進行事件計數,用于控制和測量設備的運行狀態和事件的發生。
    • 精度和范圍不同:RTC的精度通常在秒級,能夠提供年、月、日、時、分、秒等完整的時間信息。通用定時器的精度可以更高,能夠達到微秒甚至納秒級別,但它的計時范圍相對較小,一般用于較短時間間隔的測量和控制。
  • 與看門狗定時器的區別

    • 作用目的不同:看門狗定時器主要用于系統監控和故障恢復。當系統出現異常或死機時,看門狗定時器會在超時后觸發復位信號,使系統重新啟動,以保證系統的可靠運行。通用定時器則主要用于實現設備的正常功能和時間控制,不具有自動復位系統的作用。
    • 工作方式不同:看門狗定時器需要定期被“喂狗”,即在正常運行時,系統需要在定時器超時前對其進行清零或重置操作,以防止復位信號的產生。通用定時器則根據預設的時間參數和事件觸發條件進行工作,不需要外部的定期干預。

RTC(實時時鐘)與看門狗定時器在后續博客中會做出重點論述,這里只簡單概述與GPT定時器的區別

以I.MX6ULL開發板為例,介紹GPT定時器在嵌入式中的應用

I.MX6ULL GPT介紹

The GPT has a 32-bit up-counter. The timer counter value can be captured in a register using an event on an external pin. The capture trigger can be programmed to be a rising or/and falling edge. The GPT can also generate an event on the output compare pins and an interrupt when the timer reaches a programmed value. The GPT has a 12-bit prescaler, which provides a programmable clock frequency derived from multiple clock sources.

GPT具有一個32位向上計數器。通過外部引腳上的事件,可以將定時器計數器的值捕獲到寄存器中。捕獲觸發條件可以編程設置為上升沿或/和下降沿。當定時器達到預設值時,GPT還可以在輸出比較引腳上生成事件并產生中斷。GPT具有一個12位預分頻器,可從多個時鐘源派生出可編程的時鐘頻率。

?I.MX6ULL GPT框圖

時鐘輸入與預分頻

外部時鐘信號從時鐘選擇模塊輸入。

預分頻器(Prescaler)是一個12位可編程的分頻器,可以將輸入時鐘信號分頻,范圍從1到4096。預分頻器的輸出作為定時器計數器的時鐘源。

定時器計數器

定時器計數器是一個32位向上計數器,它會根據預分頻器輸出的時鐘信號進行計數。計數器的值可以通過處理器數據總線(Processor Data Bus)進行讀取和寫入。

輸入捕獲

GPT模塊有兩個輸入捕獲通道(GPT_CAPTURE1和GPT_CAPTURE2),它們可以同步外部事件。當外部引腳上的信號變化(如上升沿或下降沿)時,可以通過輸入捕獲寄存器(Timer Input Reg 1和Timer Input Reg 2)捕獲當前計數器的值。輸入捕獲通道可以配置觸發條件,如上升沿(IF1)、下降沿(IF2)或雙邊沿(IF1IE和IF2IE)。

輸出比較

GPT模塊有三個輸出比較通道(GPT_COMPARE1、GPT_COMPARE2和GPT_COMPARE3),它們可以用于生成事件或中斷。輸出比較寄存器(Timer Output Reg1、Timer Output Reg2和Timer Output Reg3)存儲預設的比較值。當計數器的值與任一輸出比較寄存器的值相匹配時,可以通過比較器(cmp)觸發輸出比較事件(OF1、OF2、OF3)。

輸出模式

輸出比較事件可以配置不同的輸出模式(OM1、OM2、OM3),這些模式定義了輸出引腳在比較事件發生時的行為。

中斷

當輸入捕獲或輸出比較事件發生時,可以生成相應的中斷(IF1IE、IF2IE、OF1IE、OF2IE、OF3IE)。中斷通過GPT中斷總線(GPT Interrupt Bus)傳遞給處理器。

溢出和回卷

當計數器達到最大值(0xFFFFFFFF)時,會發生溢出(ROV),并觸發溢出中斷(ROVIE)。計數器可以配置為在溢出后回卷(FRR),即從0重新開始計數。

自由運行和重新啟動

GPT可以配置為自由運行模式,即計數器在溢出后繼續計數。也可以配置為重新啟動模式,即在溢出后從預設的初始值重新開始計數。

?計數器時鐘配置圖

Crystal Oscillator (ipg_clk_24M):24MHz的晶體振蕩器時鐘源,它可以輸入到預分頻器24M(Prescaler 24M)。

External Clock (GPT_CLK):外部提供的GPT時鐘信號,它可以直接輸入到多路復用器,也可以通過預分頻器24M后輸入。

Peripheral Clock (ipg_clk):系統周鐘,通常是一個較低頻率的時鐘信號,它可以直接輸入到多路復用器。

Low Frequency Reference Clock (ipg_clk_32k):32kHz的低頻參考時鐘,它可以直接輸入到多路復用器,適用于低功耗模式。

High Frequency Reference Clock (ipg_clk_highfreq):高頻參考時鐘,它可以直接輸入到多路復用器,適用于需要高精度計時的應用。

Prescaler 24M:預分頻器24M是一個可編程的分頻器,它接收24MHz的晶體振蕩器時鐘信號,并將其分頻后輸出。

Sync:同步器(Sync)用于同步來自不同時鐘源的信號,確保時鐘信號的穩定性和一致性。

To Prescaler:多路復用器的輸出可以被選擇性地路由到預分頻器,以進一步降低時鐘頻率,適應定時器計數的需求。

Clock off:允許關閉時鐘信號,用于省電或在不需要定時器工作時關閉時鐘。

?I.MX6ULL GPT?特性

? One 32-bit up-counter with clock source selection, including external clock.
? Two input capture channels with a programmable trigger edge.
? Three output compare channels with a programmable output mode. A "forced
compare" feature is also available.
? Can be programmed to be active in low power and debug modes.
? Interrupt generation at capture, compare, and rollover events.
? Restart or free-run modes for counter operations.
  • 一個帶有時鐘源選擇的32位向上計數器,包括外部時鐘。
  • 兩個輸入捕獲通道,具有可編程的觸發邊緣。
  • 三個輸出比較通道,具有可編程的輸出模式。還提供“強制比較”功能。
  • 可編程在低功耗模式和調試模式下保持活動狀態。
  • 在捕獲、比較和回卷事件時生成中斷。
  • 計數器操作的重啟或自由運行模式。

預分頻器值變更時序圖

The clock input source is configured using the clock source field (CLKSRC, in the
GPT_CR control register). The clock input to the prescaler can be disabled by
programming the CLKSRC bits (of the GPT_CR control register) to 000. The CLKSRC
field value should be changed only after disabling the GPT (by setting the EN bit in the GPT_CR to 0).The PRESCALER field selects the divide ratio of the input clock that drives the main counter. The prescaler can divide the input clock by a value (from 1 to 4096) and can be changed at any time. A change in the value of the PRESCALER field immediately affects the output clock frequency.

時鐘輸入源是通過時鐘源字段(CLKSRC,在GPT_CR控制寄存器中)進行配置的。可以通過將GPT_CR控制寄存器中的CLKSRC位編程為000來禁用輸入到預分頻器的時鐘。只有在將GPT_CR中的EN位設置為0禁用GPT后,才應該更改CLKSRC字段的值。

PRESCALER字段選擇驅動主計數器的輸入時鐘的分頻比。預分頻器可以將輸入時鐘分頻,分頻值可以從1到4096,并且可以隨時更改。對PRESCALER字段值的更改會立即影響輸出時鐘頻率。

?

在通用定時器(GPT)中如何改變預分頻器的值以及這種改變如何影響時鐘信號:

鐘信號(Clk):圖中最上方的波形代表輸入到預分頻器的原始時鐘信號,通常是一個高頻的方波信號。

預分頻器值(Prescaler Value):中間的水平線代表預分頻器的值。在圖中,預分頻器值從0x004變為0x002。這個值決定了輸入時鐘信號被分頻的程度。

預分頻后的時鐘信號(Prescaled Clk)

圖中最下方的波形代表經過預分頻器處理后的時鐘信號。這個信號的頻率是原始時鐘信號頻率除以預分頻器的值。

預分頻器值的改變

在圖中,預分頻器的值在某個時刻從0x004改變為0x002。這個改變通過一個斜線箭頭表示,箭頭指向預分頻器值從0x004到0x002的變化。

即時生效

一旦預分頻器的值被改變,預分頻后的時鐘信號(Prescaled Clk)會立即反映出這種變化。在圖中,這表現為時鐘信號的周期在預分頻器值改變后變得更短,因為分頻值減小了。

時序關系

圖中展示了預分頻器值改變與時鐘信號之間的時序關系。可以看到,預分頻器值的改變是在時鐘信號的上升沿或下降沿進行的,這確保了改變的同步性。

通用定時器(GPT)工作模式(Operating Modes)

定時器可以執行的基本功能和配置。在工作模式下,GPT可以被設置為不同的時鐘源,并且可以通過預分頻器來調整計數速率。此外,還可以設置定時器的中斷生成,以及在捕獲、比較和回卷事件時的行為。GPT計數器可以被編程為在兩種模式下工作:重啟模式或自由運行模式

重啟模式(Restart Mode)

在重啟模式下(可通過GPT控制寄存器GPT_CR選擇),當計數器達到比較值時,計數器會重置并從0x00000000開始重新計數。此重啟功能僅與比較通道1相關聯。對通道1的比較寄存器進行任何寫操作都將重置GPT計數器。這是為了避免在計數過程中,如果比較值從較高的值更改為較低的值時可能錯過比較事件。

自由運行模式(Free-Run Mode)

在自由運行模式下,當所有三個通道的比較事件發生時,計數器不會重置;相反,計數器會繼續計數直到達到0xFFFFFFFF,然后回卷到0x00000000。這種模式允許計數器在達到最大值后繼續運行,而不是在每個比較事件后重置模式適用于需要持續計時或測量的應用場景,其中計數器的值需要保持連續,而不是周期性重置。

通用定時器(GPT)的輸入捕獲?(Input Capture)

GPT定時器的輸入捕獲通道的工作原理和特性:

有兩個輸入捕獲通道,每個輸入捕獲通道都有專用的捕獲引腳、捕獲寄存器和輸入邊緣檢測/選擇邏輯。每個輸入捕獲功能都有一個關聯的狀態標志,并且能夠導致處理器發出中斷服務請求。

當在輸入捕獲引腳上發生選定的邊緣轉換時,GPT_CNT的內容將被捕獲到相應的捕獲寄存器中,并且設置相應的中斷狀態標志。如果在中斷寄存器中設置了相應的使能位,那么在檢測到轉換時可以生成中斷請求。捕獲可以被編程為發生在輸入引腳的上升沿、下降沿、上升沿和下降沿,或者可以禁用捕獲。這些事件與被選擇來運行計數器的時鐘同步。只有那些在先前記錄的轉換之后至少一個時鐘周期(被選擇來運行計數器的時鐘)發生的轉換才能保證觸發捕獲事件。在輸入轉換的鎖定中最多可以有一個時鐘周期的不確定性。輸入捕獲寄存器可以在任何時候讀取,而不會影響它們的值。

?邊緣檢測:

  • 上升沿:從低電平到高電平的轉換。
  • 下降沿:從高電平到低電平的轉換。
  • 雙邊沿:同時檢測上升沿和下降沿。
?輸入捕獲事件的時序圖

時鐘信號(Clk)

圖中最上方的波形代表從CLKSRC位字段設置中選擇的時鐘信號。這個時鐘信號用于驅動GPT計數器。

捕獲通道1的引腳信號(ipp_ind_capin1)

中間的波形代表捕獲通道1的引腳信號。這個信號是從外部輸入到GPT模塊的,用于捕獲事件。

捕獲信號(Sig)

圖中最下方的波形代表模塊感知到的捕獲信號。這個信號是經過GPT模塊處理后的信號,用于觸發捕獲事件。

捕獲事件

當ipp_ind_capin1信號的邊緣轉換(如上升沿或下降沿)與Sig信號同步時,GPT計數器的當前值將被捕獲到相應的捕獲寄存器中。圖中用箭頭標出了捕獲事件發生的時刻。

同步性

捕獲事件與選擇運行計數器的時鐘同步。這意味著,只有在先前記錄的轉換之后至少一個時鐘周期發生的轉換才能保證觸發捕獲事件。

不確定性

在輸入轉換的鎖定中可能存在最多一個時鐘周期的不確定性。這可能是由于信號傳播延遲或模塊處理延遲造成的。

捕獲寄存器

捕獲到的GPT計數器值將被存儲在捕獲寄存器中,這個值代表了從定時器啟動到捕獲事件發生的時間。

通用定時器(GPT)的輸出比較?(Output Compare )

GPT定時器的輸出比較通道的工作原理和特性:

三個輸出比較通道使用的是與輸入捕獲通道相同的計數器(GPT_CNT)。當輸出比較寄存器中預設的值與GPT_CNT中的值匹配時,將設置一個輸出比較狀態標志,并生成一個中斷(如果中斷寄存器中的相應位已被設置)。因此,輸出比較定時器引腳將被置位、清零、切換、完全不受影響,或者提供一個低電平脈沖,持續時間為一個輸入時鐘周期(受限于引腳上允許的最大頻率),這取決于已編程的模式位。

此外,還有一個“強制比較”功能,允許軟件在需要時生成一個比較事件,而不需要計數器值等于比較值的條件。由于強制比較而采取的行動與輸出比較匹配時相同,除了不會設置狀態標志且不能生成中斷。在向強制比較位寫入后,強制通道會立即采取編程的行動。這些位是自清零的,并且總是讀取為零

輸出比較和中斷時序圖

時鐘信號(Clk)

圖中最上方的波形代表定時器的時鐘信號,用于驅動GPT計數器。

計數器(Counter)

緊隨Clk下方的波形代表GPT計數器的值,它是一個向上計數的32位計數器。計數器的值在每個時鐘周期內遞增。

比較值(Compare Value)

比較值是預設在輸出比較寄存器中的值,當計數器的值與這個值相匹配時,將觸發輸出比較事件。

輸出模式(Output Mode)

輸出模式決定了當計數器值與比較值相匹配時,輸出信號的行為。

圖中顯示了三種不同的輸出模式:

011:設置(set),輸出信號在比較事件時被設置為高電平。

010:清除(clear),輸出信號在比較事件時被設置為低電平。

001:切換(toggle),輸出信號在每個比較事件時翻轉。

輸出信號(Output Signal)

輸出信號是根據輸出模式在比較事件發生時改變的信號。

圖中展示了不同輸出模式下輸出信號的變化:

011模式下,輸出信號在計數器值達到比較值時被設置為高電平。

010模式下,輸出信號在計數器值達到比較值時產生一個低電平脈沖。

001模式下,輸出信號在計數器值達到比較值時翻轉。

中斷(Interrupt)

如果中斷使能位被設置,那么在輸出比較事件發生時,可以生成一個中斷請求。圖中沒有明確顯示中斷請求,但它會在輸出比較事件發生時根據配置生成。

低脈沖(low pulse)

010模式下,當計數器值與比較值相匹配時,輸出信號會產生一個短暫的低電平脈沖。

?I.MX6ULL 通用定時器(GPT)的基本編程步驟:

時鐘配置:確保使能GPT模塊的時鐘,設置時鐘控制器模塊(CCM)的相應位。

定時器初始化:重置GPT模塊,將所有寄存器恢復到默認狀態。

時鐘源選擇:配置GPT的時鐘源,選擇合適的時鐘源并設置預分頻器,以得到所需的計數頻率。

計數模式選擇:選擇計數模式,重啟模式(Restart Mode)或自由運行模式(Free-Run Mode)。

輸入捕獲配置:配置輸入捕獲通道,設置觸發邊緣(上升沿、下降沿或雙邊沿),使能輸入捕獲中斷(如果需要)。

輸出比較配置:配置輸出比較寄存器,配置輸出比較通道,設置比較值和輸出模式(如切換、清除、設置或脈沖),使能輸出比較中斷(如果需要)。

中斷配置(如果需要):配置和使能GPT的中斷,包括輸入捕獲和輸出比較中斷。在中斷服務程序(ISR)中實現相應的處理邏輯。

計數器啟動:設置GPT控制寄存器中的EN位來啟動定時器,開始計數。

結語:

無論你是初學者還是有經驗的開發者,我希望我的博客能對你的學習之路有所幫助。如果你覺得這篇文章有用,不妨點擊收藏,或者留下你的評論分享你的見解和經驗,也歡迎你對我博客的內容提出建議和問題。每一次的點贊、評論、分享和關注都是對我的最大支持,也是對我持續分享和創作的動力

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/66035.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/66035.shtml
英文地址,請注明出處:http://en.pswp.cn/web/66035.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

集中式架構vs分布式架構

一、集中式架構 如何準確理解集中式架構 1. 集中式架構的定義 集中式架構是一種將系統的所有計算、存儲、數據處理和控制邏輯集中在一個或少數幾個節點上運行的架構模式。這些中央節點(服務器或主機)作為系統的核心,負責處理所有用戶請求和…

數據挖掘實訓:天氣數據分析與機器學習模型構建

隨著氣候變化對各行各業的影響日益加劇,精準的天氣預測已經變得尤為重要。降雨預測在日常生活中尤其關鍵,例如農業、交通和災害預警等領域。本文將通過機器學習方法,利用歷史天氣數據預測明天是否會下雨,具體內容包括數據預處理、…

kalilinux - 目錄掃描之dirsearch

情景導入 先簡單介紹一下dirsearch有啥用。 假如你現在訪問一個網站,例如https://www.example.com/ 它是一個電商平臺或者其他功能性質的平臺。 站在開發者的角度上思考,我們只指導https://www.example.com/ 但不知道它下面有什么文件,文…

關于 ThinkPHP 與 PostgreSQL 結合使用的一些要點

ThinkPHP 是一款流行的 PHP 開發框架,而 PostgreSQL 是功能強大的開源關系型數據庫。它們可以結合使用來開發各類應用,以下是關于 ThinkPHP 與 PostgreSQL 結合使用的一些要點: 配置數據庫連接 編輯配置文件:在 ThinkPHP 項目中&…

進程同步之信號量機制

信號量機制 信號量機制是一種用于進程同步和互斥的基本工具,特別是在并發編程中,廣泛用于控制對共享資源的訪問,避免數據競爭和死鎖等問題。信號量機制由荷蘭計算機科學家Edsger Dijkstra在1965年提出,并在操作系統的進程同步中發…

SOME/IP協議詳解 基礎解讀 涵蓋SOME/IP協議解析 SOME/IP通訊機制 協議特點 錯誤處理機制

車載以太網協議棧總共可劃分為五層,分別為物理層,數據鏈路層,網絡層,傳輸層,應用層,其中今天所要介紹的內容SOME/IP就是一種應用層協議。 SOME/IP協議內容按照AUTOSAR中的描述,我們可以更進一步…

springboot vue uniapp 仿小紅書 1:1 還原 (含源碼演示)

線上預覽: 移動端 http://8.146.211.120:8081/ 管理端 http://8.146.211.120:8088/ 小紅書憑借優秀的產品體驗 和超高人氣 目前成為筆記類產品佼佼者 此項目將詳細介紹如何使用Vue.js和Spring Boot 集合uniapp 開發一個仿小紅書應用,憑借uniapp 可以在h5 小程序 app…

基于celery的任務管理,本文主要是處理自己的算法,暴露API,管理任務并發,多線程

基于celery的任務管理,本文主要是處理自己的算法,暴露API,管理任務并發,多線程 基本需求描述潛在問題主函數配置文件 基本需求描述 暴露API,供其他人調用算法。方便查看任務狀態。因為服務器資源有限,控制…

Java(7)常用的工具類

1.Collections集合工具類 內置了大量對集合操作的靜態方法,可以通過類名直接調用方法。 方法的種類:最大值max、最小值min、sort排序...詳見API幫助文檔 import java.util.ArrayList; import java.util.Collections; import java.util.List;public cl…

【Varnish】:解決 Varnish 7.6 CDN 靜態資源緩存失效問題

項目場景: 在一個使用Varnish作為反向代理的Web應用中,我們依賴CDN(內容分發網絡)來緩存靜態資源(如圖片、CSS、JavaScript文件等),以提高全球用戶的訪問速度并減輕源站服務器的負載。然而&…

理解機器學習中的參數和超參數

在機器學習中,參數和超參數是兩個重要但不同的概念,它們共同影響模型的性能和表現。以下是它們的定義和區別,以及如何通俗地理解它們: 1. 參數 定義 參數是模型在訓練過程中自動學習到的變量,它們直接決定了模型如何…

Win11右鍵菜單實現

主要參考Win11 Context Menu Demo 此工程是vs2022編譯,vs2019先修改下 base.h 方可編譯過 編譯好dll以后 拷貝至SparsePackage目錄下 生成稀疏包msix 就拿他工程里面的改,編輯AppxManifest.xml,配置都要對,一個不對可能都失敗&a…

R.swift庫的詳細用法

R.swift 是一個 Swift 工具庫,它提供了一個自動生成的類 R,使得你可以通過類型安全的方式訪問項目中的資源,例如圖片、字體、顏色、XIB 文件等。通過 R.swift,你可以避免字符串類型的錯誤,提升代碼的可維護性。 以下是 R.swift 庫的詳細用法: 1. 安裝 R.swift 使用 Sw…

像JSONDecodeError: Extra data: line 2 column 1 (char 134)這樣的問題怎么解決

問題介紹 今天處理返回的 JSON 的時候,出現了下面這樣的問題: 處理這種問題的時候,首先你要看一下當前的字符串格式是啥樣的,比如我查看后發現是下面這樣的: 會發現這個字符串中間沒有逗號,也就是此時的J…

what?ngify 比 axios 更好用,更強大?

文章目錄 前言一、什么是ngify?二、npm安裝三、發起請求3.1 獲取 JSON 數據3.2 獲取其他類型的數據3.3 改變服務器狀態3.4 設置 URL 參數3.5 設置請求標頭3.6 與服務器響應事件交互3.7 接收原始進度事件3.8 處理請求失敗3.9 Http Observables 四、更換 HTTP 請求實現…

Linux Kernel 之十 詳解 PREEMPT_RT、Xenomai 的架構、源碼、構建及使用

概述 現在的 RTOS 基本可以分為 Linux 陣營和非 Linux 陣營這兩大陣營。非 Linux 陣營的各大 RTOS 都是獨立發展,使用上也相對獨立;而 Linux 陣營則有多種不同的實現方法來改造 Linux 以實現實時性要求。本文我們重點關注 Linux 陣營的實時內核實現方法! 本文我們重點關注 …

【拒絕算法PUA】3065. 超過閾值的最少操作數 I

系列文章目錄 【拒絕算法PUA】0x00-位運算 【拒絕算法PUA】0x01- 區間比較技巧 【拒絕算法PUA】0x02- 區間合并技巧 【拒絕算法PUA】0x03 - LeetCode 排序類型刷題 【拒絕算法PUA】LeetCode每日一題系列刷題匯總-2025年持續刷新中 C刷題技巧總結: [溫習C/C]0x04 刷…

ClickHouse-CPU、內存參數設置

常見配置 1. CPU資源 1、clickhouse服務端的配置在config.xml文件中 config.xml文件是服務端的配置,在config.xml文件中指向users.xml文件,相關的配置信息實際是在users.xml文件中的。大部分的配置信息在users.xml文件中,如果在users.xml文…

《自動駕駛與機器人中的SLAM技術》ch9:自動駕駛車輛的離線地圖構建

目錄 1 點云建圖的流程 2 前端實現 2.1 前端流程 2.2 前端結果 3 后端位姿圖優化與異常值剔除 3.1 兩階段優化流程 3.2 優化結果 ① 第一階段優化結果 ② 第二階段優化結果 4 回環檢測 4.1 回環檢測流程 ① 遍歷第一階段優化軌跡中的關鍵幀。 ② 并發計算候選回環對…

type 屬性的用途和實現方式(圖標,表單,數據可視化,自定義組件)

1.圖標類型 <uni-icon>組件中&#xff0c;type可以用來指定圖標的不同樣式。 <uni-icons type"circle" size"30" color"#007aff"></uni-icons> //表示圓形 <uni-icons type"square" size"30" co…