




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第一章一:嵌入式系統(tǒng)基礎(chǔ)知識第二章一:CM3Cortex-M3 是一個 32 位處理器內(nèi)核。內(nèi)部的數(shù)據(jù)路徑是 32 位的,寄存器是32 位的,存儲器接口也是 32 位的。CM3 采用了哈佛結(jié)構(gòu),擁有獨(dú)立的指令總線和數(shù)據(jù)總線。程序計(jì)數(shù)寄存器R15 :程序計(jì)數(shù)寄存器,指向當(dāng)前程序地址。特殊功能寄存器(1)程序狀態(tài)字寄存器組(PSRs)記錄 ALU 標(biāo)志(0 標(biāo)志,進(jìn)位標(biāo)志,負(fù)數(shù)標(biāo)志,溢出標(biāo)志),執(zhí)行狀態(tài),以及當(dāng)前正服務(wù)的中斷號;(2)中斷屏蔽寄存器組:PRIMASK 失能所有的中斷、FAULTMASK 失能所有的 fault、BASEPRI 失能所有優(yōu)先級不高于某個具體數(shù)值的中斷;(3)控制寄存器
2、(CONTROL ),定義特權(quán)狀態(tài)(見后續(xù)章節(jié)對特權(quán)的敘述),并且決定使用哪一個堆棧指針;Cortex-M3 處理器支持兩種處理器的操作模式,還支持兩級特權(quán)操作。兩種操作模式:(1)處理者模式(handler mode) 異常服務(wù)例程的代碼包括中斷服務(wù)(2)線程模式(thread mode)普通應(yīng)用程序的代碼;兩級特權(quán):特權(quán)級和用戶級,提供一種存儲器訪問保護(hù)機(jī)制,使得普通用戶程序代碼不能意外地,甚至是惡意地執(zhí)行涉及到要害的操作。復(fù)位后,處理器默認(rèn)進(jìn)入線程模式,特權(quán)級訪問;在 CM3 運(yùn)行主應(yīng)用程序時(線程模式),既可以使用特權(quán)級,也可以使用用戶級;但是異常服務(wù)例程必須在特權(quán)級下執(zhí)行;在特權(quán)級下
3、,程序可以訪問所有范圍的存儲器,并且可以執(zhí)行所有指令,包括切換到用戶級;從用戶級到特權(quán)級的唯一途徑就是異常,用戶級的程序必須執(zhí)行一條系統(tǒng)調(diào)用指令(SVC)觸發(fā) SVC 異常,然后由異常服務(wù)例程接管,如果批準(zhǔn)了進(jìn)入,則異常服務(wù)例程修改 CONTROL 寄存器,才能在用戶級的線程模式下重新進(jìn)入特權(quán)級;異常以及異常類型異常:在 ARM 編程領(lǐng)域中,凡是打斷程序順序執(zhí)行的事件,都被稱為異常(exception) 。包括:外部中斷、不可屏蔽中斷、指令執(zhí)行了“非法操作”或者訪問被禁的內(nèi)存區(qū)間產(chǎn)生的各種錯誤 fault。向量表向量表其實(shí)是一個 WORD(32 位整數(shù))數(shù)組,每個下標(biāo)對應(yīng)一種異常,該下標(biāo)元素的
4、值則是該 ESR 的入口地址。向量表在地址空間中的位置是可以設(shè)置的,通過 NVIC 中的一個重定位寄存器來指出向量表的地址。在復(fù)位后,該寄存器的值為 0。因此,在地址 0 處必須包含一張向量表,用于初始時的異常分配。工作原理:舉個例子,如果發(fā)生了異常 11(SVC ),則 NVIC 會計(jì)算出偏移移量是11x4=0 x2C,然后從那里取出服務(wù)例程的入口地址并跳入。要注意的是這里有個另類:0 號類型并不是什么入口地址,而是給出了復(fù)位后 MSP 的初值。復(fù)位序列在離開復(fù)位狀態(tài)后,CM3 做的第一件事就是讀取下列兩個 32 位整數(shù)的值:從地址 0 x0000,0000 處取出 MSP 的初始值。從地址
5、0 x0000,0004 處取出 PC 的初始值 這個值是復(fù)位向量,LSB必須是 1。然后從這個值所對應(yīng)的地址處取指。在 CM3 中,在 0 地址處提供 MSP 的初始值,然后緊跟著就是向量表。向量表中的數(shù)值是 32 位的地址,而不是跳轉(zhuǎn)指令。向量表的第一個條目指向復(fù)位后應(yīng)執(zhí)行的第一條指令。流水線取指令、解碼和執(zhí)行。CM3 指令集(1)32 位的 ARM 狀態(tài):所有的指令均是 32 位的(哪怕只是個”NOP ”指令),此時性能相當(dāng)高;(2)16 位的 Thumb 狀態(tài):所有的指令均是 16 位的,代碼密度提高了一倍。不過,thumb 狀態(tài)下的指令功能只是 ARM 下的一個子集,結(jié)果可能需要更多
6、條的指令去完成相同的工作,導(dǎo)致處理性能下降。Cortex-M3 只使用 Thumb -2 指令集。這是個了不起的突破,因?yàn)樗试S 32位指令和 16 位指令水乳交融,代碼密度與處理性能兩手抓,兩手都硬。而且雖然它很強(qiáng)大,卻依然易于使用。二:STM321.架構(gòu)2.不懂需要寫什么,自己找吧3.啟動配置在 STM32F10 xxx 里,可以通過 BOOT1:0 引腳選擇三種不同啟動模式。根據(jù)選定的啟動模式,主閃存存儲器、系統(tǒng)存儲器或 SRAM 可以按照以下方式訪問:(1)從用戶 FLASH 啟動:主閃存存儲器被映射到啟動空間(0 x0000 0000) ,但仍然能夠在它原有的地址(0 x0800 0
7、000) 訪問它,即閃存存儲器的內(nèi)容可以在兩個地址區(qū)域訪問,0 x0000 0000 或 0 x0800 0000 。(2)從系統(tǒng)存儲器啟動:系統(tǒng)存儲器被映射到啟動空間(0 x0000 0000) ,但仍然能夠在它原有的地址(互聯(lián)型產(chǎn)品原有地址為 0 x1FFF B000,其它產(chǎn)品原有地址為 0 x1FFF F000)訪問它。從嵌入式 SRAM 啟動:只能在 0 x2000 0000 開始的地址區(qū)訪問 SRAM 。STM32 的低功耗模式有 3 種(1)睡眠模式(CM3 內(nèi)核停止,外設(shè)仍然運(yùn)行);(2)停止模式(所有時鐘都停止) ;(3)待機(jī)模式(1.8V 內(nèi)核電源關(guān)閉) ;在這三種低功耗模式
8、中,最低功耗的是待機(jī)模式,在此模式下,最低只需要2uA 左右的電流。停機(jī)模式是次低功耗的,其典型的電流消耗在 20uA 左右。最后就是睡眠模式了。用戶可以根據(jù)自己的需求來決定使用哪種低功耗模式。安全特性STM32 還有一系列的安全特性來捕捉 STM32 發(fā)生軟硬件運(yùn)行錯誤的時刻,以下是 STM32 的一部分安全特性:為了確保有一個可靠的電源供應(yīng),STM32 擁有內(nèi)部復(fù)位電路,當(dāng)電壓低于 VDD 下限值時會將器件置于復(fù)位狀態(tài)。STM32 內(nèi)部還有一個可編程的電壓檢測電路,可以在電源即將崩潰前檢測到異常狀況。當(dāng)檢測到電源異常時,該電壓檢測電路將產(chǎn)生一個中斷信號將 STM32 器件鎖定在一個安全的狀
9、態(tài)。STM32 帶有的時鐘安全系統(tǒng)(clock Security System,簡稱 css)會監(jiān)視 HSE振蕩器,一旦 HSE 無法正常提供時鐘脈沖,CSS 會強(qiáng)制 STM32 轉(zhuǎn)而使用 HSl 振蕩器。STM32 的兩只看門狗會即時監(jiān)測當(dāng)前程序的運(yùn)行狀況,并在程序運(yùn)轉(zhuǎn)異常時對 STM32 產(chǎn)生一次復(fù)位操作STM32 的片上 Flash 可以在 85下保持 30 年數(shù)據(jù)不丟失,顯著領(lǐng)先于其他同類微控制器。STM32 可以勝任一些既要求對自身有安全性保障措施,又要求硬件盡量少的應(yīng)用場合,比如航天工業(yè)和汽車電子系統(tǒng)。從保持硬件簡潔性、低成本的角度來看,STM32 微控制器達(dá)到的絕對是一個令人側(cè)目
10、的高度。第三章外設(shè)的初始化和設(shè)置步驟1)在主應(yīng)用文件中,聲明一個結(jié)構(gòu) PPP_InitTypeDef,例如:PPP_InitTypeDef PPP_InitStructure;這里 PPP_InitStructure 是一個位于內(nèi)存中的工作變量,用來初始化一個或者多個外設(shè) PPP 。2) 為變量 PPP_InitStructure 的各個結(jié)構(gòu)成員填入允許的值。可以采用以下2 種方式:I)按照如下程序設(shè)置整個結(jié)構(gòu)體PPP_InitStructure.member1 = val1;PPP_InitStructure.member2 = val2;PPP_InitStructure.memberN
11、= valN;/* where N is the number of the structure members */以上步驟可以合并在同一行里,用以優(yōu)化代碼大?。篜PP_InitTypeDef PPP_InitStructure = val1, val2,., valNII)僅設(shè)置結(jié)構(gòu)體中的部分成員:這種情況下,用戶應(yīng)當(dāng)首先調(diào)用函數(shù)PPP_SturcInit(.) 來初始化變量 PPP_InitStructure,然后再修改其中需要修改的成員。這樣可以保證其他成員的值(多為缺省值)被正確填入。PPP_StructInit(&PPP_InitStructure);PP_InitStructur
12、e.memberX = valX;PPP_InitStructure.memberY = valY;/*where X and Y are the members the user wants to configure*/3)調(diào)用函數(shù) PPP_Init(.) 來初始化外設(shè) PPP 。4)調(diào)用函數(shù) PPP_Cmd(.)來使能外設(shè)。PPP_Cmd(PPP, ENABLE);2.在設(shè)置一個外設(shè)前,必須調(diào)用以下一個函數(shù)來使能它的時鐘:RCC_AHBPeriphClockCmd(RCC_AHBPeriph_PPPx, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Peri
13、ph_PPPx, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_PPPx, ENABLE);第四章STM32的時鐘源HSE、HSI、LSE、LSI。系統(tǒng)時鐘源(SYSCLK):HSI、HSE、PLL: 注:在激活 PLL 的設(shè)置時,必須先完成選擇 HSI 振蕩器除 2 或 HSE振蕩器為 PLL 的輸入時鐘,和選擇倍頻因子。RTC 時鐘源(RTCCLK):LSE、LSI、經(jīng)過 128 分頻的 HSE 時鐘當(dāng) HSE 時鐘失效時,時鐘安全系統(tǒng)將系統(tǒng)(CSS)時鐘切換到 HSI。 通過軟件使能,將該中斷連接到 Cortex-M3 內(nèi)核的 NMI 中斷上
14、。在 MCO 引腳(PA.08)可將時鐘輸出。最大可達(dá) 50MHz;多個時鐘源可實(shí)現(xiàn)全速運(yùn)行/低功耗模式下的復(fù)雜應(yīng)用。(1)外部高速振蕩器 HSE:4MHz 到 16MHz 主振蕩器,可通過 PLL 進(jìn)行倍頻用以提供寬廣的頻率范圍??墒褂猛獠繒r鐘信號(最大 25MHz):設(shè)置時鐘控制寄存器的 HSEBYP和 HSEON 位。 (2)內(nèi)部高速 RC 振蕩器 HSI:頻率為 8MHz,溫度在 0-70C 時誤差位為 1%。 外部低速振蕩器 LSE: 32.768kHz 振蕩器,提供一個極低功耗(最大 1A)的精確的時鐘??蛇x用為驅(qū)動 RTC 從停止/待機(jī)模式中喚醒。內(nèi)部低速 RC(LSI): 40
15、KHz 的內(nèi)部 RC,可用作 IWDG 和自動喚醒的 RTC 的時鐘。Css在實(shí)際應(yīng)用中,經(jīng)常出現(xiàn)由于晶體振蕩器在運(yùn)行中失去作用,造成微處理器的時鐘源丟失,從而出現(xiàn)死機(jī)的現(xiàn)象,導(dǎo)致系統(tǒng)出錯。STM32 內(nèi)部的 CCS 正是為解決出現(xiàn)這種問題而設(shè)計(jì)的。一旦外部晶體振蕩器(HSE)失效,CCS 系統(tǒng)將系統(tǒng)時鐘源切換到 HSI。注意:一旦 CSS 被激活,當(dāng) HSE 時鐘出現(xiàn)故障時將產(chǎn)生 CSS 中斷,同時自動產(chǎn)生 NMI。NMI 將被不斷執(zhí)行,直到 CSS 中斷掛起位被清除。因此,在 NMI的處理程序中必須通過設(shè)置時鐘中斷寄存器(RCC_CIR)里的 CSSC 位來清除 CSS中斷。在 RCC 的
16、中斷處理程序中,再對 HSE 和 PLL 進(jìn)行相應(yīng)的處理。啟動模式:根據(jù)啟動設(shè)置,可將用戶FLASH、內(nèi)部SRAM映射到0X00000000起始區(qū)域。啟動代碼及其功能嵌入式系統(tǒng)的啟動還需要一段啟動代碼(bootloader),類似于啟動 Pc 時的BIOS,一般用于完成微控制器的初始化工作和自檢。STM32 的啟動代碼在startup_stm32f10 x_xxs(xx 根據(jù)微控制器所帶的大、中、小容量存儲器分別為hd、md、ld)中,其中的程序功能主要包括初始化堆棧、定義程序啟動地址、中斷向量表和中斷服務(wù)程序人口地址,以及系統(tǒng)復(fù)位啟動時,從啟動代碼跳轉(zhuǎn)到用戶 main 函數(shù)入口地址。備份區(qū)域
17、架構(gòu)備份區(qū)域包含:用于 RTC 的獨(dú)立的 32KHz 的振蕩器(LSE);RTC(計(jì)數(shù)器、分頻器和報警機(jī)制);用戶備份寄存器(16 位): 中/小密度芯片:20 個字節(jié) 高密度芯片: 84 個字節(jié)防入侵檢測功能。RCC 的 BDSR 寄存器:選擇 RTC 時鐘源和使能 LSE 備份區(qū)域的復(fù)位信號才能復(fù)位該區(qū)域。VBAT 獨(dú)立供電當(dāng)系統(tǒng) VDD 低于 PDR 電壓時,將自動切換到 VBAT;當(dāng)使用 VDD 時,VBAT 上無電流損失。6.防入侵檢測:當(dāng) TAMPER 引腳上的信號的電平發(fā)生變化(從 0 變成 1 或從 1 變成 0-取決于備份控制寄存器 BKP_CR 的 TPAL 位),會產(chǎn)生一
18、個侵入檢測事件。該事件將清除數(shù)據(jù)備份寄存器內(nèi)的所有內(nèi)容。第五章一:GPIOGPIO 引腳被分為 GPIOA、GPIOBGPIOG 不同的組,每組端口分為 015,共 16 個不同的引腳1.四種輸入模式:兩個開關(guān)和電阻,與 VDD 相連的為上拉電阻,與 VSS 相連的為下拉電阻。再連接到施密特觸發(fā)器就把電壓信號轉(zhuǎn)化為 0、1 的數(shù)字信號存儲在輸入數(shù)據(jù)寄存器(IDR)。我們可以通過設(shè)置配置寄存器(CRL、CRH),控制這兩個開關(guān),于是就可以得到 GPIO 的上拉輸入(GPIO_Mode_IPU ) 和下拉輸入模式(GPIO_Mode_IPD )了。從它的結(jié)構(gòu)我們就可以理解,若 GPIO 引腳配置為
19、上拉輸入模式,在默認(rèn)狀態(tài)下(GPIO 引腳無輸入),讀取得的 GPIO 引腳數(shù)據(jù)為 1,高電平。而下拉模式則相反,在默認(rèn)狀態(tài)下其引腳數(shù)據(jù)為 0,低電平。而 STM32 的浮空輸入模式(GPIO_Mode_IN_FLOATING)在芯片內(nèi)部既沒有接上拉,也沒有接下拉電阻,經(jīng)由觸發(fā)器輸入。配置成這個模式直接用電壓表測量其引腳電壓為 1 點(diǎn)幾伏,這是個不確定值。由于其輸入阻抗較大,一般把這種模式用于標(biāo)準(zhǔn)的通訊協(xié)議如I2C、USART 的接收端。模擬輸入模式(GPIO_Mode_AIN )則關(guān)閉了施密特觸發(fā)器,不接上、下拉電阻,經(jīng)由另一線路把電壓信號傳送到片上外設(shè)模塊。如傳送至給 ADC 模塊,由AD
20、C 采集電壓信號。所以使用 ADC 外設(shè)的時候,必須設(shè)置為模擬輸入模式。2.四種輸出模式:線路經(jīng)過一個由 P-MOS 和 N-MOS 管組成的單元電路。而所謂推挽輸出模式,則是根據(jù)其工作方式來命名的。在輸出高電平時,P-MOS 導(dǎo)通,低電平時,N-MOS 管導(dǎo)通。兩個管子輪流導(dǎo)通,一個負(fù)責(zé)灌電流,一個負(fù)責(zé)拉電流,使其負(fù)載能力和開關(guān)速度都比普通的方式有很大的提高。推挽輸出的低電平為 0 伏,高電平為 3.3 伏。在開漏輸出模式時,如果我們控制輸出為 0,低電平,則使 N-MOS 管導(dǎo)通,使輸出接地,若控制輸出為 1 (無法直接輸出高電平),則既不輸出高電平,也不輸出低電平,為高阻態(tài)。為正常使用時
21、必須在外部接上一個上拉電阻。它具“線與”特性,即很多個開漏模式 引腳連接到一起時,只有當(dāng)所有引腳都輸出高阻態(tài),才由上拉電阻提供高電平,此高電平的電壓為外部上拉電阻所接的電源的電壓。若其中一個引腳為低電平,那線路就相當(dāng)于短路接地,使得整條線路都為低電平,0 伏。STM32 的 GPIO 輸出模式就分為普通推挽(GPIO_Mode_Out_PP )、普通開漏輸出 (GPIO_Mode_Out_OD)及復(fù)用推挽輸出(GPIO_Mode_AF_PP )、復(fù)用開漏輸出(GPIO_Mode_AF_OD )。普通推挽輸出模式一般應(yīng)用在輸出電平為0 和3.3 伏的場合。而普通開漏輸出一般應(yīng)用在電平不匹配的場合
22、,如需要輸出 5 伏的高電平,就需要在外部接一個上拉電阻,電源為 5 伏,把 GPIO 設(shè)置為開漏模式,當(dāng)輸出高阻態(tài)時,由上拉電阻和電源向外輸出 5 伏的電平。對于相應(yīng)的復(fù)用模式,則是根據(jù) GPIO 的復(fù)用功能來選擇的,如 GPIO 的引腳用作串口的輸出,則使用復(fù)用推挽輸出模式。在使用任何一種開漏模式,都需要接上拉電阻。二:STM32 時鐘樹設(shè)置(參閱 6.2)Void RCC_Configuraton(void)函數(shù)與時鐘樹的對應(yīng)關(guān)系三:STM32 庫函數(shù)(參閱 6.3)庫函數(shù)調(diào)用關(guān)系庫函數(shù)調(diào)用本質(zhì)上是根據(jù)該函數(shù)的功能對相應(yīng)外設(shè)的寄存器進(jìn)行讀寫操作:(1)庫函數(shù)對外設(shè)寄存器組的尋址采用了指針
23、,為了增加程序的可讀性,庫函數(shù)將寄存器基地址封裝成宏,對寄存器組內(nèi)部的寄存器的尋址應(yīng)用基地址加偏移量的方式。同時 ST 官方庫將寄存器里的控制字定義成宏,宏名即使實(shí)現(xiàn)該功能的英文描述。這樣一看到宏名就知道往這個寄存器里寫這個宏是實(shí)現(xiàn)什么功能。 程序清單GPIO_InitTypeDef GPlO_InitStructure;GPl O_InitStructure.GPlO_Pin=GPlO_Pin_4;GPI O_InitStructure.GPlOSpeed= GPlO_Speed_50MHz;GPl O_InitStructure.GPl0_Mode=GPlO_Mode_Out PP;GPI
24、O_Init(GPIOA,&GPl0_InitStructure);Stm32f10 x_Gpio.h 定義結(jié)構(gòu)體變量 GPIO_InitTypeDeftypedef structu16 GPIO_Pin;GPIOSpeed_TypeDef GPIO_Speed;GPIOMode_TypeDef GP IO_Mode;GPIO_InitTypeDef;Stm32f10 x_map.h 定義指向 GPIO 寄存器組的指針#ifdef _GPIOA#defineGPIOA#endif.(GPIO_TypeDef*)GPIOA_BASE)#define GPIOA_BASE.(APB2PERIPH
25、BASE+0 x0800)#define APB2PERIPH_BASE.(PENIPH BASE+0 xl0000)#define PERIPH_BASE(u32)0 x40000000)Stm32f10 x_conf.h 使能在 Stm32f10 x_map.h 中定義的指針#define _GPIO四: SysTick(C-M3內(nèi)設(shè))SysTick 的組成:1、時鐘的輸入源:系統(tǒng)時鐘或 SysTick 時鐘;2、控制寄存器: SysTick 時鐘校準(zhǔn)寄存器(SysTickCalibrationRegister); Systick 重裝寄存器(SysTickReloadRegister);
26、 Systick 當(dāng)前計(jì)數(shù)寄存器(SysTickCurrentRegister); Systick 控制寄存器(SysTiekControlRegister);最右邊的“私有外設(shè)總線”表明 SysTick 的上述寄存器是 CPU 通過私有外設(shè)總線存取的。工作原理:(首先 SysTick 從時鐘源接口獲得時鐘驅(qū)動,然后從重裝寄存器將重裝值讀入當(dāng)前計(jì)數(shù)寄存器,并在時鐘驅(qū)動下進(jìn)行減一計(jì)數(shù)。而當(dāng) SysTick 發(fā)生下溢的時候?qū)⒂?jì)數(shù)標(biāo)志置位,并在滿足一定條件的情況下觸發(fā) SysTick 溢出中斷,同時進(jìn)行一次重裝值載人操作。)SysTick 是一個 24 位的定時器,即一次最多可以計(jì)數(shù) 224 個時鐘
27、脈沖,這個脈沖計(jì)數(shù)值被保存到當(dāng)前計(jì)數(shù)值寄存器 STK_VAL (SysTick current value register)中,只能向下計(jì)數(shù),每接收到一個時鐘脈沖 STK_VAL 的值就向下減 1,直至 0,當(dāng) STK_VAL 的值被減至 0 時:由硬件自動把重載寄存器 STK_LOAD(SysTick reload value register)中保存的數(shù)據(jù)加載到 STK_VAL,重新向下計(jì)數(shù);同時,觸發(fā)異常,就可以在中斷服務(wù)函數(shù)中處理定時事件了;只要不把它在SysTick 控制及狀態(tài)寄存器中的使能位清除,就永不停息.五:USARTUSART,全稱為 Universal Synchrono
28、us/Asynchronous Receiver/Transmitter,譯成中文是“通用同步/異步串行接收/發(fā)送器”,人們常常稱為串口(要認(rèn)識到串行通信口USART 和串行總線接口SPl 是完全不同的接口設(shè)備)。配置串口通訊:至少需要設(shè)置:字長(一次傳送的數(shù)據(jù)長度)、波特率(每秒傳輸?shù)臄?shù)據(jù)位數(shù))、奇偶校驗(yàn)位、停止位。對ST 庫函數(shù)來講,在初始化串口的時候,有一個串口初始化結(jié)構(gòu)體,這個結(jié)構(gòu)體的幾個成員就是用來存儲這些控制參數(shù)的。實(shí)現(xiàn)基本的全雙工異步通訊,只要 3 條線,分別為 Rx、Tx、和 GND。六:NVICCortex 內(nèi)核具有強(qiáng)大的異常響應(yīng)系統(tǒng),它把能夠打斷當(dāng)前代碼執(zhí)行流程的事件分為異
29、常(exception)和中斷(interrupt),并把它們用一個表管理起來,編號為015 的稱為內(nèi)核異常,而 16 以上的則稱為外部中斷(外,相對內(nèi)核而言).中斷的幾個概念1中斷響應(yīng) 當(dāng)某個中斷來臨,會將相應(yīng)的中斷標(biāo)志位置位。當(dāng) CPU 查詢到這個置位的標(biāo)志位時,將響應(yīng)此中斷,并執(zhí)行相應(yīng)的中斷服務(wù)函數(shù)。2中斷優(yōu)先級 每個中斷都具有其優(yōu)先級,其相互之間的優(yōu)先關(guān)系一般以優(yōu)先級編號較小者擁有較高優(yōu)先級。優(yōu)先級又分為兩種:查詢優(yōu)先級和執(zhí)行優(yōu)先級。3查詢優(yōu)先級和執(zhí)行優(yōu)先級 當(dāng)某一時刻有兩個或以上中斷處于掛起狀態(tài),首先執(zhí)行執(zhí)行優(yōu)先級較高的中斷。若執(zhí)行優(yōu)先級一致,則首先執(zhí)行查詢優(yōu)先級較高的中斷。查詢優(yōu)先
30、級一般以該中斷向量在中斷向量表中的位置決定。4中斷嵌套 當(dāng)某個執(zhí)行優(yōu)先級較低的中斷服務(wù)在執(zhí)行時另一個執(zhí)行優(yōu)先級較高的中斷來臨,則當(dāng)前優(yōu)先級較低的中斷被打斷,CPU 轉(zhuǎn)而執(zhí)行較高優(yōu)先級的中斷服務(wù)。5中斷掛起 當(dāng)某個較執(zhí)行高優(yōu)先級的中斷服務(wù)在執(zhí)行時另一個優(yōu)先級較低的中斷來臨,則因?yàn)閮?yōu)先級的關(guān)系,較低優(yōu)先級中斷無法立即獲得響應(yīng),則進(jìn)入掛起狀態(tài)(即等待執(zhí)行)。管理中斷嵌套的核心任務(wù) 就在于其優(yōu)先級的管理。NVIC 使用中斷優(yōu)先級分組的概念來管理中斷優(yōu)先級,其最大可以給多達(dá) 256 個中斷向量分配優(yōu)先級。NVIC 將每個中斷賦予先占優(yōu)先級和次占優(yōu)先級的概念。擁有較高先占優(yōu)先級的中斷可以打斷較低先占優(yōu)先級
31、的中斷(類似執(zhí)行優(yōu)先級)。2、若兩個相同先占優(yōu)先級的中斷同時掛起,則優(yōu)先執(zhí)行次占優(yōu)先級較高的中斷(類似查詢優(yōu)先級,但并不是真正意義上的查詢優(yōu)先級)。3、若兩個掛起的中斷兩個優(yōu)先級都一致,則優(yōu)先執(zhí)行位于中斷向量表中位置較高的中斷(這才是查詢優(yōu)先級)。4、無論任何時刻,次占優(yōu)先級都不會造成中斷嵌套,即中斷嵌套完全是由先占優(yōu)先級決定的。ARM CortexM3 優(yōu)先級分組的概念是NVIC 的核心內(nèi)容。注意,STM32 只使用4 位序列表示優(yōu)先級分組,即最大只支持 16 級中斷嵌套管理。七:ADCADC 類型:ADC 的類型決定了它性能的極限,STM32 的是逐次比較型ADC。分辨率:12 位;轉(zhuǎn)換時間:采樣時間是可編程的。采樣轉(zhuǎn)換一次至少要用 14 個 ADC時鐘周期,而 ADC 的時鐘頻率最高為 14MHz,也就是說,它的采樣轉(zhuǎn)換時間最短為 1us。ADC 參考電壓范圍:2.4V 到 3.6V;ADC 輸入范圍:V REF-VIN VREF+,當(dāng)需要測量負(fù)電壓或測量的電壓信號超出范圍時,要先經(jīng)過運(yùn)算電路進(jìn)行平移或利用電阻分壓。ADC整個轉(zhuǎn)換時間= 采樣時間 + 12.5 個周期的轉(zhuǎn)換時間(固定時間)ADC四種轉(zhuǎn)換模式:單個通道單次轉(zhuǎn)換模式多個通道單次轉(zhuǎn)換模式單個通道連續(xù)轉(zhuǎn)換模式多個通道連續(xù)轉(zhuǎn)換模式八:通用定時器:STM32 的定時器資源有
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 運(yùn)營管理中的挑戰(zhàn)與應(yīng)對策略計(jì)劃
- 倉庫設(shè)備維護(hù)管理倡議計(jì)劃
- 《貴州德力能源有限公司納雍縣新房鄉(xiāng)營龍煤礦(變更)礦產(chǎn)資源綠色開發(fā)利用方案(三合一)》評審意見
- 組裝機(jī)箱知識培訓(xùn)課件
- 2025年阿拉善盟年貨運(yùn)從業(yè)資格證考試題庫
- 2025年武漢貨運(yùn)資格考試答案
- 2025年烏魯木齊貨年從業(yè)資格證考試題目
- 2025年福州貨運(yùn)從業(yè)資格證考試題庫答案解析
- 第5課+古代非洲與美洲+高一下學(xué)期統(tǒng)編版(2019)必修中外歷史綱要下
- 0-3歲嬰幼兒游戲知到課后答案智慧樹章節(jié)測試答案2025年春青島職業(yè)技術(shù)學(xué)院
- 云南省昆明市2025年中考語文模擬試卷六套【附參考答案】
- 新反詐知識考試題庫200題(含答案)
- 第22課《陳涉世家》課件(共71張)
- SJG 44-2018 深圳市公共建筑節(jié)能設(shè)計(jì)規(guī)范-高清現(xiàn)行
- 2022年高考(全國甲卷)語文仿真模擬卷【含答案】
- _重大事故后果分析(精)
- 水泥攪拌樁施工監(jiān)理質(zhì)量控制要點(diǎn)
- 初級診斷師培訓(xùn)課程QC基礎(chǔ)知識
- 第7章 吸附課件
- 中醫(yī)醫(yī)院重癥醫(yī)學(xué)科建設(shè)與管理指南
- 注塑機(jī)臺生產(chǎn)日報表
評論
0/150
提交評論