日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Cortex-M3 内部寄存器

發布時間:2025/4/5 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Cortex-M3 内部寄存器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寄存器組

R0-R12

R0-R12,通用寄存器;?
R0-R12都是32位通用寄存器,用于數據操作;但是絕大多數16位Thumb指令只能訪問R0-R7,而32位Thumb指令可以訪問所有寄存器;

R13

R13,SP,堆棧指針;?
Cortex-M3有兩個堆棧指針,它們是Banked,任一時刻只能使用其中一個;當引用R13/SP時,引用的是當前正在使用的那一個,另一個必須使用MRS/MSR指令來訪問;?
- 主堆棧指針MSP:復位后缺省堆棧指針,用于操作系統內核操作和異常處理例程;?
- 進程堆棧指針PSP:由用戶的應用程序代碼使用;?
堆棧指針的最低兩位永遠為0,這意味著堆棧總是4字節對齊的;

R14

R14,LR,鏈接寄存器;?
當調用子程序時,由R14存儲返回地址;如果子程序多于1級,則需要把前一級的R14壓入堆棧;

R15

R15,PC,程序計數器寄存器?
讀PC值,返回的是當前指令地址+4;如果修改它,就能改變程序的執行流;?
在分支時,無論直接寫PC,還是使用分支指令,都必須保證加載到PC的數值是奇數(LSB=1),用以表明是在Thumb狀態下執行,如果為0,將產生fault;

特殊功能寄存器

特殊功能寄存器必須通過MRS/MSR指令操作;

程序狀態寄存器

程序狀態寄存器(PSRs或xPSR)在內部可分為3個子狀態寄存器:?
- 應用程序PSR(APSR)?
- 中斷號PSR(IPSR)?
- 執行PSR(EPSR)?
通過MRS/MSR指令,這3個PSR可以單獨訪問,也可組合訪問:?
- PSR = APSR + IPSR + EPSR?
- IAPSR = IPSR + APSR?
- IEPSR = IPSR + EPSR?
- EAPSR = EPSR + APSR

?313029282726-252423-2019-1615-1098-0
APSRNZCVQ???????
IPSR???????????Exception Number
EPSR?????ICI/ITT??ICI/IT??

中斷屏蔽寄存器

PRIMASK

這個寄存器只有一個位,置1后,將關閉所有可屏蔽中斷的異常,只剩NMI和硬fault,默認值為0;?
操作指令:

MRS R0, PRIMASK ; R0=PRIMASK MSR PRIMASK, R0 ; PRIMASK=R0 CPSID I ; PRIMASK=0 CPSIE I ; PRIMASK=1
  • 1
  • 2
  • 3
  • 4

FAULTMASK

這個寄存器也只有一位,置1后,屏蔽除NMI外的所有異常(包括硬fault),默認值為0;?
操作指令:

MRS R0, FAULTMASK ; R0=FAULTMASK MSR FAULTMASK, R0 ; FAULTMASK=R0 CPSID F ; FAULTMASK=0 CPSIE F ; FAULTMASK=1
  • 1
  • 2
  • 3
  • 4

BASEPRI

這個寄存器有9位,它定義了被屏蔽優先級的閾值;當它被設定為某個值后,所有優先級號大于等于此值得中斷都被關閉,若設為0,則不關閉任何中斷,默認值為0;

MRS R0, BASEPRI ; R0=BASEPRI MSR BASEPRI, R0 ; BASEPRI=R0
  • 1
  • 2

控制寄存器(CONTROL)

  • CONTROL[1]:為0表示選擇MSP,為1表示選擇PSP;
  • CONTROL[0]:為0表示特權級的線程模式,為1表示用戶級的線程模式;

總結

以上是生活随笔為你收集整理的Cortex-M3 内部寄存器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。