娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

十四、s3c2440裸機(jī)—中斷控制器

發(fā)布者:平和思緒最新更新時(shí)間:2024-08-22 來源: cnblogs關(guān)鍵字:中斷控制器  工作模式 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

14.1 中斷體系

  • ARM 體系的CPU 有 7 種工作模式

    • 用戶模式(usr):ARM 處理器正常的程序執(zhí)行狀態(tài)

    • 快速中斷模式(fiq):用于高速數(shù)據(jù)傳輸或通道處理

    • 中斷模式(irq):用戶通用的中斷處理  

    • 管理模式(svc):操作系統(tǒng)使用的保護(hù)模式

    • 數(shù)據(jù)訪問終止模式(abt):當(dāng)數(shù)據(jù)或指令預(yù)取終止時(shí)進(jìn)入該模式,可用于虛擬存儲(chǔ)及存儲(chǔ)保護(hù)

    • 系統(tǒng)模式(sys):運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)

    • 未定義指令中止模式(und):當(dāng)未定義的指令執(zhí)行時(shí)進(jìn)入該模式,可用于支持硬件協(xié)處理器的軟件仿真

  可通過軟件來進(jìn)行模式切換,或者發(fā)生各類中斷、異常時(shí)CPU自動(dòng)進(jìn)入相應(yīng)的模式。除用戶模式外,其他6種工作模式都屬于特權(quán)模式,

  • ARM體系的CPU有以下兩種工作狀態(tài)

    • ARM 狀態(tài):此時(shí)處理器執(zhí)行 32 位的字對(duì)齊的 ARM 指令

    • Thumb 狀態(tài):此時(shí)處理器執(zhí)行 16 位的、半字對(duì)齊的  Thumb  指令  

  ARM920T 有 31 個(gè)通用的 32 位寄存器和 6 個(gè)程序狀態(tài)寄存器。這37個(gè)寄存器分位7組,進(jìn)入某個(gè)工作模式就使用哪組寄存器。在ARM狀態(tài)下,每種工作模式都有16個(gè)通用寄存器和1個(gè)(或2個(gè),取決于工作模式)程序寄存器。如下圖:

  

14.1.1 CPSR 寄存器

CPSR 寄存器稱為 當(dāng)前程序狀態(tài)寄存器

image.pngimage.png

(1)條件碼標(biāo)志

    N、Z、C、V均為條件碼標(biāo)志位。它們的內(nèi)容可被算術(shù)或邏輯運(yùn)算的結(jié)果所改變,并且可以決定某條指令是否被執(zhí)行。條件碼標(biāo)志各位的具體含義如下表所示:

標(biāo)志位含                                義
N當(dāng)用兩個(gè)補(bǔ)碼表示的帶符號(hào)數(shù)進(jìn)行運(yùn)算時(shí),N=1表示運(yùn)算的結(jié)果為負(fù)數(shù);N=0表示運(yùn)算的結(jié)果為正數(shù)或零
ZZ=1表示運(yùn)算的結(jié)果為零,Z=0表示運(yùn)算的結(jié)果非零。
C可以有4種方法設(shè)置C的值:
 -加法運(yùn)算(包括CMP):當(dāng)運(yùn)算結(jié)果產(chǎn)生了進(jìn)位時(shí)(無符號(hào)數(shù)溢出),C=1,否則C=0。
 -減法運(yùn)算(包括CMP):當(dāng)運(yùn)算時(shí)產(chǎn)生了借位時(shí)(無符號(hào)數(shù)溢出),C=0,否則C=1。
 -對(duì)于包含移位操作的非加/減運(yùn)算指令,C為移出值的最后一位。
 -對(duì)于其它的非加/減運(yùn)算指令,C的值通常不會(huì)改變。
V可以有2種方法設(shè)置V的值:
 -對(duì)于加減法運(yùn)算指令,當(dāng)操作數(shù)和運(yùn)算結(jié)果為二進(jìn)制的補(bǔ)碼表示的帶符號(hào)數(shù)時(shí),V=1表示符號(hào)位溢出
 -對(duì)于其它的非加/減運(yùn)算指令,V的值通常不會(huì)改變。
Q在ARM V5及以上版本的E系列處理器中,用Q標(biāo)志位指示增強(qiáng)的DSP運(yùn)算指令是否發(fā)生了溢出。在其它版本的處理器中,Q標(biāo)志位無定義


 

  在ARM狀態(tài)下,絕大多數(shù)的指令都是有條件執(zhí)行的;在THUMB狀態(tài)下,僅有分支指令是條件執(zhí)行的。

(2) 控制位

    CPSR的低8位(包括I、F、T和M[4:0])稱為控制位,當(dāng)發(fā)生異常時(shí)這些位可以被改變。如果處理器運(yùn)行于特權(quán)模式時(shí),這些位也可以由程序修改。

  •   中斷禁止位I、F:置1時(shí),禁止IRQ中斷和FIQ中斷。

  •   T標(biāo)志位:該位反映處理器的運(yùn)行狀態(tài)。當(dāng)該位為1時(shí),程序運(yùn)行于THUMB狀態(tài),否則運(yùn)行于ARM狀態(tài)。該信號(hào)反映在外部引腳TBIT上。在程序中不得修改CPSR中的TBIT位,否則處理器工作狀態(tài)不能確定。

  •   運(yùn)行模式位M[4:0]:這幾位是模式位,這些位決定了處理器的運(yùn)行模式。具體含義如下表所示:

  •   保留位:CPSR中的其余位為保留位,當(dāng)改變CPSR中的條件碼標(biāo)志位或者控制位時(shí),保留位不要改變,在程序中也不要用保留位存儲(chǔ)數(shù)據(jù)。保留位將用于ARM版本的擴(kuò)展。

image.png

14.1.2 SPSR---程序狀態(tài)保存寄存器

  當(dāng)切換進(jìn)入其他模式時(shí)候,在SPSR種保存前一個(gè)工作模式的 CPSR 的值,當(dāng)返回前一個(gè)工作模式時(shí),可以將 SPSR 的值恢復(fù)到 CPSR中。

  當(dāng)一個(gè)異常發(fā)生時(shí),將切換進(jìn)入相應(yīng)的工作模式,這時(shí),CPU 核將自動(dòng)完成如下事情:

  1. 在異常工作模式的連接寄存器 R14 中保存前一個(gè)工作模式的下一條,即將執(zhí)行的指令的地址。對(duì)于ARM狀態(tài),這個(gè)值是當(dāng)前PC值加4或加8

  2. 將CPSR 的值復(fù)制到異常模式的 SPSR

  3. 將 CPSR 的工作模式位設(shè)為這個(gè)異常對(duì)應(yīng)的工作模式

  4. 令 PC 值等于這個(gè)異常模式在異常向量表中的地址,即跳轉(zhuǎn)去執(zhí)行異常向量表中的相應(yīng)指令。

  從異常工作模式退出回到之前的工作模式時(shí),需要通過軟件完成如下事情:

  1. 前面進(jìn)入異常工作模式時(shí),連接寄存器中保存了前一工作模式的一個(gè)指令地址,將它減去一個(gè)適當(dāng)?shù)闹岛筚x值給 PC 寄存器

  2. 將 SPSR 的值復(fù)制給 CPSR

  

14.2 S3C2440 中斷控制器

  CPU 運(yùn)行過程中通過兩種方法知道各類外設(shè)發(fā)生了某些不預(yù)期的事件:

  1. 查詢方式:程序循環(huán)地查詢各設(shè)備的狀態(tài)并作出相應(yīng)反應(yīng)。

  2. 中斷方式:當(dāng)某事件發(fā)生時(shí),硬件會(huì)設(shè)備某個(gè)寄存器;CPU 在每執(zhí)行完一個(gè)指令時(shí),通過硬件查看這個(gè)寄存器,如果發(fā)現(xiàn)所關(guān)注的事件發(fā)生了,則中斷當(dāng)前程序流程,跳轉(zhuǎn)到一個(gè)固定的物理地址處理這事件,最后返回繼續(xù)執(zhí)行被中斷的程序。

  中斷處理過程:

  1. 中斷控制器匯集各類外設(shè)發(fā)出的中斷信號(hào),然后告訴 CPU

  2. CPU 保存當(dāng)前程序的運(yùn)行環(huán)境(各個(gè)寄存器等),調(diào)用中斷服務(wù)程序(ISR,Interrupt Service Routine)來處理這些中斷

  3. 在 ISR 中通過讀取中斷控制器、外設(shè)的相關(guān)寄存器來識(shí)別這是哪個(gè)中斷,并進(jìn)行相應(yīng)的處理

  4. 清除中斷:通過讀寫中斷控制器和外設(shè)的相關(guān)寄存器來實(shí)現(xiàn)

  5. 最后恢復(fù)被中斷程序的運(yùn)行環(huán)境(即上面保存的各個(gè)寄存器等),繼續(xù)執(zhí)行

  2440 的中斷處理框圖如下:

  

  1. Request sources(without sub-register) 中的中斷源被觸發(fā)后,SRCPND 寄存器中相應(yīng)位被只1,如果此時(shí)中斷沒有被 INTMSK 寄存器屏蔽或者快速中斷(FIQ)的話,它將被進(jìn)一步處理

  2. Request sources(with sub-register) 中的中斷源被觸發(fā)后,SUBSRCPND 寄存器中的相應(yīng)位被置1,如果此中斷沒有被 INTSUBMSK 寄存器屏蔽的話,它在 SRCPND 寄存器中的相應(yīng)位也被置 1 ,之后的處理過程與 上面 1 相同

  3. 在 SRCPND 寄存器中,被觸發(fā)的中斷的相應(yīng)位被置1,等待處理,如果被觸發(fā)的中斷中有快速中斷(FIQ)——MODE(INTMOD 寄存器)中為1的位對(duì)應(yīng)的中斷是 FIQ,則CPU進(jìn)入快速中斷模式(FIQ Mode)進(jìn)行處理

  4. 對(duì)于一般中斷IRQ,可能同時(shí)有幾個(gè)中斷被觸發(fā),未被 INTMSK 寄存器屏蔽的中斷經(jīng)過比較后,選出優(yōu)先級(jí)最后的中斷,此中斷在 INTPND 寄存器中的相應(yīng)位被置1,然后CPU進(jìn)入中斷模式(IRQ Mode)進(jìn)行處理。中斷服務(wù)程序可以通過讀取 INTPND 寄存器或者 INTOFFSET 寄存器來確定中斷源  

 1 objs := head.o init.o interrupt.o main.o

 2 

 3 int.bin: $(objs)

 4     arm-linux-ld -Ttext 0x00000000 -o int_elf $^

 5     arm-linux-objcopy -O binary -S int_elf $@

 6     arm-linux-objdump -D -m arm int_elf > int.dis

 7     

 8 %.o:%.c

 9     arm-linux-gcc -Wall -O2 -c -o $@ $<

10 

11 %.o:%.S

12     arm-linux-gcc -Wall -O2 -c -o $@ $<

13 

14 clean:

15     rm -f int.bin int_elf int.dis *.o


interrupt.c


 1 #include 's3c24xx.h'

 2 

 3 void EINT_Handle()

 4 {

 5     unsigned long oft = INTOFFSET;

 6     unsigned long val;

 7     

 8     switch( oft )

 9     {

10         // S2被按下

11         case 0: 

12         {   

13             GPFDAT |= (0x7<<4);   // 所有LED熄滅

14             GPFDAT &= ~(1<<4);      // LED1點(diǎn)亮

15             break;

16         }

17         

18         // S3被按下

19         case 2:

20         {   

21             GPFDAT |= (0x7<<4);   // 所有LED熄滅

22             GPFDAT &= ~(1<<5);      // LED2點(diǎn)亮

23             break;

24         }

25 

26         // K4被按下

27         case 5:

28         {   

29             GPFDAT |= (0x7<<4);   // 所有LED熄滅

30             GPFDAT &= ~(1<<6);      // LED4點(diǎn)亮                

31             break;

32         }

33 

34         default:

35             break;

36     }

37 

38     //清中斷

39     if( oft == 5 ) 

40         EINTPEND = (1<<11);   // EINT8_23合用IRQ5

41     SRCPND = 1<42     INTPND = 1<43 }


s3c24xxx.h


 1 /* WOTCH DOG register */

 2 #define     WTCON           (*(volatile unsigned long *)0x53000000)

 3 

 4 /* SDRAM regisers */

 5 #define     MEM_CTL_BASE    0x48000000

 6 #define     SDRAM_BASE      0x30000000

 7 

 8 /* NAND Flash registers */

 9 #define NFCONF              (*(volatile unsigned int  *)0x4e000000)

10 #define NFCMD               (*(volatile unsigned char *)0x4e000004)

11 #define NFADDR              (*(volatile unsigned char *)0x4e000008)

12 #define NFDATA              (*(volatile unsigned char *)0x4e00000c)

13 #define NFSTAT              (*(volatile unsigned char *)0x4e000010)

14 

15 /*GPIO registers*/

16 #define GPBCON              (*(volatile unsigned long *)0x56000010)

17 #define GPBDAT              (*(volatile unsigned long *)0x56000014)

18 

19 #define GPFCON              (*(volatile unsigned long *)0x56000050)

20 #define GPFDAT              (*(volatile unsigned long *)0x56000054)

21 #define GPFUP               (*(volatile unsigned long *)0x56000058)

22 

23 #define GPGCON              (*(volatile unsigned long *)0x56000060)

24 #define GPGDAT              (*(volatile unsigned long *)0x56000064)

25 #define GPGUP               (*(volatile unsigned long *)0x56000068)

26 

27 #define GPHCON              (*(volatile unsigned long *)0x56000070)

28 #define GPHDAT              (*(volatile unsigned long *)0x56000074)

29 #define GPHUP               (*(volatile unsigned long *)0x56000078)

30 

31 

32 

33 /*UART registers*/

34 #define ULCON0              (*(volatile unsigned long *)0x50000000)

35 #define UCON0               (*(volatile unsigned long *)0x50000004)

36 #define UFCON0              (*(volatile unsigned long *)0x50000008)

37 #define UMCON0              (*(volatile unsigned long *)0x5000000c)

38 #define UTRSTAT0            (*(volatile unsigned long *)0x50000010)

39 #define UTXH0               (*(volatile unsigned char *)0x50000020)

40 #define URXH0               (*(volatile unsigned char *)0x50000024)

41 #define UBRDIV0             (*(volatile unsigned long *)0x50000028)

42 

43 

44 /*interrupt registes*/

45 #define SRCPND              (*(volatile unsigned long *)0x4A000000)

46 #define INTMOD              (*(volatile unsigned long *)0x4A000004)

47 #define INTMSK              (*(volatile unsigned long *)0x4A000008)

48 #define PRIORITY            (*(volatile unsigned long *)0x4A00000c)

49 #define INTPND              (*(volatile unsigned long *)0x4A000010)

50 #define INTOFFSET           (*(volatile unsigned long *)0x4A000014)

51 #define SUBSRCPND           (*(volatile unsigned long *)0x4A000018)

52 #define INTSUBMSK           (*(volatile unsigned long *)0x4A00001c)

53 

54 /*external interrupt registers*/

55 #define EINTMASK            (*(volatile unsigned long *)0x560000a4)

56 #define EINTPEND            (*(volatile unsigned long *)0x560000a8)


head.S


 1 @******************************************************************************

 2 @ File:head.S

 3 @ 功能:初始化,設(shè)置中斷模式、管理模式的棧,設(shè)置好中斷處理函數(shù)

 4 @******************************************************************************       

[1] [2]
關(guān)鍵字:中斷控制器  工作模式 引用地址:十四、s3c2440裸機(jī)—中斷控制器

上一篇:Linux設(shè)備驅(qū)動(dòng)中的異步通知與異步I/O
下一篇:GCC編譯器原理(三)------編譯原理三:編譯過程(3)---編譯之匯編以及靜態(tài)鏈接【2】

推薦閱讀最新更新時(shí)間:2025-07-01 01:18

S3c2440裸機(jī)-spi編程-2.OLED顯示面板
1.OLED顯示面板介紹 以QG-2864TMBEG01這款OLED為例,可見它支持Parallel/i2c/SPI這3種方式對(duì)它進(jìn)行控制,這里僅對(duì)它進(jìn)行SPI控制。它的product Specification見附件。 并行接口時(shí)序: SPI串行接口時(shí)序 Tr/Tf: 表示spi clk上升/下降延不能超過40ns Tclkl/Tclkh: 表示spi clk低/高電平持續(xù)至少20ns Tcycle: 表示spi clk一個(gè)時(shí)鐘周期至少100ns Tdsw/Tdhw: 表示spi data的建立/持續(xù)時(shí)間至少15ms Tcss:片選建立時(shí)間至少20ns Tcsh:片選持續(xù)時(shí)間至少10ns Tas/Tah:地址建立/
[單片機(jī)]
<font color='red'>S3c2440</font><font color='red'>裸機(jī)</font>-spi編程-2.OLED顯示面板
s3c2440裸機(jī)-內(nèi)存控制器2-不同位寬外設(shè)與CPU地址總線的連接
不同位寬設(shè)備的連接 我們先看一下2440芯片手冊(cè)上外設(shè)rom是如何與CPU地址總線連接的。 8bit rom與CPU地址線的連接 8bit*2 rom與CPU地址線的連接 8bit*4 rom與CPU地址線的連接 16bit rom與CPU地址線的連接 16bit*2 rom與CPU地址線的連接 從上面的圖中,我們知道可以對(duì)2片位寬為8bit的外設(shè)擴(kuò)展級(jí)聯(lián)成1個(gè)16bit的外設(shè),同理可用4片位寬為8bit的外設(shè)進(jìn)行級(jí)聯(lián)成1個(gè)32bit的外設(shè)... 從上面的圖中,我們還看見一個(gè)規(guī)律: 當(dāng)外設(shè)總線位寬為8bit時(shí), 外設(shè)A0接CPU的地址總線ADDR , A - ADDR ...A - AD
[單片機(jī)]
s3c2440裸機(jī)-電阻觸摸屏-6-觸摸屏校準(zhǔn)實(shí)現(xiàn)-五點(diǎn)校準(zhǔn)法
前面我們講過觸摸屏觸摸屏校準(zhǔn)原理就是讓lcd能夠與觸摸屏坐標(biāo)對(duì)應(yīng)起來。 一、五點(diǎn)法校準(zhǔn)實(shí)現(xiàn) 一、我們?nèi),B,C,D,E這五個(gè)點(diǎn),那么這個(gè)時(shí)候我們需要把該5個(gè)點(diǎn)的觸摸屏和LCD的坐標(biāo)對(duì)應(yīng)起來,這就是校準(zhǔn)的過程。 ①在LCD顯示屏上A點(diǎn)顯示一個(gè)“十字”形狀 ②用戶在觸摸屏上點(diǎn)擊對(duì)應(yīng)A點(diǎn)的“十字”形狀 ③記錄觸摸屏的數(shù)據(jù)坐標(biāo) 同理在B,C, D, E點(diǎn)循環(huán)該①②③過程,就能得到這五點(diǎn)觸摸屏坐標(biāo)。 二 、然后根據(jù)這5個(gè)觸摸屏坐標(biāo)數(shù)據(jù)確定公式。 三 、以后得到TS觸點(diǎn)坐標(biāo),即可校準(zhǔn)出期待的TS坐標(biāo)。 下面開始函數(shù)實(shí)現(xiàn): 在LCD上顯示 十字 形狀,定義為函數(shù)fb_disp_cross() 記錄觸摸屏坐標(biāo),定義函數(shù)為ts_read
[單片機(jī)]
<font color='red'>s3c2440</font><font color='red'>裸機(jī)</font>-電阻觸摸屏-6-觸摸屏校準(zhǔn)實(shí)現(xiàn)-五點(diǎn)校準(zhǔn)法
ARM裸機(jī)學(xué)習(xí)一:S3C2440的時(shí)鐘體系
1.時(shí)鐘的產(chǎn)生 S3C2440的系統(tǒng)時(shí)鐘圖如下: S3C2440A的主時(shí)鐘源由外部時(shí)鐘(EXTCLK)或者外部晶振(XTIPll)提供,輸入時(shí)鐘源由模式控制引腳OM3和OM2控制選擇,在復(fù)位信號(hào)的上升沿參考OM3和OM2的引腳將OM 的狀態(tài)在內(nèi)部鎖定 大致過程是:經(jīng)過OM3和OM2引腳選擇的外部時(shí)鐘進(jìn)入MPLL(鎖相環(huán))和UPLL進(jìn)行倍頻,經(jīng)過MPLL得到FCLK直接供給給CPU,除此以外,F(xiàn)CLK還會(huì)經(jīng)過HDIV和PDIV分頻得到HCLK和PCLK,分別提供給APB總線和AHB總線。而經(jīng)過UPLL的會(huì)產(chǎn)生UCLK供給USB。如圖: 2.修改時(shí)鐘頻率的過程 1.上電后,復(fù)位芯片(nRESET)等待電源穩(wěn)定再輸出高電
[單片機(jī)]
ARM<font color='red'>裸機(jī)</font>學(xué)習(xí)一:<font color='red'>S3C2440</font>的時(shí)鐘體系
S3C2440裸機(jī)------異常與中斷__swi異常模示程序示例
一般來說,我們的app運(yùn)行于用戶模式,用戶模式是一種受限的模式,不能訪問硬件,如果app想訪問硬件,必須切換模式,當(dāng)發(fā)生中斷或者異常時(shí)會(huì)自動(dòng)切換模式,但是中斷和異常時(shí)可遇不可求的,這時(shí)候我們通過軟中斷切換模式。 1.start.S 由于復(fù)位之后cpu處于svc管理模式,所以我們先修改cpsr讓cpu處于用戶模式,然后設(shè)置用戶模式下的棧。 .text .global _start _start: b reset /* vector 0 : reset */ ldr pc, und_addr /* vector 4 : und */ ldr pc, swi_addr /* vector 8 :
[單片機(jī)]
<font color='red'>S3C2440</font><font color='red'>裸機(jī)</font>------異常與中斷__swi異常模示程序示例
自動(dòng)化、智能化的工作模式皆因機(jī)器人智能化系統(tǒng)
隨著工業(yè)自動(dòng)化水平的提升及機(jī)器人的普及使用,過去的磁軌式及圖形式引導(dǎo)車輛,架設(shè)不便、維護(hù)繁瑣、靈活不足等弊端為工業(yè)運(yùn)營帶來諸多不便。 針對(duì)市場(chǎng)痛點(diǎn),仙知機(jī)器人依托自主研發(fā)的激光SLAM算法、AMB系列無人搬運(yùn)底盤等科技成果,推出了新一代頂升式搬運(yùn)機(jī)器人! 仙知基于AMB的頂升式搬運(yùn)機(jī)器人 精準(zhǔn)穩(wěn)定、快速靈活,無人搬運(yùn) 基于AMB的頂升式搬運(yùn)機(jī)器人,通過SLAM算法完成環(huán)境地圖的構(gòu)建及高精度定位,可將貨物在指定地點(diǎn)之間進(jìn)行搬運(yùn),如電商分揀、物料轉(zhuǎn)運(yùn)、呼叫送料等環(huán)節(jié)。 AMB(Auto Mobile Base)是仙知自主研發(fā)的 “一種底盤,多種應(yīng)用”無人搬運(yùn)底盤。它可實(shí)現(xiàn)誤差±10mm以內(nèi)的高精準(zhǔn)定位;提供輥筒
[嵌入式]
這8種STM32中GPIO工作模式,你都知道嗎?
一、推挽輸出:可以輸出高、低電平,連接數(shù)字器件;推挽結(jié)構(gòu)一般是指兩個(gè)三極管分別受兩個(gè)互補(bǔ)信號(hào)的控制,總是在一個(gè)三極管導(dǎo)通的時(shí)候另一個(gè)截止。高低電平由IC的電源決定。 推挽電路是兩個(gè)參數(shù)相同的三極管或MOSFET,以推挽方式存在于電路中,各負(fù)責(zé)正負(fù)半周的波形放大任務(wù),電路工作時(shí),兩只對(duì)稱的功率開關(guān)管每次只有一個(gè)導(dǎo)通,所以導(dǎo)通損耗小、效率高。輸出既可以向負(fù)載灌電流,也可以從負(fù)載抽取電流。推拉式輸出級(jí)既提高電路的負(fù)載能力,又提高開關(guān)速度。 二、開漏輸出:輸出端相當(dāng)于三極管的集電極,要得到高電平狀態(tài)需要上拉電阻才行。適合于做電流型的驅(qū)動(dòng),其吸收電流的能力相對(duì)強(qiáng)(一般20mA以內(nèi))。開漏形式的電路有以下幾個(gè)特點(diǎn): 1、利用外部電
[單片機(jī)]
這8種STM32中GPIO<font color='red'>工作</font><font color='red'>模式</font>,你都知道嗎?
《ARM與Linux些許問題》第一章:ARM工作模式
==================================================================================================================================== 早期的ARM核有狀態(tài)(ARM或Thumb)切換(通過BX等指令修改CPSR寄存器(當(dāng)前程序狀態(tài)寄存器,存放條件碼標(biāo)志,中斷禁止位,當(dāng)前處理器模式以及其他狀態(tài)和控制信息)中T的控制位完成程序狀態(tài)的切換),現(xiàn)在ARM都只使用Thumb狀態(tài)了。所以,我們不在討論狀態(tài)切換相關(guān)。 一、ARM七種工作模式及其應(yīng)用場(chǎng)合(Linux操作系統(tǒng)使用了其中USR和SVC模式、出現(xiàn)異常時(shí)還
[單片機(jī)]
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 富裕县| 滕州市| 砀山县| 涿鹿县| 阿坝县| 怀来县| 平陆县| 浪卡子县| 自贡市| 荆门市| 成武县| 广西| 浠水县| 平定县| 荔浦县| 昔阳县| 姚安县| 敦化市| 筠连县| 江源县| 西乌珠穆沁旗| 信丰县| 华蓥市| 青神县| 二手房| 滁州市| 平远县| 丰顺县| 兰考县| 乐山市| 贵德县| 翼城县| 淳安县| 靖安县| 英山县| 淮安市| 赣州市| 枝江市| 湘潭县| 河间市| 达州市|