0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Cortex-M3寄存器的詳細(xì)資料匯總

GReq_mcu168 ? 來源:博客園 ? 作者:博客園 ? 2020-09-14 11:51 ? 次閱讀

1.寄存器

CM3擁有R0~R15通用寄存器和一些特殊功能寄存器

R0~R12這些通用寄存器,復(fù)位初始值都是不可預(yù)料的

2.CM3有R0到R15的通用寄存器組

注:絕大部分的16位thumb只能訪問R0到R7,而32位thumb-2可以訪問全部寄存器

3.特殊功能寄存器

3.1程序狀態(tài)寄存器組(應(yīng)用程序PSR+中斷號PSR+執(zhí)行PSR)

3.2中斷屏蔽寄存器組:用于控制異常的除能和使能

3.3控制寄存器:用于定義特權(quán)級別和當(dāng)前使用哪個(gè)堆棧指針

4.操作模式和特權(quán)級別:

兩種操作模式(處理器模式):Handler模式和線程模式(用于區(qū)分異常服務(wù)例程的代碼和普通程序的代碼)

兩種特權(quán)等級:特權(quán)級和用戶級(是指在硬件層面上對存儲器訪問權(quán)限的設(shè)置)

注:CM3在運(yùn)行主程序(即線程模式)可以使用特權(quán)級別和用戶級別;但是異常服務(wù)例程(即handler模式)只能使用特權(quán)級別。當(dāng)處于線程+用戶模式時(shí)一些訪問權(quán)限將被禁止

將代碼區(qū)分成用戶級和特權(quán)級,有利于程序架構(gòu)的穩(wěn)定,如某一個(gè)用戶代碼出問題,不會使其成為害群之狗,因?yàn)橛脩艏墑e的代碼是禁止對一些要害寄存器操作的。

5.異常處理

5.1CONTROL[0]=0;

5.2CONTROL[0]=1;

CONTROL[0]只有在特權(quán)級別下可以訪問,若在用戶級別想訪問先通過"系統(tǒng)服務(wù)呼叫指令(SVC)"來觸發(fā)SVC異常,然后在該異常的服務(wù)例程中可以修改CONTROL[0]。

6.下面是各操作模式的轉(zhuǎn)換

7.異常和中斷

可以有11個(gè)系統(tǒng)異常和最多240個(gè)外部中斷(IRQ),具體芯片使用了多少要看芯片制造廠商。

作為中斷功能的強(qiáng)化,NVIC 還有一條NMI輸入信號線,具體做什么由芯片制造商決定,NMI(not masked interrupted)

8.向量表:當(dāng)一個(gè)異常被CM3內(nèi)核接受。對應(yīng)的異常Handler就會執(zhí)行,向量表用來決定Handler的入口地址。

9.CM3的雙堆棧:主堆棧(MSP)和進(jìn)程堆棧(PSP)。是由CONTROL[1]控制的。

10.復(fù)位序列:

先從0X00地址取出MSP的值再從0x04地址取出PC的初始值,0X04處存的值是復(fù)位向量,而不是跳轉(zhuǎn)指令。

此處CM3與ARM單片機(jī)不同。以前ARM都是從0X00地址開始執(zhí)行第一條指令,一般第一條指令都是跳轉(zhuǎn)指令

11.MSP及PC初始化的一個(gè)例程

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5253

    瀏覽量

    119204
  • Cortex-M3
    +關(guān)注

    關(guān)注

    9

    文章

    268

    瀏覽量

    59359

原文標(biāo)題:Cortex-M3寄存器等基礎(chǔ)知識

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    cortex-m3中如何將AHB-AP 數(shù)據(jù)讀/寫寄存器中的內(nèi)容寫入RAM中?

    如題,我想自己編寫程序,通過JTAG口將bin文件寫入cortex-m3的RAM中,查看了下《cortex-m3技術(shù)參考手冊》,里面提到可以通過AHB-AP寄存器對內(nèi)部RAM進(jìn)行讀寫。在AHB-AP
    發(fā)表于 04-26 14:15

    Cortex-M3處理擁有哪些通用寄存器及特殊功能寄存器

    Cortex-M3處理擁有哪些通用寄存器及特殊功能寄存器呢?分別有哪些呢?
    發(fā)表于 11-25 09:23

    Cortex-M3 技術(shù)參考手冊

    第 1 章概述本章描述了 Cortex-M3 處理的組件以及處理的指令集。第 2 章編程模型(programmer’s model)本章描述了 Cortex-M3
    發(fā)表于 07-08 16:40 ?112次下載

    基于Cortex-M3的MP3播放設(shè)計(jì)

    基于Cortex-M3的MP3播放設(shè)計(jì).
    發(fā)表于 01-22 14:26 ?0次下載

    Cortex-M3權(quán)威指南中文版資料

    Cortex-M3權(quán)威指南中文版資料
    發(fā)表于 10-29 09:45 ?0次下載
    <b class='flag-5'>Cortex-M3</b>權(quán)威指南中文版<b class='flag-5'>資料</b>

    LPC17XX系列Cortex-M3微控制寄存器相關(guān)資料詳細(xì)說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是LPC17XX系列Cortex - M3微控制寄存器相關(guān)資料
    發(fā)表于 04-12 08:00 ?23次下載
    LPC17XX系列<b class='flag-5'>Cortex-M3</b>微控制<b class='flag-5'>器</b>的<b class='flag-5'>寄存器</b>相關(guān)<b class='flag-5'>資料</b><b class='flag-5'>詳細(xì)</b>說明

    寄存器的名稱和地址的映射詳細(xì)資料分析

    本文檔的主要內(nèi)容詳細(xì)介紹的是寄存器的名稱和地址的映射詳細(xì)資料分析。首先要清楚的一點(diǎn),所有操作,最終目的都是操作寄存器一,對比51單片機(jī)和STM32對
    發(fā)表于 07-01 17:42 ?1次下載
    <b class='flag-5'>寄存器</b>的名稱和地址的映射<b class='flag-5'>詳細(xì)資料</b>分析

    DSP28335 ACD寄存器詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是DSP28335 ACD寄存器詳細(xì)資料說明。
    發(fā)表于 05-27 13:43 ?4次下載
    DSP28335 ACD<b class='flag-5'>寄存器</b>的<b class='flag-5'>詳細(xì)資料</b>說明

    ARM Cortex-M3 內(nèi)核的不同功能模塊

    Cortex-M3內(nèi)核,內(nèi)部的數(shù)據(jù)路徑為32位,寄存器為32位,存儲接口也是32位。Cortex-M3采用了 哈佛結(jié)構(gòu),擁有獨(dú)立的指令總線和數(shù)據(jù)總線,可以讓取指與數(shù)據(jù)訪問分開
    發(fā)表于 07-08 15:18 ?9次下載
    ARM <b class='flag-5'>Cortex-M3</b> 內(nèi)核的不同功能模塊

    Cortex-M3寄存器資料下載

    電子發(fā)燒友網(wǎng)為你提供Cortex-M3寄存器資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文
    發(fā)表于 04-13 08:47 ?2次下載
    <b class='flag-5'>Cortex-M3</b><b class='flag-5'>寄存器</b>組<b class='flag-5'>資料</b>下載

    Cortex-M3處理內(nèi)核與基于Cortex-M3的MCU關(guān)系

    Cortex-M3Cortex-M3簡述Cortex-M3是ARM公司設(shè)計(jì)的ARMv7架構(gòu)下Cortex系列的首秀,其目的是為了讓32位處理加入單片機(jī)市場,
    發(fā)表于 11-05 18:35 ?8次下載
    <b class='flag-5'>Cortex-M3</b>處理<b class='flag-5'>器</b>內(nèi)核與基于<b class='flag-5'>Cortex-M3</b>的MCU關(guān)系

    ARM Cortex-M3系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    STM32 MCU系統(tǒng)時(shí)鐘樹 1.4 Cortex-M3簡介2. 通用并行GPIO口 2.1 GPIO結(jié)構(gòu)及寄存器說明 2.2 GPIO設(shè)計(jì)實(shí)例...
    發(fā)表于 11-05 19:50 ?22次下載
    ARM <b class='flag-5'>Cortex-M3</b>系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    Cortex-M3 內(nèi)部寄存器

    ;R13R13,SP,堆棧指針;Cortex-M3有兩個(gè)堆棧指針,它們是Banked,任一時(shí)刻只能使用其中一個(gè);當(dāng)引用R13/SP時(shí),引用的是當(dāng)前正在使用的那一個(gè),另一個(gè)必須使用MRS/MSR指令來訪...
    發(fā)表于 11-26 16:21 ?39次下載
    <b class='flag-5'>Cortex-M3</b> 內(nèi)部<b class='flag-5'>寄存器</b>

    Cortex-M3寄存器等基礎(chǔ)知識

    Cortex-M3擁有R0~R15通用寄存器和一些特殊功能寄存器。R0~R12這些通用寄存器,復(fù)位初始值都是不可預(yù)料的。
    發(fā)表于 02-08 16:28 ?2次下載
    <b class='flag-5'>Cortex-M3</b><b class='flag-5'>寄存器</b>等基礎(chǔ)知識

    Cortex-M3入門指南(二):寄存器

    第一行是偏移地址。偏移地址指明了這個(gè)寄存器相對于外設(shè)寄存器區(qū)段的位置,從起始地址表中我們可以知道 GPIOA 寄存器區(qū)段的起始地址是 0x4001_0800,而 GPIO_BSRR 的偏移地址為
    的頭像 發(fā)表于 05-31 17:36 ?1397次閱讀
    <b class='flag-5'>Cortex-M3</b>入門指南(二):<b class='flag-5'>寄存器</b>