【嵌入式原理系列-第八篇】USART從原理到配置全解析

目錄

一.通信領域基礎知識介紹

1.1 串行和并行通信

1.2 同步和異步傳輸

1.3 串口和COM口

1.4 通信協議標準以及物理層定義

1.5 物理層協議之TTL / RS-232 / RS-485

二.USART介紹

2.1 USART特點介紹

2.2 UART和TTL / RS-232 / RS-485

2.3 USART硬線流控介紹

2.4 USART幀格式介紹

2.5 USART對比其他總線

三.USART工程配置及使用

3.1 USART數據傳輸方式配置說明

3.2?USART中斷配置配置說明

3.2.1 USART常用中斷

3.2.2 USART中斷配置實戰說明

3.2.3?DMA常用中斷

3.2.4 DMA中斷配置實戰說明

四.USART異步模式同步機制介紹


一.通信領域基礎知識介紹

介紹USART之前,我們需要先了解一些通信協議領域的通用知識。

1.1 串行和并行通信

  • 串行:串行接口的基本傳輸單位是1位,即每次只能傳輸一個bit,通過協議組合成幀進行傳輸
  • 并行:一次性可以傳輸多個位,理論上每個位需要一條獨立線束

1.2 同步和異步傳輸

Synchronous / Asynchronous 同步/異步,通信層面的異步/同步概念與軟件層面不同:

  • 軟件層面
    • 同步處理:同步調用意味著調用方主動等待并立即獲得結果。
    • 異步處理:異步調用意味著調用方發起請求后立即返回,結果通過事件、回調或輪詢等方式在后續通知。
  • 通信層面
    • 同步通信:通信雙方使用同一根時鐘線來控制通信,理論上有時鐘線的情況下雙方的節奏是一致的,因此稱為同步。
    • 異步通信:雙方互相不知道對方時鐘頻率,通過一些設計來規避雙方的時鐘不一致問題。

1.3 串口和COM口

  • 串口(Serial Port)通用稱呼,是一個廣義概念,嚴格來說所以串行通道都可以稱之為串口,包括USB。但是在嵌入式MCU領域,一般說起串口都是默認指的USART的異步模式
  • COM:COM代表計算機中的邏輯串口設備名稱(如COM1, COM2),是電腦對串口的抽象。電腦上的COM口一般就是通過USART實現的。

1.4 通信協議標準以及物理層定義

按照目前國際標準,一般將通信協議劃分為5層(實際上廣泛使用的標準)或者7層(ISO推薦)協議。按照從底層到上層分為:

  • 物理層
  • 數據鏈路層
  • 傳輸層
  • 網絡層
  • 會話層
  • 表示層
  • 應用層

其中物理層定義了以下內容:

特性類別定義說明
過程特性比特在時間軸上的傳輸方式,如同步/異步、采樣點、位時序
硬件特性接口芯片、收發器、電路驅動能力、端口數量
機械特性物理連接器、針腳排列、接口規格
電氣特性電壓電平范圍、電流驅動、抗干擾能力、差分/單端方式
功能特性通道容量、點對點/多點拓撲、誤碼率、最大距離

1.5 物理層協議之TTL / RS-232 / RS-485

這三者都是物理層定義,規定了通信物理層定義

概念簡要說明電氣特性

TTL(Transistor-Transistor Logic)

原生電平

邏輯1:3.3V 或 5V,邏輯0為:0V

RS232

電壓轉換邏輯1:-3V 到 -15V邏輯0:+3V 到 +15V

RS485

電壓轉換+差分電平

邏輯 1:B線電壓比A線電壓高,典型差值 >+200mV。

邏輯 0:A線電壓比B線電壓高,典型差值 >+200mV。

其共模電壓范圍通常為 -7V 到 +12V


二.USART介紹

2.1 USART特點介紹

USART(即Universal Synchronous / Asynchronous Receiver/Transmitter,通用同步/異步收發器),其特性如下:

  • 串行通信
  • 同步/異步傳輸:支持同步傳輸(USART同步模式),以及異步傳輸(USART異步模式)
  • 物理層以及數據鏈路層協議:只負責數據的轉發,不涉及應用邏輯。其物理層定義不完整,因此需要搭配其他物理層協議使用,如TTL、RS-232、RS-485
  • 線束數量不固定,可選搭配如下
    • Tx/Rx:數據傳輸線
    • GND:當通信雙方不直接公地,一般需要增加GND線作為參考電平以保持通信穩定性
    • CTS/RTS:流控線,可選非標準協議定義內容,用于控制通信雙方的傳輸,防止數據溢出或丟失
    • CLK:USART可使用同步模式進行通信,此時需要額外的時鐘線

注意!!

USART的硬線流控CTS/RTC以及USART的同步傳輸模式,在實際項目中很少使用,因為這兩者都會增加線束的數量、傳輸協議的復雜度。而USART最大的優點就是協議的簡單以及線束數量少(最少只需要兩根)。


2.2 UART和TTL / RS-232 / RS-485

USART的物理層定義并不完全,如下:

特性類別USART 覆蓋情況缺失說明
過程特性完整無缺失,USART 定義了起始位、數據位、校驗位、停止位,但功能簡單
硬件特性缺失USART 本身不定義具體硬件,需依賴 TTL/RS232/RS485 芯片
機械特性缺失USART 不定義連接器規格,實際由外部標準決定
電氣特性缺失USART 不規定電平和驅動能力,需要 TTL/RS232/RS485 補充
功能特性部分缺失USART 默認點對點,最大速率/距離未標準化,誤碼檢測只有奇偶校

因此實際使用過中必須搭配一個物理層協議使用,常用搭配如下:

概念簡要說明電氣特性與USART的關系

TTL(Transistor-Transistor Logic)

原生電平

邏輯1:3.3V 或 5V,邏輯0為:0V

MCU內部USART外設輸出的就是TTL電平。

優點:無需電平轉換芯片,硬件成本低

缺點:抗干擾能力和傳輸距離比RS 232和RS 485差。

RS232

電壓轉換邏輯1:-3V 到 -15V邏輯0:+3V 到 +15V

用于USART通信時,將原生TTL電平進行了電壓轉換。

優點RS 232的電壓范圍更廣,抗干擾更強。

缺點:需要額外的電平轉換芯片,增加了硬件成本。

RS485

電壓轉換+差分電平邏輯1:-3V 到 -15V邏輯0:+3V 到 +15V

用于USART通信時,將原生TTL電平進行了電壓轉換,并變成了差分電平。

優點:因為使用差分電平,抗干擾能力極強,且傳輸距離得到大大提升。支持多點通信。

缺點:需要額外的電平轉換芯片以及線束,且在車載電子領域和CAN定位重合且競爭

注意

在汽車電子領域,RS-485的生態位主要被CAN占據,其出場率較低。


2.3 USART硬線流控介紹

由于USART協議

CTS(Clear To Send)和RTS(Require To Send),不屬于標準USART規定內容。本質上是通過硬線指示來完成流控效果,示意如下:

設備1設備2說明
RTS(發)CTS(收)當設備2收到設備1的RTS通知(一般是高電平到低電平跳變)時,代表設備1準備好接收數據了,設備2此時可以發送數據
CTS(收)RTS(發)當設備1收到設備2的RTS通知(一般是高電平到低電平跳變)時,代表設備2準備好接收數據了,設備1此時可以發送數據

2.4 USART幀格式介紹

參數說明
開始位1 bit,當USART數據傳輸線不傳輸數據時,它通常保持在高電壓電平。為了開始數據傳輸,發送方將傳輸線從高電平拉至低電平一個時鐘周期。當接收USART檢測到高電壓到低電壓轉換時,它開始以波特率的頻率讀取數據幀中的位。

數據位 (Data Bits)

8bit 或 9bit,定義一幀有效數據,數據位包含要傳輸的實際數據。在通常情況下,數據首先以最低有效位發送,并且長度使用8位

停止位 (Stop Bits)

1至2bit,為了通知傳輸數據包的結束,USART發送端會將數據傳輸線驅動至高電壓至少1到2位持續時間

校驗位 (Parity)

1bit,可選,保證數據完整性。奇偶校驗位是接收USART在傳輸過程中判斷是否有任何數據發生變化的一種方法。電磁輻射、不匹配的波特率或長距離傳輸時,數據都有可能發生變化。接收USART讀取數據幀后,它會計算值為1的位數,并檢查總數是偶數還是奇數。如果奇偶校驗位為0(偶校驗),則數據幀中的1位應總計為偶數。如果奇偶校驗位是1(奇校驗),則數據幀中的1位應總計為奇數。當奇偶校驗位與數據匹配時,USART知道傳輸沒有錯誤。


2.5 USART對比其他總線

總線使用場景通信距離線束數量通信方向

通信單

元數量

同步&

異步

USART微控制和外部設備、模塊之間、調試接口建議小于1.5mTx+Rx+GND(可選)全雙工1 對 1異步
SPI(Serial Peripheral Interface)主要用于嵌入式系統內主芯片與外圍芯片之間的短距離、高速通信建議小于3m

CS:片選線,選擇和那個從模塊通信;

MOSI:主模塊給從模塊發送數據

MISO:從模塊給主模塊發送數據

CLK:時鐘線

全雙工1(主)對N(從)同步
IIC(Inter-Integrated Circuit)適用于連接微控制器和各種外部設備,如溫度傳感器、EEPROM、實時時鐘等,使用兩根線進行雙向通信。?建議小于3m

數據傳輸線+CLK

半雙工

N(多主)對N(多從)

同步
LIN(Local Interconnect Network)主要用于汽車電子系統中的低速通信,如車門控制、座椅控制等。理論可達40mTx/Rx(共用一根) + GND(可選)半雙工1(主)對N(從)異步
CAN(Controller Area Network)廣泛用于汽車、工業控制和其他分布式系統中,具備高可靠性和抗干擾能力,支持多個設備在同一總線上通信。理論可達40mCAN_H+CAN_L半雙工

N對N

(不分主從)

異步

注意

  • 傳輸速率一般來講:SPI>IIC>USART>CAN>LIN。
  • SPI/IIC一般多用于片上通信,USART多用于片上通信及調試接口,CAN/LIN用于車輛間ECU遠距離通信。
  • USART 更偏向點對點、調試和簡單設備通信,其通信距離(短)和穩定性(稍顯不足)使得它的競爭對手主要是SPI和IIC。

三.USART工程配置及使用

3.1 USART數據傳輸方式配置說明

屬性說明
波特率

波特率配置一般由多個寄存器來對時鐘進行分頻,已達到更精準的頻率控制。比如如下形式:

波特率 = 所選定外設時鐘頻率 / (波特率整數部分 + (波特率小數分子部分) / 波特率小數分母部分)

具體配置形式不固定,只需要記住可能存在多個參數配置來控制精度就行,本質上都是外設時鐘 / 預分頻值

停止位需要指定停止位的長度,可選范圍是1bit / 1.5bit / 2bit,部分芯片可能不支持1.5bit模式
數據位定義

需要定義數據位是8位還是9位,如果是9位還需要指定第9位的含義。不同芯片對于第9位的支持情況不一樣,這里按照最大組合情況介紹

  • 第9位是ODD(偶)校驗
  • 第9位是EVEN(奇)校驗
  • 第9位發送的是地址(此選項是給RS-485用的,因為RS485支持多節點通信,使用節點地址區分不同節點,此時該位可用于判斷是數據幀還是用來標識節點地址的地址幀
  • 第9位發送的是數據
  • 無第9位
傳輸次序(接收/發送)

選擇大小端模式,即接收/發送時是高Bit位(MSB)還是低Bit位(LSB)

傳輸模式

選擇同步還是異步傳輸。

  • 同步傳輸:USART同步模式,此時會有時鐘線,但是USART本身不是流水線搬運,無法像SPI那樣一根時鐘線控制Tx和Rx。因此此模式下一般是半雙工,除非有兩根時鐘線或者芯片的USART驅動有特殊處理
  • 異步傳輸:USART異步模式,就是常說的全雙工異步模式
時鐘極性選擇數據在時鐘上升沿還是下降沿同步(全雙工異步模式不需要此配置)。
傳輸方向選擇傳輸方向,可以配置僅收或者僅發
USART通道一般外設提供不止一組USART硬件通道,需要選擇使用哪一個硬件通道
時鐘源選擇選擇USART的時鐘源,為USART通信提供時鐘參考基準,以滿足波特率要求
傳輸類型
  • DMA
  • 中斷
硬件流控

是否支持硬件流控,可以配置只支持CTS或者RTS,即單向流控

硬件FIFO模式是否啟用硬件FIFO,并配置深度

3.2?USART中斷配置配置說明

3.2.1 USART常用中斷

信號意義觸發條件說明
RXNE/RDR接收到新數據RX 寄存器中有未讀取字節CPU讀取數據寄存器,防止覆蓋。DMA場景不需要。
TXE發送數據寄存器空TX 寄存器空,可以寫入新的待發送數據(前面數據不一定發送完成)

CPU 寫入下一個字節,DMA場景不需要

TC/TFE發送完成

前面一幀數據發送完成

標記發送結束,釋放緩沖區
IDLE總線空閑接收線空閑一段時間(通常是一幀位時間)標記幀結束或數據終止
ORE接收溢出RX 寄存器未及時讀取錯誤處理
NE噪聲錯誤總線噪聲導致接收錯誤錯誤處理
FE幀錯誤停止位或字節長度錯誤錯誤處理
PE奇偶校驗錯誤奇偶位不匹配錯誤處理

3.2.2 USART中斷配置實戰說明

傳輸類型TXETCIDLERXNE
RS-485半雙工 + DMA不使用,DMA直接判斷數據必須使用,用于通知CPU判斷是否要切換傳輸方向必須使用一般不需要,方向切換一般靠TC進行。
RS-485半雙工 + 非DMA推薦使用,通知CPU填充發送數據(理論上TXE會比TC觸發早,會更快一些)。必須使用,用于通知CPU判斷是否要切換傳輸方向必須使用推薦使用,用于判斷是否需要切換方向
普通傳輸 + DMA不使用,DMA直接判斷數據必須使用,TC在此模式下不再是字節級別通知,而是傳輸單位的通知。這個"傳輸單元"取決于字長、傳輸計數、循環/塊模式、DMA FIFO配置。必須使用一般不需要,數據搬運由DMA進行
普通傳輸+ 非DMA推薦使用,通知CPU填充發送數據(理論上TXE會比TC觸發早,會更快一些)。不使用,使用TXE發送數據更快必須使用必須使用,因為沒有DMA,需要CPU自行處理數據

3.2.3?DMA常用中斷

中斷名稱觸發條件典型用途
Transfer CompleteDMA 完成搬運CPU 處理已搬運完成數據或繼續下一塊搬運
Half TransferDMA 完成緩沖區一半CPU 提前處理一半數據,保持 RX 連續或平滑 TX 輸出
Transfer ErrorDMA 地址錯誤、FIFO 溢出、配置錯誤錯誤處理

3.2.4 DMA中斷配置實戰說明

  • USART錯誤類型中斷依實際項目情況選擇是否使能:ORE、NE、FE、PE
  • 推薦基于DMA傳輸:對于高速或大數據量傳輸,強烈推薦使用DMA以減輕CPU負擔(當不使用DMA時,MCU只有1~2個停止位的反應時間)并降低數據丟失風險。對于低速簡單應用,可根據情況選擇中斷或輪詢方式。
  • USART中斷配置建議
    • USART發送端
      • DMA傳輸完成中斷
      • 半傳輸中斷(可選,用于連續大數據流平滑發送)
    • USART接收端
      • 理論最優(實現復雜,設計不過關容易出問題,比如中斷嵌套)
        • 半傳輸中斷(防止數據溢出,給CPU預留處理時間)
        • 傳輸完成中斷(通知CPU全部處理完成)
        • USART IDLE中斷(用于檢測幀結束或總線空閑,防止數據量不夠觸發半傳輸中斷)。
      • 項目中常用(實現簡單,絕大部分場景夠用)
        • 僅僅使用IDLE中斷,不使用DMA全傳輸和半傳輸中斷。

DMA詳細介紹點此:【嵌入式原理系列-第七篇】DMA:從原理到配置全解析


四.USART異步模式同步機制介紹

在異步模式下,USART總線空閑時默認高電平。

發送方準備發送數據時(假設數據位為8位,不無奇偶校驗位),會將總線電平拉低一個位時間,稱為起始位,起始位之后開始進行數據位的傳輸,傳輸位傳輸完成后,最后再將總線拉高一個位時間稱之為結束位。

每次起始位接收方會進行一次位同步,保證雙方時序一致。通常USART異步模式下,采樣點位于位中間,即0.5個bit處。

結合以上邏輯,可知異步模式下雙發雙方的速率可以有差距,但是必須保證速率差距在一定范圍內。范圍計算如下:

  • 如果發送方速率大于接收方速率:1 <= (發送方速率÷接收方速率)<= (11÷10.5)。即發送方速率不能比接收方快4.76%以上
  • 如果發送方速率大于接收方速率:(10÷10.5) <= (發送方速率÷接收方速率)<= 1。即發送方速率不能比接收方慢4.76%以上

總結,8位數據位+1位停止位+無校驗位情況下,雙方速率差應該小于4.76%。其他幀格式組合算法類似。


想了解更多嵌入式技術知識,請點擊閱讀我的其他文章

煙花的文章鏈接集合-CSDN博客

如果你覺得內容對您有幫助,別忘了點贊、收藏和分享支持下哦

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

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

相關文章

MariaDB介紹和MariaDB包安裝

文章目錄MariaDB介紹和安裝1.MariaDB介紹1.1 起源與背景1.2 核心特性1.2.1 高度兼容 MySQL1.2.2 優化的存儲引擎1.2.3 企業級功能增強1.2.4 性能優化1.2.5 安全增強1.3 社區與生態1.4 應用場景1.5 總結2.MariaDB安裝2.1 主機初始化2.1.1 設置網卡名2.1.2 設置ip地址2.1.3 配置鏡…

雙指針與滑動窗口算法精講:從原理到高頻面試題實戰

引言&#xff1a;算法選擇的十字路口 在算法面試中&#xff0c;雙指針和滑動窗口如同兩把瑞士軍刀&#xff0c;能高效解決80%以上的數組和字符串問題。本文將深入解析這兩種技術的核心差異&#xff0c;結合力扣高頻題目&#xff0c;提供可直接復用的代碼。 一、算法核心思想解析…

蘋果MAC、MacBook air和pro安裝windows雙系統與iOS分發

文章目錄1. main1.1 準備工作1.2 啟動轉換助理1.3 Windows安裝1.4 蘋果電腦安裝Windows雙系統切換2. 蘋果(iOS)分發/上架2.1 上架App Store2.2 上架TestFlight2.3 webClip免簽上架2.4 超級簽名2.5 企業證書2.6 app分發系統Reference1. main 蘋果電腦安裝windows雙系統 https:…

ArcGIS定向影像(1)——非傳統影像輕量級解決方案

常常聽到這樣的需求&#xff0c;ArcGIS能讓用戶自己低成本的做出谷歌街景嗎&#xff1f;現在 _ArcGIS Pro 3.2 和 ArcGIS Enterprise 11.2 _能夠讓用戶不使用任何插件和擴展的情況下完成街景數據集的構建&#xff0c;數據管理&#xff0c;發布服務和調用的完整解決方案。非常體…

uni-app 網絡之封裝實戰HTTP請求框架

前言在uniapp開發中&#xff0c;網絡請求是每個應用都必不可少的功能模塊。一個優秀的網絡請求封裝不僅能提高開發效率&#xff0c;還能增強代碼的可維護性和可擴展性。本文將基于實際項目經驗&#xff0c;詳細介紹如何封裝一個高效、可維護的Uniapp網絡請求框架&#xff0c;并…

架構師成長之路-架構方法論

文章目錄前言一、先搞懂&#xff1a;架構師不僅僅是“技術大佬”&#xff0c;更是“問題解決者”1.1 架構師的分類&#xff1a;不止“開發架構師”一種1.2 架構師要關注什么&#xff1f;別只盯著技術1.3 架構師解決問題的4步心法&#xff1a;從定義到落地1.4 架構師的成長攻略&…

uniapp在微信小程序中實現 SSE 流式響應

前言 最近需要使用uniapp開發一個智能對話頁面&#xff0c;其中就需要使用SSE進行通信。 本文介紹下在uniapp中如何基于uni.request實現SSE流式處理。 在線體驗 #小程序:yinuosnowball SSE傳輸格式 返回輸出的流式塊: Content-Type為text/event-stream 每個流式塊均為 d…

STM32N6AI資料匯總

文章目錄前言一、STM32N6硬件資源1.1 NUCLEO-N657X0-Q1.2 STM32N6570-DK1.3 正點原子STM32N647二、STM32N6軟件資源2.1 STM32CubeN6例程資源包2.2 STM32圖像信號處理器&#xff08;ISP&#xff09;調優軟件2.3 正點原子N6開發板配套軟件三、AI軟件資源3.1 STM32N6 AI軟件包總結…

Flask學習筆記(一)

1、環境準備pip install Flask使用Flask開發第1個入門程序&#xff1a;from flask import Flask app Flask(__name__) app.route(/) def hello_world():return Hello, World!if __name__ __main__:app.run()Flask構造函數將當前模塊的名稱(__name__)作為參數。2、route函數ap…

CSP認證練習題目推薦(4)

思維、貪心、綜合 排隊打水 這道題目不算難&#xff0c;但是不注意還是會出現很多錯誤&#xff0c;比如結構體的書寫。以及自定義結構體排序。還有這里做的優化&#xff0c;使用前綴和記錄打水的等待時間&#xff0c;但是這里很容易出錯的點在于等待時間是應該是記錄的前一個…

MySQL 視圖的更新與刪除:從操作規范到風險防控

MySQL 視圖的更新與刪除&#xff1a;從操作規范到風險防控 視圖作為 “虛擬表”&#xff0c;其更新與刪除操作常常讓開發者困惑 ——“為什么更新視圖會報錯&#xff1f;”“刪除視圖會不會弄丟數據&#xff1f;” 實際上&#xff0c;80% 的視圖操作問題都源于對 “視圖依賴基表…

C 語言實現 I.MX6ULL 點燈(續上一篇)、SDK、deep及bsp工程管理

目錄 一、匯編點燈轉 C 語言實現 1. 關鍵字&#xff1a;volatile 2. 寄存器地址定義&#xff08;兩種方式&#xff09; &#xff08;1&#xff09;直接宏定義地址 &#xff08;2&#xff09;結構體封裝寄存器&#xff08;優化訪問&#xff09; 3. 核心功能代碼 &#xff…

DevOps實戰(7) - 使用Arbess+GitPuk+sourcefare實現Node.js項目自動化部署

Arbess 是一款國產開源免費的 CI/CD 工具&#xff0c;工具支持一鍵部署&#xff0c;頁面簡潔易用。本文將詳細介紹如何安裝配置使用GitPuk、sourcefare、Arbess系統&#xff0c;使用流水線拉取GitPuk源碼、使用sourcefare代碼掃描、構建安裝包并進行主機部署。 1、GitPuk 安裝…

算法,蒜鳥蒜鳥-P1-理解“雙指針”

歡迎來到啾啾的博客&#x1f431;。 記錄學習點滴。分享工作思考和實用技巧&#xff0c;偶爾也分享一些雜談&#x1f4ac;。 有很多很多不足的地方&#xff0c;歡迎評論交流&#xff0c;感謝您的閱讀和評論&#x1f604;。 目錄引言1 雙指針&#xff1a;Two Pointers1.1 左右指…

使用cookiecutter創建python項目

一、關于Python項目結構Python 項目并沒有完全統一的 “固定結構”&#xff0c;但行業內有一些廣泛遵循的約定俗成的目錄結構&#xff08;尤其針對可分發的包或大型項目&#xff09;。同時&#xff0c;確實有工具可以快速生成這些標準化結構&#xff0c;提高開發效率&#xff0…

臺積電生態工程深度解析:從晶圓廠到蜂巢的系統架構遷移

當半導體巨頭將工廠視為生態系統&#xff0c;用工程思維解決環境問題概述&#xff1a;生態系統的工程化再造臺積電近日開展的"積蜜"項目絕非簡單的企業CSR行為&#xff0c;而是一場將生態系統視為復雜系統進行工程化改造的技術實踐。本文將從系統架構、數據監控、循環…

從零實現一個簡易計算器

最近在刷算法題時&#xff0c;遇到了實現計算器的問題。一開始覺得很簡單&#xff0c;但真正動手實現時才發現其中有很多細節需要考慮。今天就來分享一下我的實現思路和學到的經驗。問題分析我們需要實現一個能夠處理加減乘除四則運算的計算器&#xff0c;要正確處理運算符的優…

Actix-webRust Web框架入門教程

文章目錄引言Actix-web是什么&#xff1f;準備工作你的第一個Actix-web應用理解代碼結構處理請求和響應接收請求數據返回響應中間件 - 增強你的應用狀態管理和依賴注入實用示例&#xff1a;構建RESTful API測試你的Actix-web應用部署Actix-web應用結語額外資源引言 嘿&#xf…

若依框架前端通過 nginx docker 鏡像本地運行

1. 前言 項目運行過程圖&#xff1a;對于前端項目通過命令 npm run build 打包后&#xff0c;無法直接運行。存在如下錯誤&#xff1a;可以通過配置 nginx 服務器運行前端項目解決如上問題。 2. Nginx 運行 采用 docker 鏡像的方式運行&#xff0c;docker-compose.yml 文件內容…

淺聊一下HTTP協議

在日常上網瀏覽網頁、刷視頻時&#xff0c;背后都離不開 HTTP 協議的支持。作為 Web 世界的 “交通規則”&#xff0c;它負責服務器和客戶端瀏覽器之間的數據傳輸。這篇文章就帶大家全面了解 HTTP 協議&#xff0c;從基本概念到通信細節&#xff0c;再到安全相關的 HTTPS&#…