1.1 S3C2440系統中斷
CPU和外設構成了計算機系統,CPU和外設之間通過總線進行連接,用于數據通信和控制,CPU管理監視計算機系統中所有硬件,通常以兩種方式來對硬件進行管理監視:
查詢方式:CPU不停的去查詢每一個硬件的當前狀態,根據硬件的狀態決定處理與否。好比是工廠里的檢查員,不停的檢查各個崗位工作狀態,發現情況及時處 理。這種方式實現起來簡單,通常用在只有少量外設硬件的系統中,如果一個計算機系統中有很多硬件,這種方式無疑是耗時,低效的,同時還大量占用CPU資 源,并且對多任務系統反應遲鈍。
中斷方式:當某個硬件產生需要CPU處理的事件時,主動通過一根信號線“告知”CPU,同時設置某個寄存器里對應的位,CPU一旦發現這根信號線上的電平 有變化,就會中斷當前程序,然后去處理發出該中斷請求。這就像是醫院重危病房,病房每張病床床頭有一個應急按鈕,該按鈕連接到病房監控室里控制臺一盞指示 燈,只要該張病床出現緊急情況病人按下按鈕,病房監控室里電鈴會響起,通知醫護人員有緊急情況,醫護人員這時查看控制臺上的指示燈,找出具體病房,病床 號,直接過去處理緊急情況。中斷處理方式相對查詢方式要復雜的多,并且需要硬件的支持,但是它處理的實時性更高,嵌入式系統里基本上都使用這種方式來處 理。
系統中斷是嵌入式硬件實時地處理內部或外部事件的一種機制。對于不同CPU而言,中斷的處理只是細節不同,大體處理流程都一樣,S3C2440A的中斷控制器結構如下圖所示:
圖3-3 S3C2440中斷控制器
中斷請求由硬件產生,根據中斷源類型分別將中斷信號送到SUBSRCPND(SubSourcePending)和 SRCPND(SourcePending)寄存器,SUBSRCPND是子中斷源暫存寄存器,用來保存子中斷源信號,SRCPND是中斷源暫存寄存器, 用來保存中斷源信號。中斷信號可通過編程方式屏蔽掉,SUBMASK是子中斷源屏蔽寄存器,可以屏蔽指定的子中斷信號, MASK功能同SUBMASK用來屏蔽中斷源信號。中斷分為兩種模式:一般中斷的和快速中斷,MODE是中斷模式判斷寄存器,用來判斷當前中斷是否為快速 中斷,如果為快速中斷直接將快速中斷信號送給ARM內核,如果不是快速中斷,還要將中斷信號進行仲裁選擇。S3C2440A支持多達60種中斷,很有可能 多個硬件同時產生中斷請求,這時要求中斷控制器做出裁決,Priority是中斷源優先級仲裁選擇器,當多個中斷產生時,選擇出優先級最高的中斷源進行處 理,INTPND是中斷源結果寄存器,里面存放優先級仲裁出的唯一中斷源。
1 中斷的產生-中斷源
S3C2440A支持60種中斷源,基本上滿足了開發板內部,外部設備等對中斷的需求。其中每一個中斷源對應寄存器中的一位,顯然要支持60種中斷 至少需要二個32位寄存器,SUBSRCPND和SRCPND分別保存中斷源信號。S3C2440A對60種中斷源的管理是按層級分的。如圖3-4所示:
圖3-4中斷源信號復合示意圖
S3C2440A將中斷源分為兩級:中斷源和子中斷源,中斷源里包含單一中斷源和復合中斷源,復合中斷源是子中斷源的復合信號。如實時時鐘中斷,該 硬件只會產生一種中斷,它是單一中斷源,直接將其中斷信號線連接到中斷源寄存器上。對于復合中斷源,以UART串口為例進行說明,S3C2440A可以支 持3個UART串口,每個串口對應一個復合中斷源信號INT_UARTn,每個串口可以產生三種中斷,也就是三個子中斷:接收數據中斷INT_RXDn, 發送數據中斷INT_TXDn,數據錯誤中斷INT_ERRn,這三個子中斷信號在中斷源寄存器復合為一個中斷信號,三種中斷任何一個產生都會將中斷信號 傳遞給對應的中斷源INT_UARTn,然后通過中斷信號線傳遞給ARM內核。
圖3-5 UART串口中斷源信號復合示意圖
總中斷源詳下面表中列出了S3C2440A部分中斷源,它分別對應中斷源寄存器里某個位:詳細中斷源請查看S3C2440A硬件手冊。
表3-5 部分中斷源信號
中斷源 | 描述 | 優先級仲裁分組 |
INT_ADC | 數模轉換和觸摸屏中斷 | ARB5 |
INT_RTC | 實時時鐘中斷 | ARB5 |
INT_UART0 | UART0中斷(包含子中斷) | ARB5 |
INT_NFCON | NandFlash控制中斷 | ARB4 |
INT_WDT_AC97 | 看門狗中斷 | ARB1 |
EINT8-23 | 外部中斷8~23(包含外部子中斷) | ARB1 |
EINT4-7 | 外部中斷4~7(包含外部子中斷) | ARB1 |
EINT3 | 外部中斷3 | ARB0 |
EINT2 | 外部中斷2 | ARB0 |
EINT1 | 外部中斷1 | ARB0 |
EINT 0 | 外部中斷0 | ARB0 |
中斷信號除上述分法之外,還可以按照硬件位置分為:外部中斷源和內部中斷源。
內部中斷源:它是嵌入式系統中常見硬件產生的中斷信號,比如:UART串口中斷源,時鐘Timer中斷源,看門狗中斷源等
外部中斷源:有時嵌入式系統里要在外部接口上掛載一些外部設備,這些設備并不是一個通用嵌入式系統里必備硬件,比如:藍牙模塊,各種傳感器,WIFI無線 通信模塊,這些硬件也要產生中斷讓CPU來處理數據,因此這些外設硬件通過中斷信號線連接到中斷控制器上,它們產生的中斷叫做外部中斷信號。它們有著和內 部中斷一樣的處理機制,只不過,它沒有一個固定的中斷號與之對應,硬件與嵌入式系統的連接方式與中斷處理完全由系統硬件與軟件設計者實現。
外設硬件通過輸入輸出接口I/O Ports掛接到嵌入式系統上,I/O Ports向外設提供外部中斷信號線,輸出電源,頻率時鐘和輸入輸出信號線,外部硬件根據自己需要連接到I/O Ports上,產生中斷時向外部中斷信號線上送出中斷信號,通過外部中斷信號線傳遞到中斷控制器。
按鍵Key可以認為最為簡單的一種硬件設備了,如下圖所示:
圖3-6按鍵硬件接線原理圖
它功能很簡單,可以將電路接通,按鍵K1~K6一端接地為低電平,另外一端接電源正極為高電 平,EINT8,EINT11,EINT13,EINT14,EINT15,EINT19六根中斷信號線分別和高電平端按鍵相連,當按鍵按下時電路接通, 整個電路變成低電平,中斷信號線上電壓產生變化,通過設置中斷觸發方式,產生外部中斷請求,輸入到CPU內部,從而實現按鍵中斷控制。
S3C2440A可以支持EINT0~EINT23共24種外部中斷,完全可以滿足小型嵌入式設備外設硬件的需求。
外部中斷源也分為外部中斷源和外部子中斷源,其處理方式和內部中斷源基本一樣。
1.1.1 中斷優先級
S3C2440A支持60種中斷,多個硬件可能同時產生中斷請求,由于CPU只能處理一個中斷,中斷控制器怎么選擇出一個最佳的中斷,交給ARM內 核進行處理呢? 中斷控制器采用優先級仲裁比較的方式進行選擇,找出優先級最高的中斷源。中斷控制器將60種中斷源分成7組,如下圖所示,它類似體育賽事里的比賽方式,所 有參賽選手在小組賽PK,選擇出小組賽最優秀選手,然后進入決賽階段和其它小組最優先選擇再PK,最后優勝者就是總冠軍。其中 ARBITER0~ARBITER5為“小組賽”階段,中斷源信號在各自小組里進行優先級仲裁,選擇出最高優先級中斷信號,每小組選出的中斷信號送到 ARBITER6,也就是決賽階段,選擇出最高優先級中斷信號,交給ARM內核。
圖3-7 S3C2440優先級仲裁示意圖
中斷信號在7個分組里PK時的優先級是可編程的,通過PRIORITY寄存器進行優先級設置。如下表(只列出PRIORITY寄存器部分位):
表3-6 中斷優先級控制寄存器(PRIORITY)
寄存器名 | 地址 | 是否讀寫 | 描述 | 復位默認值 |
PRIORITY | 0x4A00000C | R/W | 中斷優先級控制寄存器 | 0x7F |
PRIORITY | 位 | 描述 | 初始值 |
ARB_SEL6 | [20:19] | 仲裁組6優先級排序方式 00 = REQ 0-1-2-3-4-5 01 = REQ 0-2-3-4-1-5 10 = REQ 0-3-4-1-2-5 11 = REQ 0-4-1-2-3-5 | 0x00 |
ARB_SEL5 | [18:17] | 仲裁組5優先級排序 00 = REQ 1-2-3-4 01 = REQ 2-3-4-1 10 = REQ 3-4-1-2 11 = REQ 4-1-2-3 | 00 |
… | … | … | … |
ARB_MODE6 | [6] | 仲裁組6優先級是否輪轉: 0 = 不輪轉, 1 = 輪轉 | 1 |
ARB_MODE5 | [5] | 仲裁組5優先級是否輪轉: 0 = 不輪轉, 1 = 輪轉 | 1 |
… | … | … | … |
通過設置仲裁組n優先級排序方式位,設置每個仲裁組內中斷信號的優先級順序,比如:ARB_SEL5分組時包含四個中斷信號:REQ1 INT_UART0, REQ2 INT_SPI1, REQ3 INT_RTC, REQ4 INT_ADC,ARB_SEL5位采用默認值:00,當INT_UART0和INT_RTC中斷信號同時產生時,INT_UART0會被選出,通過可編 程方式改變優先級排序方式來改變中斷信號優先級。
ARB_MODE0~ ARB_MODE6為每個仲裁分組的優先級輪轉設置位,采用默認值時,當前中斷信號被選擇處理之后,再次產生中斷請求時,它的優先級自動輪轉到該組最低, 這樣可以保證優先級低的中斷信號可以被及時處理,不至于出現優先級高且中斷請求頻繁的中斷每次都被優先處理,而優先級低的被“餓死”的情況。顯然,這種方 式更民主,實時性更佳。
2 中斷控制器相關寄存器
(1)SUBSRCPND子中斷源暫存寄存器
表3-7 子中斷源暫存寄存器(SUBSRCPND)
寄存器名 | 地址 | 是否讀寫 | 描述 | 復位默認值 |
SUBSRCPND | 0x4A000018 | R/W | 子中斷源暫存寄存器,保存中斷請求狀態: 0:沒有中斷請求信號 1:中斷請求信號產生 | 0x00000000 |
SUBSRCPND | 對應SRCPND | 位 | 描述 | 初始值 |
Reserved | 無 | [31:15] | 未使用 | 0 |
INT_AC97 | INT_WDT_AC97 | [14] | 0 = 未產生中斷 1 = 產生中斷 | 0 |
… | … | … | … | … |
INT_RXD0 | INT_UART0 | [0] | 0 = 未產生中斷 1 = 產生中斷 | 0 |
該寄存器用來標識保存子中斷源信號,當某個子中斷信號產生之后,SUBSRCPND對應位被自動置1,該位會一直保持被置位,只到中斷處理程序將其清除為止,需要注意一下,清除中斷是通過向對應位寫入1來清除,而不是寫入0,寫入0無效。
(2)INTSUBMSK子中斷源屏蔽寄存器
表3-8 子中斷源屏蔽寄存器(INTSUBMSK)
寄存器名 | 地址 | 是否讀寫 | 描述 | 復位默認值 |
INTSUBMSK | 0x4A00001C | R/W | 子中斷源信號屏蔽存寄存器,設置相應位來屏蔽中斷信號: 0:未屏蔽,中斷可用 1:屏蔽中斷信號 | 0xFFFF |
INTSUBMSK | 位 | 描述 | 初始值 |
Reserved | [31:15] | 未使用 | 0 |
INT_AC97 | [14] | 0 = 未屏蔽1 = 屏蔽中斷 | 1 |
… | … | … | … |
INT_RXD0 | [0] | 0 = 未屏蔽1 = 屏蔽中斷 | 1 |
該寄存器用來屏蔽子中斷源信號,默認值為全部子中斷都被屏蔽掉,因此要想處理某個硬件中斷,必須要打開中斷屏蔽位,通過寫入0來取消屏蔽中斷。
(3)SRCPND中斷源暫存寄存器
表3-9中斷源暫存寄存器(SRCPND)
寄存器名 | 地址 | 是否讀寫 | 描述 | 復位默認值 |
SRCPND | 0x4A000000 | R/W | 中斷源暫存寄存器,保存中斷請求狀態: 0:沒有中斷請求信號 1:中斷請求信號產生 | 0x00000000 |
SRCPND | 位 | 描述 | 初始值 |
INT_ADC | [31] | 0 = 未產生中斷 1 = 產生中斷 | 0 |
… | … | … | … |
EINT0 | [0] | 0 = 未產生中斷 1 = 產生中斷 | 0 |
該寄存器用來保存中斷源信號,當某個中斷信號產生之后, SRCPND對應位被自動置1,該位會一直保持被置位,只到中斷處理程序將其清除為止,需要注意一下,清除中斷是通過向對應位寫入1來清除,而不是寫入0,寫入0無效。
(4)INTMSK中斷源屏蔽寄存器
表3-10中斷源屏蔽寄存器(INTMSK)
寄存器名 | 地址 | 是否讀寫 | 描述 | 復位默認值 |
INTMSK | 0x4A000008 | R/W | 中斷源信號屏蔽存寄存器,設置相應位來屏蔽中斷信號: 0:未屏蔽,中斷可用 1:屏蔽中斷信號 | 0xFFFFFFFF |
INTMSK | 位 | 描述 | 初始值 |
INT_ADC | [31] | 0 = 未屏蔽1 = 屏蔽中斷 | 1 |
… | … | … | … |
EINT0 | [0] | 0 = 未屏蔽1 = 屏蔽中斷 | 1 |
該寄存器用來屏蔽中斷源信號,默認值為全部中斷都被屏蔽掉,因此要想處理某個硬件中斷,必須要打開中斷屏蔽位,通過寫入0來取消屏蔽中斷。
(5)INTPND最高優先級中斷暫存寄存器
表3-11最高優先級中斷暫存寄存器(INTPND)
寄存器名 | 地址 | 是否讀寫 | 描述 | 復位默認值 |
INTPND | 0x4A000010 | R/W | 最高優先級中斷暫存寄存器里面保存有經過優先級仲裁的結果: 0:沒有中斷請求信號 1:中斷請求信號產生 | 0x00000000 |
INTPND | 位 | 描述 | 初始值 |
INT_ADC | [31] | 0 = 未產生中斷 1 = 產生中斷 | 0 |
… | … | … | … |
EINT0 | [0] | 0 = 未產生中斷 1 = 產生中斷 | 0 |
該寄存器保存了經過優先級仲裁出的中斷信號位,它是所有當前中斷請求里優先級別最高的中斷,因此該寄存器里的值最多有一位被置1,通常中斷處理程序中會通過讀取該寄存器的值來獲得當前正在處理的中斷請求。中斷處理完成之后,通過寫入1來清除中斷。
(6)INTOFFSET中斷號偏移量寄存器
表3-12中斷號偏移量寄存器(INTOFFSET)
寄存器名 | 地址 | 是否讀寫 | 描述 | 復位默認值 |
INTOFFSET | 0x4A000014 | R | 中斷號偏移量寄存器,用來保存當前處理的中斷號 | 0x0000000 |
該寄存器里存放的是經過優先級仲裁出的中斷信號對應的中斷號,是一個0~31之間的整數,其實它就是INTPND里對應的位號,比 如:INT_UART0產生了中斷,INTPND里第28位置1,INTOFFSET里保存的整數就是28,多出來這個寄存器的目的主要是方便中斷處理程 序查詢中斷源,清除中斷源:
1 #define TIMER0_IRQ_OFT 10 // 時鐘0定時中斷
2
3 #define EINT0_IRQ_OFT 0 // 開發板K1按鍵1對應外部中斷EINT0
4
5 void handle_irq()
6
7 {
8
9 unsigned long irqOffSet = INTOFFSET; // 取得中斷號
10
11 switch(irqOffSet)
12
13 {
14
15 case TIMER0_IRQ_OFT: // 當前中斷為定時器0中斷
16
17 do_timer(); // 跳入定時器0處理程序
18
19 break;
20
21 case EINT0_IRQ_OFT: // 當前中斷為K1按鍵觸發
22
23 do_key1_pressed(); // 處理K1按下事件
24
25 break;
26
27 }
28
29
30
31 SRCPND &= (1< 33 INTPND = INTPND; // 清除最高優先級中斷暫存寄存器中斷 34 35 } (7)INTMOD中斷模式寄存器 表3-13中斷模式寄存器(INTMOD) 寄存器名 地址 是否讀寫 描述 復位默認值 INTMOD 0x4A000004 R/W 中斷模式寄存器,指定對應中斷模式: 0 = IRQ一般中斷模式 1 = FIQ快速中斷模式 0x0000000 INTMOD 位 描述 初始值 INT_ADC [31] 0 = IRQ 1 = FIQ 0 … … … … EINT0 [0] 0 = IRQ 1 = FIQ 0 通過設置INTMOD寄存器對應位,來指定對應中斷模式,如果指定為一般中斷,那么中斷信號會進行優先級仲裁,如果指定為快速中斷,那么中斷信號直接送給ARM內核產生中斷。需要注意的是,快速中斷不存在優先級仲裁,只能有一位被設置為FIQ模式。 ********************************************************************************************************************************************************** ************************************************************************************************************************************************************* 1.1 ARM處理器異常處理 所謂異常就是正常的用戶程序被暫時中止,處理器就進入異常模式,例如響應一個來自外設的中斷,或者當前程序非法訪問內存地址都會進入相應異常模式。 1.1.1 異常分類 (1)復位異常 當CPU剛上電時或按下reset重啟鍵之后進入該異常,該異常在管理模式下處理。 (2)一般/快速中斷請求 CPU和外部設備是分別獨立的硬件執行單元,CPU對全部設備進行管理和資源調度處理,CPU要想知道外部設備的運行狀態,要么CPU定時的去查看 外部設備特定寄存器,要么讓外部設備在出現需要CPU干涉處理時“打斷”CPU,讓它來處理外部設備的請求,毫無疑問第二種方式更合理,可以讓CPU“專 心”去工作,這里的“打斷”操作就叫做中斷請求,根據請求的緊急情況,中斷請求分一般中斷和快速中斷,快速中斷具有最高中斷優先級和最小的中斷延遲,通常 用于處理高速數據傳輸及通道的中數據恢復處理,如DMA等,絕大部分外設使用一般中斷請求。 (3)預取指令中止異常 該異常發生在CPU流水線取指階段,如果目標指令地址是非法地址進入該異常,該異常在中止異常模式下處理。 (4)未定義指令異常 該異常發生在流水線技術里的譯碼階段,如果當前指令不能被識別為有效指令,產生未定義指令異常,該異常在未定義異常模式下處理。 (5)軟件中斷指令(swi)異常 該異常是應用程序自己調用時產生的,用于用戶程序申請訪問硬件資源時,例如:printf()打印函數,要將用戶數據打印到顯示器上,用戶程序要想 實現打印必須申請使用顯示器,而用戶程序又沒有外設硬件的使用權,只能通過使用軟件中斷指令切換到內核態,通過操作系統內核代碼來訪問外設硬件,內核態是 工作在特權模式下,操作系統在特權模式下完成將用戶數據打印到顯示器上。這樣做的目的無非是為了保護操作系統的安全和硬件資源的合理使用,該異常在管理模 式下處理。 (6)數據中止訪問異常 該異常發生在要訪問數據地址不存在或者為非法地址時,該異常在中止異常模式下處理。 1.1.2 異常發生的硬件操作 在異常發生后,ARM內核會自動做以下工作: 保存執行狀態:將CPSR復制到發生的異常模式下SPSR中; 模式切換:將CPSR模式位強制設置為與異常類型相對應的值,同時處理器進入到ARM執行模式,禁止所有IRQ中斷,當進入FIQ快速中斷模式時禁止FIQ中斷; 保存返回地址:將下一條指令的地址(被打斷程序)保存在LR(異常模式下LR_excep)中。 跳入異常向量表:強制設置PC的值為相應異常向量地址,跳轉到異常處理程序中。 (1)保存執行狀態 當前程序的執行狀態是保存在CPSR里面的,異常發生時,要保存當前的CPSR里的執行狀態到異常模式里的SPSR里,將來異常返回時,恢復回CPSR,恢復執行狀態。 (2)模式切換 硬件自動根據當前的異常類型,將異常碼寫入CPSR里的M[4:0]模式位,這樣CPU就進入了對應異常模式下。不管是在ARM狀態下還是在 THUMB狀態下發生異常,都會自動切換到ARM狀態下進行異常的處理,這是由硬件自動完成的,將CPSR[5] 設置為 0。同時,CPU會關閉中斷IRQ(設置CPSR 寄存器I位),防止中斷進入,如果當前是快速中斷FIQ異常,關閉快速中斷(設置CPSR寄存器F位)。 (3)保存返回地址 當前程序被異常打斷,切換到異常處理程序里,異常處理完之后,返回當前被打斷模式繼續執行,因此必須要保存當前執行指令的下一條指令的地址到 LR_excep(異常模式下LR,并不存在LR_excep寄存器,為方便讀者理解加上_excep,以下道理相同),由于異常模式不同以及ARM內核 采用流水線技術,異常處理程序里要根據異常模式計算返回地址。 (4)跳入異常向量表 該操作是CPU硬件自動完成的,當異常發生時,CPU強制將PC的值修改為一個固定內存地址,這個固定地址叫做異常向量(詳見3.2.4章節)。
上一篇:ARMv8學習 —— SP_EL0和SP_ELx
下一篇:ARM匯編條件碼
推薦閱讀
史海拾趣
Delus Corp公司深知持續創新對于公司發展的重要性。因此,公司投入大量資源進行研發,并不斷探索新技術和新材料。同時,公司也高度重視產品質量,建立了嚴格的質量管理體系,確保每一件產品都符合高標準的質量要求。這些努力使得公司的產品線不斷豐富,產品質量得到了廣大客戶的認可。
EPI一直非常重視產品的品質管理。公司建立了嚴格的質量管理體系,從原材料采購到產品生產、檢測、包裝等各個環節都進行嚴格把控。此外,EPI還注重持續改進,不斷引入先進的生產技術和設備,提升產品的質量和性能。這些舉措使得EPI的產品在市場上享有很高的聲譽和口碑。
EPI一直非常重視產品的品質管理。公司建立了嚴格的質量管理體系,從原材料采購到產品生產、檢測、包裝等各個環節都進行嚴格把控。此外,EPI還注重持續改進,不斷引入先進的生產技術和設備,提升產品的質量和性能。這些舉措使得EPI的產品在市場上享有很高的聲譽和口碑。
EVER-WAY公司成立于XX世紀初,當時電子行業正處于蓬勃發展的階段。創始人李明看準了市場機遇,決定創立一家專注于電子元器件制造的公司。他帶領一支由幾名工程師組成的小團隊,開始了艱苦的創業之路。初期,公司面臨著資金短缺、技術落后和市場競爭激烈等多重挑戰。然而,李明和他的團隊憑借堅定的信念和不懈的努力,逐漸在市場中站穩腳跟。他們不斷優化產品性能,提高生產效率,同時積極拓展國內外市場,逐步擴大了公司的知名度和影響力。
隨著技術實力的增強,HVPSI開始將目光投向國際市場。公司積極參與國際電子展會,與全球各地的客戶建立聯系,展示其高壓電源解決方案的卓越性能。同時,HVPSI也加強了與跨國企業的合作,共同開發定制化的高壓電源產品,滿足特定行業的需求。這一系列舉措極大地拓寬了公司的市場份額,使其在國際舞臺上嶄露頭角。
HVPSI成立于本世紀初,起初是一家小型的技術初創企業,專注于研發高效、可靠的高壓電源模塊。在創始人及核心團隊的帶領下,公司迅速在MOV(金屬氧化物壓敏電阻)模塊領域取得了突破。這些模塊在電力電子設備中起到了關鍵的過壓保護作用,有效提高了系統的穩定性和安全性。通過不斷的技術迭代和產品優化,HVPSI逐漸在行業內樹立了技術領先的形象。
本帖最后由 jameswangsynnex 于 2015-3-3 20:02 編輯 ARM公司中國區總裁譚軍先生鉆入“蘋果核”里,站在“產業球”上,用兩種全新的視角帶領您探訪蘋果和整個消費電子產業的秘密。10年前Apple電腦業務曾遭不屑,蘋果計算機公司被Dell稱為“一家不 ...… 查看全部問答∨ |
未來用于人-人通信的終端可能只占整個終端市場的1/3,而更大數量的通信是機器對機器(M2M)的通信業務。在當今世界,機器的數量至少是人的數量的4倍,一個潛力巨大的市場即將形成。 說現代社會是一個網絡化的社會,沒有人會懷疑。網絡技術的出現 ...… 查看全部問答∨ |
請朋友們講解哈這個交通燈控制程序,剛學沒有多久,對中斷和定時方面不懂 請朋友講解哈,希望有調試的圖片 謝謝 #include<reg52.h> bit red,green,yellow,turnred;//定義紅綠黃燈標志位 code unsigned char tab[] ...… 查看全部問答∨ |
我的bsp里面有stepldr和eboot, 我想讓eboot跑起來, 但把stepldr.nb1燒寫到flash中后,在dnw上顯示的卻是亂碼!!!! 這個是串口的初始代碼: void Uart_Init(void) { int i; rUFCON1 = 0x0;   ...… 查看全部問答∨ |
這段時間做畢業設計時遇到了VHDL程序的一個問題,百思不得其解,希望各位前輩不吝賜教 源程序是這樣的 : library ieee; use ieee.std_logic_1164.all; USE IEEE.STD_LOGIC_unsigned.ALL; entity controler is port (clk,reset,jia,jian:in ...… 查看全部問答∨ |
|
設計資源 培訓 開發板 精華推薦
- 利用STM32MP1和STM32MP2在嵌入式 Linux 平臺上部署有效的安全保護機制
- 超小但強大:MCU 的小尺寸封裝和集成如何幫助優化空間受限的設計
- 德州儀器推出全球超小型 MCU,助力微型應用創新
- Microchip推出電動兩輪車(E2W)生態系統,加速電動出行創新
- 意法半導體推出STM32U3微控制器,面向遠程、智能和可持續應用,拓展超低功耗系列創新
- (一) ECloudIDE入門STM32-CubeMX工程創建與導入
- (二)ECloudIDE入門STM32-官方寄存器版例程使用
- Simulink STM32F407VGT6實現硬件在環
- openharmony:hilog_lite組件移植