版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、單片機(jī)原理及其應(yīng)用ARM Cortex-M3 的STM32系列微型計算機(jī)的組成硬件和軟件計算機(jī)中CPU能直接提供的運(yùn)算有算術(shù)運(yùn)算和邏輯運(yùn)算。二進(jìn)制算數(shù)和邏輯運(yùn)算補(bǔ)碼算術(shù)運(yùn)算及溢出判別進(jìn)行 X + Y運(yùn)算,利用CPU內(nèi)部的加法器可直接計算得到。加法運(yùn)算X-Y運(yùn)算,會被轉(zhuǎn)換為X + (-Y),此時只需將-Y轉(zhuǎn)換為補(bǔ)碼,仍可通過加法器來實現(xiàn)。減法運(yùn)算二進(jìn)制算數(shù)和邏輯運(yùn)算例:用補(bǔ)碼運(yùn)算計算11-7=?取低八位二進(jìn)制算數(shù)和邏輯運(yùn)算例:A=17H, B=09H, 計算A+B (重點關(guān)注對FLAG寄存器各位的影響)執(zhí)行后: 結(jié)果為20H 標(biāo)志寄存器中的標(biāo)志位: CF=0 SF=0 ZF=0 OF=0 PF=
2、000010111 00001001 00100000 無進(jìn)位最高位是0 1的個數(shù)為奇 無溢出 結(jié)果不為0 二進(jìn)制算數(shù)和邏輯運(yùn)算補(bǔ)碼算術(shù)運(yùn)算及溢出判別進(jìn)行帶符號數(shù)計算時,如果計算的結(jié)果超出了二進(jìn)制帶符號數(shù)的表達(dá)范圍,就被稱為溢出。對運(yùn)算結(jié)果是否有溢出的判斷,可通過“雙進(jìn)位”法來進(jìn)行。溢出判別邏輯運(yùn)算是按照二進(jìn)制的最小單位Bit(位)來進(jìn)行的,常用的邏輯運(yùn)算有,與、或、異或、非等。二進(jìn)制算數(shù)和邏輯運(yùn)算與0相與得0,與1相與保持不變?!芭c0”運(yùn)算可以將指定位清0。 與運(yùn)算與1相或得1,與0相或保持不變?!盎?”運(yùn)算可以將指定位置1?;蜻\(yùn)算邏輯運(yùn)算0 0 1 1 B 0 1 0 1 B0 1 1 1
3、 B0 0 1 1 B 0 1 0 1 B0 0 0 1 B二進(jìn)制算數(shù)和邏輯運(yùn)算與1相異或等于取反,與0相異或保持不變。異或運(yùn)算可以對指定位求反。異或運(yùn)算按位取反,利用非運(yùn)算可以對所有位求反。非運(yùn)算1 0 0 1 B0 0 1 1 B 0 1 0 1 B0 1 1 0 B二進(jìn)制算數(shù)和邏輯運(yùn)算例1:用邏輯運(yùn)算將ASCII碼實現(xiàn)az和AZ之間的轉(zhuǎn)換解答:首先要清楚大寫字母和小寫字母的區(qū)別 小寫 a z 對應(yīng)的ASCII為:61H(01100001B)7AH (01101010B) 大寫 A Z對應(yīng)的ASCII為:41H (01000001B)5AH (01000001B) 小寫大寫:小寫字母 &1
4、1011111B(DFH) 大寫字母 大寫小寫:大寫字母 | 00100000B(20H) 小寫字母二進(jìn)制算數(shù)和邏輯運(yùn)算問題與思考1. 計算機(jī)硬件包含哪些組成部件?2. 微型計算機(jī)的CPU是如何執(zhí)行指令的?什么是指令流水線?3. 什么是內(nèi)存,內(nèi)存容量由什么決定,什么是存儲單元和內(nèi)存地址?4. CPU是如何訪問內(nèi)存的?需要哪些信號線,各信號的作用是什么?5. 什么是寄存器?寄存器的物理位置在哪里,作用是什么?CPU如何訪問寄存器?6. 幾個關(guān)鍵的寄存器PC、SP、FLAG的作用是什么,它們在什么情況下會發(fā)生改變?7. 堆棧區(qū)的功能是什么,通常在什么情況下使用,它是如何訪問的? 微型計算機(jī)的硬件組
5、成微型計算機(jī)的馮諾依曼結(jié)構(gòu)運(yùn)算器輸出設(shè)備控制器輸入設(shè)備存儲器指令流控制命令數(shù)據(jù)流微型計算機(jī)系統(tǒng)硬件的五大組成部分最核心的控制器和運(yùn)算器部分由CPU承擔(dān),所有操作都在控制器發(fā)出的控制信號的控制下完成的??刂破鞲鶕?jù)程序產(chǎn)生控制信號,程序則由編程人員編制并存放在存儲器中。 微型計算機(jī)的硬件組成執(zhí)行算術(shù)運(yùn)算和邏輯運(yùn)算的部件。由累加器(Accumulator,A)、暫存器(Temporary,TMP)、算術(shù)邏輯單元(Arithmatic Logic Unit,ALU)、標(biāo)志寄存器(Flag Registers,F(xiàn))和一些邏輯電路組成。運(yùn)算器 微型計算機(jī)的硬件組成控制器是指令執(zhí)行部件,包括取指令、分析指令
6、(指令譯碼)和執(zhí)行指令,由指令寄存器(Instruction Register,IR)、指令譯碼器(Instruction Decoder,ID)和定時控制電路(Timing and Control)等組成。計算機(jī)的所有操作都是在控制器的控制下完成的。控制器 微型計算機(jī)的硬件組成存儲器是計算機(jī)中存儲程序和數(shù)據(jù)的部件。計算機(jī)的存儲器分為兩大部分,一部分為內(nèi)部存儲器或主存儲器,簡稱內(nèi)存或主存;另一部分為外部存儲器或輔助存儲器,簡稱外存或輔存。存儲器 微型計算機(jī)的硬件組成計算機(jī)的硬件組成如何?運(yùn)算器的組成及功能?控制器的組成及功能?問題與思考Thanks 微型計算機(jī)的硬件組成計算機(jī)中存儲程序和數(shù)據(jù)的
7、部件??煞譃椋簝?nèi)部存儲器(內(nèi)存)/ 主存儲器(主存)外部存儲器(外存)/ 輔助存儲器(輔存)存儲器 微型計算機(jī)的硬件組成存儲容量描述存儲器存儲二進(jìn)制信息量多少。存儲二進(jìn)制信息的基本單位:位(bit,b)8個二進(jìn)制位組成的通用基本單元:字節(jié)(Byte,B)微型計算機(jī)中通常以字節(jié)為單位表示存儲容量。 存儲容量單位換算1KB=1024B1MB=1024KB1GB=1024MB1TB=1024GB 微型計算機(jī)的硬件組成存儲容量 微型計算機(jī)的硬件組成信息存入存儲器和從存儲器中取出所需要的時間,是描述存儲器工作快慢程度的指標(biāo)。 存取速度存儲器類型半導(dǎo)體存儲器。分為隨機(jī)讀寫存儲器RAM和只讀存儲器ROM。一
8、般RAM用作數(shù)據(jù)存儲器,存儲臨時數(shù)據(jù),讀寫速度更快;ROM用作程序存儲器,比如計算機(jī)BIOS程序就存放在ROM當(dāng)中。RAM又可以分為SRAM和DRAM。 微型計算機(jī)的硬件組成高速緩沖存儲器技術(shù) 目的:加快內(nèi)存的訪問速度 為了加快處理速度,在CPU與主存儲器之間增設(shè)了一級或兩級高速小容量存儲器,稱之為高速緩沖存儲器(Cache)。高速緩沖存儲器的存取速度比主存要快一個數(shù)量級,大體與CPU的速度相當(dāng)。CPU在取指令或取操作數(shù)時,首先看其是否在高速緩沖存儲器中,不在時才訪問主存儲器。指令或操作數(shù)在高速緩沖存儲器中時,稱為“命中”,反之稱為“未命中”。CPUCacheSRAM高速緩存 控制器 主存 D
9、RAM高速緩存系統(tǒng) 微型計算機(jī)的硬件組成虛擬存儲器技術(shù) 目的:擴(kuò)大用戶可用內(nèi)存儲器空間 CPU物理主內(nèi)存高速、小容量存儲管理機(jī)制 外部存儲器低速、大容量如:硬盤、光盤 Cache虛擬主內(nèi)存 虛擬存儲器技術(shù)是一種通過硬件和軟件結(jié)合擴(kuò)大用戶可用存儲空間的技術(shù)。它在內(nèi)存儲器和外存儲器(軟盤、硬盤或光盤)之間增加一些的硬件和軟件,使兩者形成一個有機(jī)整體。 微型計算機(jī)的硬件組成某處理器有30根地址線,可尋址地址空間為( )。A16M B.256MC1G D.4G ROM和RAM性能的主要區(qū)別即各自的應(yīng)用領(lǐng)域如何?存儲器涉及哪些引腳,讀寫過程是如何實現(xiàn)的? 問題與思考討論與交流Thanks 微型計算機(jī)的硬
10、件組成是微型計算機(jī)的運(yùn)算和控制指揮中心,由運(yùn)算器、控制器和寄存器陣列三個主要部件組成微處理器微處理內(nèi)部結(jié)構(gòu) 微型計算機(jī)的硬件組成執(zhí)行算術(shù)運(yùn)算和邏輯運(yùn)算的部件,由累加器(Accumulator,A)、暫存器(Temporary,TMP)、算術(shù)邏輯單元(Arithmatic Logic Unit,ALU)、標(biāo)志寄存器(Flag Registers,F(xiàn))和一些邏輯電路組成。運(yùn)算器 微型計算機(jī)的硬件組成控制器是指令執(zhí)行部件,包括取指令、分析指令(指令譯碼)和執(zhí)行指令,由指令寄存器(Instruction Register,IR)、指令譯碼器(Instruction Decoder,ID)和定時控制電路
11、(Timing and Control)等組成。計算機(jī)的所有操作都是在控制器的控制下完成的??刂破鞒绦蛑噶?指令2指令3指令n 取指令指令譯碼取操作數(shù)執(zhí)行指令存結(jié)果指令周期操作碼操作數(shù)執(zhí)行 微型計算機(jī)的硬件組成寄存器也是CPU的重要組成部分,用來“寄存”數(shù)據(jù)處理的當(dāng)前信息。按照用途可分為:通用寄存器,供用戶存取數(shù)據(jù)特殊寄存器,用來管理堆棧的寄存器-堆棧指示器SP,還比如用來管理程序步序的程序計數(shù)器PC。特殊寄存器一般不允許用戶隨便使用。寄存器陣列 微型計算機(jī)的硬件組成一塊設(shè)在內(nèi)存中按先進(jìn)后出(First In Last Out,F(xiàn)ILO)原則組織的存儲區(qū)域,用于子程序和中斷程序調(diào)用時的現(xiàn)場保護(hù)
12、和參數(shù)傳遞,也可存放數(shù)據(jù)。數(shù)據(jù)存入棧區(qū)稱為壓棧(PUSH),從棧區(qū)中取出數(shù)據(jù)稱為彈棧(POP)。 PUSH和POP操作每次壓入或彈出一個元素,元素的大小根據(jù)機(jī)型和指令不同而不同。堆棧堆棧指示器SP用于指示當(dāng)前棧頂元素所在的位置。壓棧、彈??偸窃跅m斶M(jìn)行的,隨著對堆棧的壓入和彈出操作,SP的值會自動變化。 微型計算機(jī)的硬件組成堆棧區(qū)的訪問特點?堆棧區(qū)的主要用途?四種堆棧訪問方式究竟是如何工作的?討論與交流 微型計算機(jī)的硬件組成是微型計算機(jī)的運(yùn)算和控制指揮中心,由運(yùn)算器、控制器和寄存器陣列三個主要部件組成微處理器微處理內(nèi)部結(jié)構(gòu) 微型計算機(jī)的硬件組成執(zhí)行算術(shù)運(yùn)算和邏輯運(yùn)算的部件,由累加器(Accum
13、ulator,A)、暫存器(Temporary,TMP)、算術(shù)邏輯單元(Arithmatic Logic Unit,ALU)、標(biāo)志寄存器(Flag Registers,F(xiàn))和一些邏輯電路組成。運(yùn)算器 微型計算機(jī)的硬件組成控制器是指令執(zhí)行部件,包括取指令、分析指令(指令譯碼)和執(zhí)行指令,由指令寄存器(Instruction Register,IR)、指令譯碼器(Instruction Decoder,ID)和定時控制電路(Timing and Control)等組成。計算機(jī)的所有操作都是在控制器的控制下完成的??刂破鞒绦蛑噶?指令2指令3指令n 取指令指令譯碼取操作數(shù)執(zhí)行指令存結(jié)果指令周期操作碼
14、操作數(shù)執(zhí)行 微型計算機(jī)的硬件組成寄存器也是CPU的重要組成部分,用來“寄存”數(shù)據(jù)處理的當(dāng)前信息。按照用途可分為:通用寄存器,供用戶存取數(shù)據(jù)特殊寄存器,用來管理堆棧的寄存器-堆棧指示器SP,還比如用來管理程序步序的程序計數(shù)器PC。特殊寄存器一般不允許用戶隨便使用。寄存器陣列 微型計算機(jī)的硬件組成一塊設(shè)在內(nèi)存中按先進(jìn)后出(First In Last Out,F(xiàn)ILO)原則組織的存儲區(qū)域,用于子程序和中斷程序調(diào)用時的現(xiàn)場保護(hù)和參數(shù)傳遞,也可存放數(shù)據(jù)。數(shù)據(jù)存入棧區(qū)稱為壓棧(PUSH),從棧區(qū)中取出數(shù)據(jù)稱為彈棧(POP)。 PUSH和POP操作每次壓入或彈出一個元素,元素的大小根據(jù)機(jī)型和指令不同而不同。
15、堆棧堆棧指示器SP用于指示當(dāng)前棧頂元素所在的位置。壓棧、彈棧總是在棧頂進(jìn)行的,隨著對堆棧的壓入和彈出操作,SP的值會自動變化。 微型計算機(jī)的硬件組成堆棧區(qū)的訪問特點?堆棧區(qū)的主要用途?四種堆棧訪問方式究竟是如何工作的?討論與交流 微型計算機(jī)的硬件結(jié)構(gòu)總線微型計算機(jī)在硬件上普遍采用總線結(jié)構(gòu)。總線結(jié)構(gòu)使系統(tǒng)構(gòu)成方便,并具有很好的可維護(hù)性和可擴(kuò)展性。存儲器I/O接口輸入設(shè)備I/O接口地址總線 AB輸出設(shè)備CPU數(shù)據(jù)總線 DB控制總線 CBI/O接口連接多個功能部件或多個裝置的一組公共信號線。連在總線上的所有部件均能使用的公共線路,但使用必須是分時的。計算機(jī)總線系統(tǒng) 微型計算機(jī)的硬件結(jié)構(gòu)按傳輸信息類別
16、,總線分為:數(shù)據(jù)總線(Data Bus ,DB),傳輸數(shù)據(jù)信息地址總線(Address Bus ,AB ),傳輸?shù)刂沸畔⒖刂瓶偩€(Control Bus, CB),傳輸控制信息 微型計算機(jī)的硬件結(jié)構(gòu)數(shù)據(jù)總線DB是CPU用來傳送數(shù)據(jù)信息的信號線,為雙向(雙向傳送信息)、三態(tài)(高、低電平狀態(tài),以及高阻抗?fàn)顟B(tài)(浮空狀態(tài))總線。位數(shù)越寬,一次數(shù)據(jù)傳輸?shù)男畔⒘烤驮酱蟆?微型計算機(jī)的硬件結(jié)構(gòu)與三總線地址總線AB是微型計算機(jī)用來傳送地址信息的信號線,為單向(單向傳送信息)、三態(tài)總線,由微處理器發(fā)出,尋址存儲器或外設(shè)。AB的位數(shù)越寬,尋址的空間就越大。 編址方式 獨立編址-多種尋址指令 統(tǒng)一編址-單個尋址指令
17、 微型計算機(jī)的硬件結(jié)構(gòu)控制總線CB傳送控制信號的一組總線,實現(xiàn)CPU對外部功能部件(包括存儲器和I/O接口)的控制及接收外部傳送給CPU的狀態(tài)信號,包括微處理器向存儲器發(fā)送的讀選通信號RD、寫選通信號WR,以及外設(shè)向微處理器發(fā)送的中斷請求信號NMI、INTR等??刂瓶偩€的各位作用不同,且一般都是單向的。 微型計算機(jī)的硬件結(jié)構(gòu)討論與交流深入理解統(tǒng)一編址與獨立編址問題,其含義及特點是什么?Thanks無符號數(shù)的表示 計算機(jī)采用二進(jìn)制:只能認(rèn)識和處理二進(jìn)制數(shù)即:“0”、“1”以及由“0”“1”組成的信息十進(jìn)制數(shù)、az AZ%、!、$計算機(jī)系統(tǒng)十進(jìn)制數(shù)計算機(jī)只能操作二進(jìn)制數(shù),而人們?nèi)粘V涣?xí)慣使用十進(jìn)制
18、,人要和計算機(jī)打交道要進(jìn)行進(jìn)制之間的轉(zhuǎn)換。先把十進(jìn)制轉(zhuǎn)換為二進(jìn)制,交給計算進(jìn)行運(yùn)算,計算機(jī)運(yùn)算的結(jié)果再轉(zhuǎn)換成十進(jìn)制輸出給用戶。由于二進(jìn)制的缺點:書寫冗長、易錯,因此引入十六進(jìn)制數(shù)(另有八進(jìn)制),作為二進(jìn)制數(shù)的簡化書寫符號。數(shù)字末尾標(biāo)注:二進(jìn)制:B;十進(jìn)制:D或省略十六進(jìn)制:H十進(jìn)制二進(jìn)制無符號數(shù)的表示 整數(shù)“除2取余,逆序排列”小數(shù)“乘2取整,順序排列”二進(jìn)制十進(jìn)制無符號數(shù)的表示 從右到左每一位二進(jìn)制的數(shù)乘以2的相應(yīng)次方,再求和無符號數(shù)的表示 0、1、29, A、B、C、D、E、F 借用十進(jìn)制的十個符號 借用六個英文字母 構(gòu)成十六進(jìn)制的16個數(shù)字符號十六進(jìn)制“一比四”的對應(yīng)關(guān)系:每一位十六進(jìn)制
19、數(shù)對應(yīng)四位二進(jìn)制十六進(jìn)制二進(jìn)制00000100012001030011401005010160110701118100091001A1010B1011C1100D1101E1110F1111二進(jìn)制與十六進(jìn)制的轉(zhuǎn)換每4位二進(jìn)制數(shù)對應(yīng)1位十六進(jìn)制數(shù)。無符號數(shù)的表示 小數(shù)點向兩側(cè),每4位分為1組,不足4位則添0湊夠4位(19個符號)(6個符號)練習(xí):(11.1)B轉(zhuǎn)換為十進(jìn)制數(shù)是多少? (11.1)H轉(zhuǎn)換為十進(jìn)制數(shù)是多少?無符號數(shù)的表示 解答:(11.1)B = 3.5 (11.1)H = 17.0625無符號數(shù)的表示 問題與思考(101.01)B-( )D(101.1)H-( )D(36.75)H
20、-( )B(36.75)D-( )B 無符號數(shù)的表示 問題與思考(101.01)B-( 5.25 )D(101.1)H-( 257.0625 )D(36.75)H-( 110110.01110101 )B(36.75)D-( 100100.11 )B 機(jī)器數(shù)在計算機(jī)中,無論數(shù)值還是符號,都是用0或1來表示。機(jī)器數(shù)表示的真實值稱為真值。帶符號整數(shù)的表示 帶符號整數(shù)的機(jī)器數(shù)通常用最高位做符號位,0表示正數(shù),1表示負(fù)數(shù)。常用的表示方法有:原碼、 反碼、 補(bǔ)碼原碼最高位表示符號(0正1負(fù)),其余位用真值絕對值的二進(jìn)制表示數(shù)值。帶符號整數(shù)的表示原碼 優(yōu)點:簡單直觀,與真值的對應(yīng)直觀,轉(zhuǎn)換方便。以8位原碼
21、為例,表示范圍:1111 1111B 0111 1111B - 127 +127缺點:0的表示不唯一帶符號整數(shù)的表示原碼0000 0000B - 01000 0000B+ 0計算結(jié)果出錯 1 0 0 0 0 0 1 1B- 3+ 0 0 0 0 0 0 1 1B+3 1 0 0 0 0 1 1 0B- 6反碼最高位表示符號(0正1負(fù)),正數(shù)的反碼數(shù)值位同原碼,負(fù)數(shù)的反碼數(shù)值位是其原碼的按位取反帶符號整數(shù)的表示反碼 優(yōu)點:糾正了原碼的運(yùn)算錯誤。以8位二進(jìn)制碼為例,表示范圍為:反碼:1000 0000B0111 1111B原碼: 1111 1111B0111 1111B真值:- 127+ 127缺
22、點:0的表示不唯一帶符號整數(shù)的表示反碼與真值轉(zhuǎn)換不直觀(反碼原碼真值)反碼:1111 1111B0000 0000B原碼: 1000 0000B0000 0000B真值:- 0+ 0補(bǔ)碼最高位表示符號(0正1負(fù)),正數(shù)的補(bǔ)碼數(shù)值位同原碼,負(fù)數(shù)的補(bǔ)碼數(shù)值位是其原碼按位取反再加1帶符號整數(shù)的表示補(bǔ)碼 以8位二進(jìn)制碼為例,表示范圍為:補(bǔ)碼:1000 0000B0111 1111B反碼:0111 1111B原碼: 0111 1111B真值:- 128+ 127優(yōu)點:0的表示是唯一的帶符號整數(shù)的表示補(bǔ)碼做加法時,符號位也參與運(yùn)算,將減法運(yùn)算變?yōu)榧臃ㄟ\(yùn)算,結(jié)果正確。補(bǔ)碼:1111 1101B0000 00
23、11B反碼:1111 1100B0000 0011B原碼: 1000 0011B0000 0011B真值:- 3+ 3與真值轉(zhuǎn)換不直觀(補(bǔ)碼反碼原碼真值) 1 1 1 1 1 1 0 1B- 3+ 0 0 0 0 0 0 1 1B+ 3 0 0 0 0 0 0 0 0B0缺點:減1數(shù)值位取反不變不變問題與思考X補(bǔ)碼=01101101B X原碼= BX補(bǔ)碼=11010110B X原碼= B相同位數(shù)的有符號數(shù)比無符號數(shù)表示的范圍大;(對or錯 )帶符號整數(shù)的表示補(bǔ)碼 問題與思考X補(bǔ)碼=01101101B X原碼= 01101101 BX補(bǔ)碼=11010110B X原碼= 10101010 B相同位
24、數(shù)的有符號數(shù)比無符號數(shù)表示的范圍大;(錯 )帶符號整數(shù)的表示補(bǔ)碼 定點數(shù)浮點數(shù)表示及轉(zhuǎn)換定點數(shù)表示數(shù)的范圍受字長限制,表示數(shù)的范圍有限,表示的精度有限。常用于表示純整數(shù)、純小數(shù)。浮點數(shù)IEEE754標(biāo)準(zhǔn)浮點數(shù)由階碼和尾數(shù)兩個部分組成。單精度格式: 32位雙精度格式: 64位1823S符號位EM階碼尾數(shù)11152S符號位EM階碼尾數(shù)移碼浮點數(shù)表示及轉(zhuǎn)換對真值補(bǔ)碼的符號位取反, 相當(dāng)于真值增加12810000000-0000000000000000-10000000一般用移碼減一作浮點數(shù)的階碼。(十進(jìn)制數(shù)+127)B = 對應(yīng)的移碼浮點數(shù)的表示浮點數(shù)表示及轉(zhuǎn)換符號位EM階碼尾數(shù)S浮點數(shù)的表示浮點數(shù)
25、表示及轉(zhuǎn)換例:用32位單精度表示-108.0125-108.0125D=(-1)*1101100.000000110011001100B=(-1)* 26*1.101100 000000110011001100BS=1B E=6+127=133=10000101B 階數(shù)范圍-127128M=101100 00000011001100110B表示結(jié)果: 1 10000101 101100 000000110011001101823符號位EM階碼尾數(shù)即:C2D80666HS浮點數(shù)表示及轉(zhuǎn)換幾個特殊數(shù)值:E為 0000000011111111對應(yīng)-127128當(dāng)E的二進(jìn)制位全為1(128)時為特殊數(shù)
26、值:此時,若M的二進(jìn)制位全為0,則n表示無窮大。若S為1則為負(fù)無窮大,若S為0則為正無窮大; 若M的二進(jìn)制位不全為0時,表示NaN(Not a Number),表示這不是一個合法實數(shù)。E為全0 (-127)時:M全為0時,表示機(jī)器0; M不全為0時,表示非規(guī)格化的數(shù)。單精度數(shù)E的取值為1254 (-126127) (8位表示),M為23位,共32位;雙精度數(shù)E的取值為12046 (-10221023) (11位表示),M為52位,共64位。 思考:浮點數(shù)表示及轉(zhuǎn)換將十進(jìn)制數(shù)9轉(zhuǎn)換為IEEE754標(biāo)準(zhǔn)的單精度數(shù)是多少?,如果用補(bǔ)碼來表示是多少?解答:(1)轉(zhuǎn)換成IEEE754標(biāo)準(zhǔn)的單精度數(shù)9=
27、(-1)01001=(-1)023 1.001 =(-1)02130-127 1.001 二進(jìn)制代碼為:0 10000010 00100000000000000000000 即:41100000H(2)如果表示成補(bǔ)碼9 = 1001 即00000009H 浮點數(shù)表示及轉(zhuǎn)換問題與思考將下列浮點數(shù)的內(nèi)存映像用16進(jìn)制表示0.15625, -5, 13/32浮點數(shù)表示及轉(zhuǎn)換問題與思考解 (1) 0.15625轉(zhuǎn)換成二進(jìn)制值為0.00101B,在IEEE754中規(guī)格化表示為1.0123,e1273124,IEEE754編碼為:0 01111100 01000000000000000000000 即:3
28、E200000H (2)5轉(zhuǎn)換成二進(jìn)制值為:101B在IEEE754中規(guī)格化表示為1.0122, e1272129,IEEE754編碼為:1 10000001 01000000000000000000000 即:C0A00000H (3) 13/32= (-1)011012-5 =(-1)02-5231.101 =(-1)02125-127 1.101 IEEE754編碼為:0 01111101 10100000000000000000000 即:3ED00000H 浮點數(shù)表示及轉(zhuǎn)換討論與交流在計算機(jī)內(nèi),浮點數(shù)的存儲誤差是如何產(chǎn)生的,如何減小存儲誤差?Thanks計算機(jī)中常用的兩種編碼BCD碼
29、和ASCII碼,是為方便在特定場合下進(jìn)行特定計算而制定的編碼規(guī)則。ASCII碼和BCD碼表示方法ASCII碼American Standard Code for Information Interchange美國標(biāo)準(zhǔn)信息交換碼用4位二進(jìn)制數(shù)表示1位十進(jìn)制數(shù)的編碼方法。在計算機(jī)里,又可分為:分離BCD碼、組合BCD碼。BCD碼- Binary-Coded Decimal 二進(jìn)制編碼的十進(jìn)制數(shù)使用指定的7位或8位二進(jìn)制數(shù)組合來表示128或256種可能的字符,包括大小寫字母、數(shù)字、標(biāo)點符號,和一些特殊控制字符。ASCII碼和BCD碼表示方法BCD碼十進(jìn)制數(shù)組合BCD碼分離BCD碼十六進(jìn)制數(shù)00000
30、0000 00000H100010000 00011H200100000 00102H300110000 00113H401000000 01004H501010000 01015H601100000 01106H701110000 01117H810000000 10008H910010000 10019H二進(jìn)制編碼的十進(jìn)制數(shù)ASCII碼和BCD碼表示方法四位二進(jìn)制數(shù)的組合 十進(jìn)制數(shù) 十六進(jìn)制數(shù)000000010010.1001101010111100110111101111012.9101112131415012.9ABCDEFBCD 非法BCD 二進(jìn)制數(shù) 碼1)BCD碼是用來表示十進(jìn)制數(shù)
31、的。它不是用09這10個符號,而是用四位“0”和“1”來 表示一位十進(jìn)制數(shù) 2)BCD表達(dá)的是十進(jìn)制數(shù),應(yīng)當(dāng)保持十進(jìn)制數(shù)的特點:“逢十進(jìn)位”,“借一作十”。3)BCD不是純二進(jìn)制數(shù)ASCII碼和BCD碼表示方法BCD碼既不是二進(jìn)制,也不是十進(jìn)制。是二進(jìn)制編碼的十進(jìn)制數(shù)十進(jìn)制十進(jìn)制“二進(jìn)制BCD看起來和十進(jìn)制一樣”ASCII碼和BCD碼表示方法BCD碼的十進(jìn)制調(diào)整BCD碼加法的十進(jìn)制調(diào)整方法: 對非法BCD碼加6修正低位向高位有進(jìn)位,低位加6修正例:計算(0100 0010)BCD+(0001 1001)BCD 42+19=610100 0010 + 0001 1001 0101 1011 非法
32、BCD 調(diào)整 + 0000 0110 (06調(diào)整) 0110 000161D 調(diào)整后的BCD ASCII碼和BCD碼表示方法BCD碼的十進(jìn)制調(diào)整例1 (30)BCD +(99)BCD0011 0000 + 1001 1001 1100 1001 BCD非法 1100 1001 + 0110 0000 (60調(diào)整) 1 0010 1001 總和: 129D 進(jìn)位CCPU中標(biāo)志寄存器的進(jìn)位標(biāo)志位 例2 (08)BCD +(09)BCD0000 1000 + 0000 1001 0001 0001 有進(jìn)位 0001 0001 + 0000 0110 (06調(diào)整) 0001 0111 ASCII碼和B
33、CD碼表示方法關(guān)于ASCII碼。必須了解: “A”“Z”的ASCII碼41H5AH “a”“z”的ASCII碼61H7AH “0”“9”的ASCII碼30H39H問題: 9用BCD碼表示:00001001 (09H)數(shù)值 9用ASCII碼表示:00111001 (39H)符號注意: *1 輸入設(shè)備一般用ASCII、BCD向計算機(jī)輸入數(shù)值、字母和字符; *2 輸出設(shè)備所能接收的通常也是ASCII、BCD以及八段碼思考:十進(jìn)制數(shù)23用BCD碼和ASCII碼分別怎樣表示? 23 表示成BCD碼為:23H 23表示成ASCII碼為:“23”即 32H33HASCII碼和BCD碼表示方法問題與思考將下列
34、BCD碼轉(zhuǎn)換為十進(jìn)制數(shù)(00111000.01010110)BCD ( )D討論與交流為什么會出現(xiàn)BCD碼,BCD碼調(diào)整的原理是什么,是如何實現(xiàn)的?Thanks CM3微控制器結(jié)構(gòu)及CM3微處理器特點Cortex-M3微控制器結(jié)構(gòu)Cortex-M3內(nèi)核調(diào)試系統(tǒng)Cortex-M3微處理器內(nèi)部總線外設(shè)存儲器時鐘和復(fù)位I/O由ARM設(shè)計由芯片制造商(如ST)設(shè)計開發(fā)Cortex-M3微控制器 CM3微控制器結(jié)構(gòu)及CM3微處理器特點CortexM3處理器結(jié)構(gòu)CM3微處理器結(jié)構(gòu)簡化圖 CM3微控制器結(jié)構(gòu)及CM3微處理器特點CortexM3處理器特點CM3處理器主要具有以下一些特點:(1)三級流水線設(shè)計;
35、(2)哈佛總線架構(gòu);(3)32位尋址,支持4G存儲器空間;(4)基于ARM AMBA技術(shù)的片上接口,支持高吞吐量的流水線總線操作;(5)嵌套向量中斷控制器(NVIC),支持11個系統(tǒng)異常,最多240個中斷請求,以及8256個中斷優(yōu)先級;(6)支持操作系統(tǒng)的多種特性;(7)休眠模式和多種低功耗特性,降低了處理器的功耗;(8)支持可選的MPU(存儲器保護(hù)單元);(9)通過位帶操作支持兩個特定存儲器區(qū)域中的位數(shù)據(jù)訪問;(10)支持Thumb-2指令集。 CM3微控制器結(jié)構(gòu)及CM3微處理器特點謝謝School of Electrical Engineering, Chongqing Universit
36、y重慶大學(xué)電氣工程學(xué)院 CM3處理器的3級流水線和指令緩沖區(qū)例如: 一條指令的執(zhí)行要經(jīng)過3個階段:取指令、譯碼、執(zhí)行,每個階段都要花費一個機(jī)器周期,如果沒有采用流水線技術(shù),那么執(zhí)行以下所示的4條指令,需要12個機(jī)器周期MOV R8, R3; 指令1MVN R7, R3; 指令2SUB R0,R2,R3; 指令3MOV PC,LR; 指令4 CM3處理器的3級流水線和指令緩沖區(qū) 如果采用了指令流水線技術(shù),完成以下4條指令的執(zhí)行,只需要6個機(jī)器周期MOV R8, R3; 指令1MVN R7, R3; 指令2SUB R0,R2,R3;指令3MOV PC,LR; 指令4(1)有些指令的執(zhí)行需要多個時鐘
37、周期,會造成流水線暫停; CM3處理器的3級流水線和指令緩沖區(qū)影響流水線執(zhí)行的因素(2)當(dāng)程序轉(zhuǎn)移時,會清空流水線。 CM3處理器的3級流水線和指令緩沖區(qū)程序轉(zhuǎn)移對指令流水線的影響 CMP R2,#0; 指令1 CMPNE R3,#0; 指令2 BEQ return; 指令3 CMP R2,R3; 指令4 BEQ strcmp; 指令5return SUB R0,R2,R3; 指令6 (1)CortexM3 處理器使用一個3 級流水線;(2)當(dāng)運(yùn)行的指令大多數(shù)都是16位時,處理器會每隔一個周期做一次取指;(3)為了改善轉(zhuǎn)移指令清空流水線的情況,CM3支持一些的v7M新指令,可以避免很多短程跳轉(zhuǎn)
38、,使 CM3 不再預(yù)取不滿足條件的指令。例如:IF-THEN ( IT )指令;(4)由于流水線的存在,以及出于對Thumb代碼兼容的考慮,讀取PC會返回當(dāng)前指令地址+4的值。 CM3處理器的3級流水線和指令緩沖區(qū)Cortex-M3指令流水線的特點:指令緩沖區(qū) CM3處理器的3級流水線和指令緩沖區(qū) 指令緩沖區(qū)允許后續(xù)的指令在執(zhí)行前先在里面排隊,能在執(zhí)行未對齊的32位指令時,避免流水線“斷流”。指令存儲器3210NA1N+4B1A2N+8C1B2N+0 xCDC2指令緩沖區(qū)取指解碼執(zhí)行(Inst & ) (Inst ) (Inst ) A1B1A2A (Inst ) 存儲器中的未對齊的32位Th
39、umb-2指令流水線級數(shù)指令解碼取指B1C1B2B C1A DC2C B 執(zhí)行異常和中斷的概念 在Cortex-M3中,凡是打斷程序順序執(zhí)行的事件,都被稱為異常。除了外部中斷外,當(dāng)有指令執(zhí)行了“非法操作”,或者訪問被禁的內(nèi)存區(qū)間等產(chǎn)生的各種錯誤,以及不可屏蔽中斷發(fā)生時,都會打斷程序的執(zhí)行,這些情況統(tǒng)稱為異常。 Cortex-M3處理器的異常類型和優(yōu)先級 Cortex-M3支持大量異常,包括10個系統(tǒng)異常,和最多240個外部中斷(簡稱IRQ)。編號類型優(yōu)先級簡介1復(fù)位-3(最高)復(fù)位2NMI-2不可屏蔽中斷(來自外部NMI輸入腳)3硬(hard)fault-1所有被除能的fault,都將“上升”
40、(escalation)成硬 fault。只要FAULTMASK沒有置位,硬fault服務(wù)例程就被強(qiáng)制執(zhí)行。Fault被除能的原因包括被禁用,或者FAULTMASK被置位4MemManagefault可編程存儲器管理fault,MPU訪問犯規(guī)以及訪問非法位置均可引發(fā)。企圖在“非執(zhí)行區(qū)”取指也會引發(fā)此 fault5總線fault可編程從總線系統(tǒng)收到了錯誤響應(yīng),原因可以是預(yù)取中止或數(shù)據(jù)訪問錯誤6用法(usage)Fault可編程由于程序錯誤導(dǎo)致的異常。通常是使用了一條無效指令,或者是非法的狀態(tài)轉(zhuǎn)換,例如嘗試切換到 ARM狀態(tài)7-10保留N/AN/A11SVCall可編程執(zhí)行系統(tǒng)服務(wù)調(diào)用指令(SVC
41、)引發(fā)的異常12調(diào)試監(jiān)視器可編程調(diào)試監(jiān)視器(斷點,數(shù)據(jù)觀察點,或者是外部調(diào)試請求)13保留N/AN/A14PendSV可編程可掛起的系統(tǒng)服務(wù)15SysTick 可編程系統(tǒng)滴答定時器(也就是周期性溢出的時基定時器)系統(tǒng)異常 Cortex-M3處理器的異常類型和優(yōu)先級16IRQ #0可編程外中斷#017IRQ #1可編程外中斷#1. . . . .255IRQ#239可編程外中斷#239外部中斷異常類型特殊功能寄存器IPSR。在NVIC 的中斷控制及狀態(tài)寄存器(ICSR)中,有一個VECTACTIVE 位段; Cortex-M3處理器的異常類型和優(yōu)先級Cortex-M3有兩個地方記錄了當(dāng)前正服務(wù)異
42、常的編號:優(yōu)先級 優(yōu)先級對于異常來說很關(guān)鍵的,它會影響一個異常是否能被響應(yīng),以及何時可以響應(yīng)。 Cortex-M3處理器的異常類型和優(yōu)先級Cortex-M3用最多8位表達(dá)優(yōu)先級,可支持:3個固定的高優(yōu)先級256級的可編程優(yōu)先級128級搶占優(yōu)先級 優(yōu)先級號是以MSB對齊,設(shè)計時會裁掉表達(dá)優(yōu)先級的幾個低端有效位,達(dá)到減少優(yōu)先級數(shù)的目的。 表達(dá)優(yōu)先級允許使用的最少位數(shù)為3位,因此CM3至少要支持8級優(yōu)先級。Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0用于表達(dá)優(yōu)先級未使用,讀回零例:使用了3 個位來表達(dá)優(yōu)先級,則優(yōu)先級配置寄存器的結(jié)構(gòu)會如下圖所示使用3 個位來表達(dá)優(yōu)先級的情況我們能
43、夠使用的優(yōu)先級有8個分別為:0 x00(最高)、0 x20、0 x40、0 x60、0 x80、0 xA0、0 xC0、0 xE0(最低) Cortex-M3處理器的異常類型和優(yōu)先級 Cortex-M3處理器的異常類型和優(yōu)先級 Cortex-M3處理器的異常優(yōu)先級分組 為了使搶占機(jī)能變得更可控,CM3把256級優(yōu)先級按位分成高低兩段,分別是搶占優(yōu)先級和子優(yōu)先級。搶占優(yōu)先級決定異常響應(yīng)的搶占行為:當(dāng)系統(tǒng)正在響應(yīng)某低搶占優(yōu)先級異常L時,如果來了搶占優(yōu)先級更高的異常H,則H可以搶占L;子優(yōu)先級則決定同搶占優(yōu)先級的異常響應(yīng)行為:當(dāng)搶占優(yōu)先級相同的異常有不止一個懸起時,則優(yōu)先響應(yīng)子優(yōu)先級最高的異常。 N
44、VIC中有一個寄存器是“應(yīng)用程序中斷及復(fù)位控制寄存器”(AIRCR),它里面有一個位段名為“優(yōu)先級組”( PRIGROUP )。位段名稱類型復(fù)位值描述31:16VECTKEYR/W-訪問鑰匙:任何對該寄存器的寫操作,都必須同時把0 x05FA寫入此段,否則寫操作被忽略。若讀取此半字,則0 xFA0515ENDIANESSR-指示端設(shè)置。1大端(BE8),0小端。此值是在復(fù)位時確定的,不能更改10:8PRIGROUPR/W0優(yōu)先級分組2SYSRESETREQW-請求芯片控制邏輯產(chǎn)生一次復(fù)位1VECTCLRACTIVEW-清零所有異常的活動狀態(tài)信息。通常只在調(diào)試時用,或者在OS從錯誤中恢復(fù)時用0V
45、ECTRESETW-復(fù)位CM3處理器內(nèi)核(調(diào)試邏輯除外),但是此復(fù)位不影響芯片上在內(nèi)核以外的電路該位段的值對每一個優(yōu)先級可配置的異常都有影響。 Cortex-M3處理器的異常優(yōu)先級分組 AIRCR寄存器的PRIGROUP的值決定了分組位置,如下表所示。 Cortex-M3處理器的異常優(yōu)先級分組搶占優(yōu)先級最多是7個位,所以最多只有128級搶占優(yōu)先級。優(yōu)先級分組為7時,所有的位都表達(dá)子優(yōu)先級,沒有任何位表達(dá)搶占優(yōu)先級,因而所有優(yōu)先級可編程的異常之間不會發(fā)生搶占 在計算搶占優(yōu)先級和子優(yōu)先級的有效位數(shù)時,必須先求出下列值:芯片實際使用了多少位來表達(dá)優(yōu)先級;優(yōu)先級組是如何劃分的。 Cortex-M3處理
46、器的異常優(yōu)先級分組例如: 如果只使用3個位來表達(dá)優(yōu)先級(7:5),并且優(yōu)先級組的值是5(從bit5分組),則你得到4級搶占優(yōu)先級,且在每個搶占優(yōu)先級的內(nèi)部有2個子優(yōu)先級,如下圖所示。 Cortex-M3處理器的異常優(yōu)先級分組Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0搶占優(yōu)先級子優(yōu)先級未使用注意:即使在表達(dá)優(yōu)先級中未使用的位,也允許進(jìn)行分組。 Cortex-M3處理器的異常優(yōu)先級分組例如:如果優(yōu)先級分組的值是1(即bit0 bit1為子優(yōu)先級,其余為搶占優(yōu)先級),則所有可用的8個優(yōu)先級都是搶占優(yōu)先級,如下圖 所示。Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bi
47、t0搶占優(yōu)先級5:3搶占優(yōu)先級2:0(未使用,總是為0)子優(yōu)先級1:0(未使用,總是為0) Cortex-M3處理器的異常類型和優(yōu)先級 如果優(yōu)先級完全相同的多個異常同時懸起,則先響應(yīng)異常編號最小的那一個。如IRQ#3會比IRQ#5 先得到響應(yīng)。 優(yōu)先級的分組都要預(yù)先經(jīng)過分析論證,并且盡可能在開機(jī)初始化時一次性地設(shè)置好,以后就不再更改了。Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0011未使用Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0010未使用異常1異常2例如:0 x600 x400 x400 x40 如果設(shè)置了軟件優(yōu)先級不同,就以軟件優(yōu)先級為準(zhǔn),先響
48、應(yīng)軟件優(yōu)先級數(shù)值小的中斷。而中斷嵌套須由搶占優(yōu)先級決定 Cortex-M3處理器的異常類型和優(yōu)先級問題與思考寄存器NVIC-IPR1對應(yīng)中斷4,5,6,7的優(yōu)先級設(shè)置,如果該寄存器的值為0 x70806050,則這四個中斷的優(yōu)先級順序為 ( )。A.中斷6中斷7中斷5中斷4B.中斷4中斷5中斷6中斷7 C.中斷4中斷5中斷7中斷6D.中斷7中斷6中斷5中斷4在STM32F103向量中斷控制器管理下,可將中斷分為( )組A.4 B. 5 C. 6 D. 7STM32中斷優(yōu)先級分組的位段在寄存器(AIRCR的810位 )中,如需將某中斷的搶占優(yōu)先級設(shè)為7,響應(yīng)優(yōu)先級設(shè)為1,請問應(yīng)將該位段的值設(shè)置為
49、( )。中斷優(yōu)先級分組寄存器AIRCR的810位設(shè)為6,兩個中斷源的優(yōu)先級寄存器的高4位分別設(shè)為3和4,則這兩個中斷源不能產(chǎn)生中斷嵌套。( ) Cortex-M3處理器的異常類型和優(yōu)先級問題與思考寄存器NVIC-IPR1對應(yīng)中斷4,5,6,7的優(yōu)先級設(shè)置,如果該寄存器的值為0 x70806050,則這四個中斷的優(yōu)先級順序為 ( C )。A.中斷6中斷7中斷5中斷4B.中斷4中斷5中斷6中斷7 C.中斷4中斷5中斷7中斷6D.中斷7中斷6中斷5中斷4在STM32F103向量中斷控制器管理下,可將中斷分為( B )組A.4 B. 5 C. 6 D. 7STM32中斷優(yōu)先級分組的位段在寄存器(AIR
50、CR的810位 )中,如需將某中斷的搶占優(yōu)先級設(shè)為7,響應(yīng)優(yōu)先級設(shè)為1,請問應(yīng)將該位段的值設(shè)置為( 4 )。中斷優(yōu)先級分組寄存器AIRCR的810位設(shè)為6,兩個中斷源的優(yōu)先級寄存器的高4位分別設(shè)為3和4,則這兩個中斷源不能產(chǎn)生中斷嵌套。( 對 ) Cortex-M3處理器的向量表、中斷輸入及掛起行為向量表 當(dāng)發(fā)生了異常并且要響應(yīng)異常時,CM3需要定位異常處理例程的入口地址。這些入口地址所在的存儲區(qū)域即是 “(異常)向量表”。每個向量(異常處理例程的入口地址)占用4字節(jié)。地址異常編號值(32位整數(shù))0 x0000_0000-MSP 的初始值0 x0000_00041復(fù)位向量(PC初始值)0 x0
51、000_00082NMI向量(NMI服務(wù)例程的入口地址)0 x0000_000C3硬fault向量(硬fault服務(wù)例程的入口地址)0 x0000_00104MemManage錯誤向量(MemManage錯誤服務(wù)例程的入口地址)0 x0000_00145總線錯誤向量(總線錯誤服務(wù)例程的入口地址)其它異常服務(wù)例程的入口地址 Cortex-M3處理器的向量表、中斷輸入及掛起行為 缺省情況下,CM3的“向量表”位于0地址處,CM3允許向量表重定位,即可以從其它地址處開始定位各異常向量。重定位地址區(qū)域可以是代碼區(qū),但也可以是RAM區(qū)。 為了實現(xiàn)向量表重定位功能,CM3提供了一個“向量表偏移量寄存器”(
52、VTOR),通過修改該寄存器的值就能重定位向量表。 Cortex-M3處理器的向量表、中斷輸入及掛起行為注意: 向量表的起始地址是有要求的。必須先求出系統(tǒng)中共有多少個向量,再把這個數(shù)字向上增大到2的整次冪,而且起始地址必須對齊到后者的邊界上。位段名稱描述29TBLBASE向量表是在Code區(qū)(0),還是在RAM區(qū)(1)28:7TBLOFF向量表的起始地址例:微控制器有32個中斷源 向量表的起始地址可以被設(shè)置為: 0 x0000_0000, 0 x0000_0100, 0 x0000_0200 等。 Cortex-M3處理器的向量表、中斷輸入及掛起行為向量表的大?。?32(中斷)+16(系統(tǒng)異常
53、)4(每個向量的字節(jié)數(shù))=192向上增大到2的整次冪:256 中斷輸入及掛起行為 Cortex-M3處理器的向量表、中斷輸入及掛起行為中斷掛起:中斷被置于一種等待處理器處理的狀態(tài)。如果處理器正在處理另外一個更高或同等優(yōu)先級的中斷,或者中斷被某個中斷屏蔽寄存器屏蔽,那么在其它中斷處理結(jié)束前或中斷屏蔽被清除前,掛起會一直保持。對于每個中斷源,在被掛起的情況下,都會有一個對應(yīng)的“掛起狀態(tài)寄存器”保存其中斷請求,直到該中斷能夠執(zhí)行為止。中斷請求被處理器接受的條件為:掛起狀態(tài)置位,中斷使能,中斷的優(yōu)先級為當(dāng)前最高,中斷未被屏蔽。 Cortex-M3處理器的向量表、中斷輸入及掛起行為中斷請求X中斷掛起狀態(tài)
54、X處理器模式中斷活躍狀態(tài)X處理器操作中斷請求的確認(rèn)引起掛起狀態(tài)置位中斷服務(wù)程序清除外設(shè)的中斷請求進(jìn)入中斷處理使得掛起狀態(tài)被清除線程模式處理者模式線程模式進(jìn)入中斷處理使得活躍狀態(tài)置位線程壓棧和取向量中斷處理X異常返回出棧線程 Cortex-M3處理器的向量表、中斷輸入及掛起行為中斷請求中斷掛起狀態(tài)處理器模式掛起狀態(tài)被軟件清除線程模式中斷請求中斷掛起狀態(tài)處理器模式掛起狀態(tài)被軟件清除線程模式掛起狀態(tài)被重新置位 Cortex-M3處理器的向量表、中斷輸入及掛起行為 中斷請求中斷掛起狀態(tài)處理器模式中斷活躍狀態(tài)中斷請求信號一直保持線程模式處理者模式中斷返回再次進(jìn)入中斷服務(wù)例程中斷請求中斷掛起狀態(tài)處理器模式
55、中斷活躍狀態(tài)新的中斷請求脈沖線程模式處理者模式中斷返回再次進(jìn)入中斷服務(wù)例程中斷再次掛起 Cortex-M3處理器的向量表、中斷輸入及掛起行為中斷請求中斷掛起狀態(tài)處理器模式中斷活躍狀態(tài)在進(jìn)入ISR前曾有過多次請求脈沖線程模式處理者模式中斷返回掛起狀態(tài)置位 Cortex-M3處理器的向量表、中斷輸入及掛起行為問題與思考設(shè)中斷向量表的起始地址為0 x08000000,則NMI中斷源的中斷入口地址存放在( )處。 Cortex-M3處理器的向量表、中斷輸入及掛起行為問題與思考設(shè)中斷向量表的起始地址為0 x08000000,則NMI中斷源的中斷入口地址存放在( 0 x08000008 )處。 Corte
56、x-M3異常/中斷的響應(yīng)及返回異常/中斷的響應(yīng)序列 當(dāng)Cortex-M3開始響應(yīng)一個中斷時,會在自動執(zhí)行3步:入棧: 依次把8個寄存器的值壓入棧(xPSR, PC, LR, R12,以及R3R0);取向量:從向量表中找出對應(yīng)的服務(wù)程序入口地址;更新寄存器:更新堆棧指針SP,更新PSR,更新程序計數(shù)器PC,更新連接寄存器LR。地址被保存的內(nèi)容被保存的順序舊SP(N)原先已壓入的內(nèi)容-(N4)xPSR2(N8)PC1(N12)LR8(N16)R127(N20)R36(N24)R25(N28)R14新SP(N32)R03入棧順序以及入棧后堆棧中的內(nèi)容 Cortex-M3異常/中斷的響應(yīng)及返回地址(H
57、ADDR)數(shù)據(jù)(HWDATA)時間N-8N-4N-32N-28N-24N-20N-12N-16PCPSRR0R1R2R3R12LR Cortex-M3異常/中斷的響應(yīng)及返回異常返回值 在進(jìn)入異常服務(wù)例程后,LR的值被自動更新為特殊的EXC_RETURN,如下所示。程序被打斷時的LR已被自動入棧。位段含義31:4EXC_RETURN的標(biāo)識:必須全為130=返回后進(jìn)入Handler模式1=返回后進(jìn)入線程模式20=從主堆棧中做出棧操作,返回后使用MSP1=從進(jìn)程堆棧中做出棧操作,返回后使用PSP1保留,必須為000=返回ARM狀態(tài)1=返回Thumb狀態(tài)。在CM3中必須為1 Cortex-M3異常/中
58、斷的響應(yīng)及返回合法的EXC_RETURN值共3個,如下所示。EXC_RETURN數(shù)值功能0 xFFFF_FFF1返回handler模式0 xFFFF_FFF9返回線程模式,并使用主堆棧(SP=MSP)0 xFFFF_FFFD返回線程模式,并使用進(jìn)程堆棧(SP=PSP) Cortex-M3異常/中斷的響應(yīng)及返回異常返回 當(dāng)異常服務(wù)例程執(zhí)行完畢后,需要做一個“異常返回”動作序列,從而恢復(fù)先前的系統(tǒng)狀態(tài),才能使被中斷的程序得以繼續(xù)執(zhí)行。這里,有3種途徑可以觸發(fā)異常返回序列,如下所示。返回指令工作原理BX LR當(dāng)LR存儲EXC_RETURN時,使用BXLR即可返回POPPC 和POP,PC在服務(wù)例程中
59、,LR的值常常會被壓入棧。此時即可使用POP指令把LR存儲的EXC_RETURN往PC里彈棧,從而激起處理器做中斷返回LDR 與LDM把PC作為目的寄存器,亦可啟動中斷返回序列不管使用哪一種,都需要用到先前存儲的LR的值。 Cortex-M3異常/中斷的響應(yīng)及返回 出棧:先前壓入棧中的寄存器在這里恢復(fù)。內(nèi)部的出棧順序與入棧時的相對應(yīng),堆棧指針的值被恢復(fù)。在啟動了中斷返回序列后,將進(jìn)行以下處理:更新NVIC寄存器:異?;顒訝顟B(tài)位被硬件清零。 Cortex-M3異常/中斷的響應(yīng)及返回中斷#1(低優(yōu)先級)中斷#2(高優(yōu)先級)執(zhí)行狀態(tài)異常處理線程棧處理器模式主程序中斷服務(wù)程序#1中斷服務(wù)程序#2主棧主
60、棧主棧線程模式處理模式線程模式處理模式處理模式嵌套中斷(中斷事件#2在ISR#1執(zhí)行期間產(chǎn)生)中斷事件#1壓棧時使用主棧中斷事件#2異常返回異常返回壓棧時使用主棧LR=0 xFFFFFFF9LR=0 xFFFFFFF1EXC_RETURNEXC_RETURN Cortex-M3異常/中斷的響應(yīng)及返回 Cortex-M3異常/中斷的響應(yīng)及返回問題與思考在中斷響應(yīng)的寄存器硬件壓棧過程中,如果R14的壓入地址為0 x20007f00,則R2的壓入地址為( ) Cortex-M3異常/中斷的響應(yīng)及返回問題與思考在中斷響應(yīng)的寄存器硬件壓棧過程中,如果R14的壓入地址為0 x20007f00,則R2的壓入
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于can總線課課程設(shè)計
- 小學(xué)生畢業(yè)會學(xué)生代表演講稿(3篇)
- 2024物流園智能化工程合同(物流園項目智能化系統(tǒng)工程合同文件)
- 電路課程設(shè)計鬧鐘焊接
- 2024-2030年全球及中國芒柄花苷市場產(chǎn)銷規(guī)模及投資風(fēng)險預(yù)警研究報告
- 2024-2030年全球及中國箔式電容器行業(yè)市場現(xiàn)狀供需分析及市場深度研究發(fā)展前景及規(guī)劃可行性分析研究報告
- 2024-2030年全球及中國私人旅客汽車保險行業(yè)市場現(xiàn)狀供需分析及市場深度研究發(fā)展前景及規(guī)劃可行性分析研究報告
- 2024-2030年全球及中國直鏈烷基苯行業(yè)市場現(xiàn)狀供需分析及市場深度研究發(fā)展前景及規(guī)劃可行性分析研究報告
- 2024-2030年全球及中國熱處理行業(yè)市場現(xiàn)狀供需分析及市場深度研究發(fā)展前景及規(guī)劃可行性分析研究報告
- 2024-2030年全球及中國液體醫(yī)療廢物吸收劑行業(yè)市場現(xiàn)狀供需分析及市場深度研究發(fā)展前景及規(guī)劃可行性分析研究報告
- 新媒體視覺設(shè)計之新媒體視覺設(shè)計基本要素
- 《大衛(wèi)科波菲爾(節(jié)選)》《老人與?!仿?lián)讀課件17張高中語文選擇性必修上冊
- 自動化機(jī)械設(shè)備項目評價分析報告
- 北師大版-八年級上冊數(shù)學(xué)知識點及習(xí)題
- 醫(yī)療美容消費服務(wù)合同
- 地球的形成和演化
- 投標(biāo)報價得分計算表Excele
- JT-T 795-2023 事故汽車修復(fù)技術(shù)規(guī)范
- 切爾諾貝利核電站事故工程倫理分析
- 《什么是周長》學(xué)習(xí)單
- 5G定制網(wǎng)核心網(wǎng)練習(xí)試題附答案
評論
0/150
提交評論