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

歷史上的今天

今天是:2024年12月29日(星期日)

2020年12月29日 | STM32 中斷詳解

發(fā)布者:CuriousObserver 來(lái)源: eefocus關(guān)鍵字:STM32  中斷 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

中斷,在單片機(jī)中占有非常重要的地位。代碼默認(rèn)地從上向下執(zhí)行,遇到條件或者其他語(yǔ)句,會(huì)按照指定的地方跳轉(zhuǎn)。而在單片機(jī)執(zhí)行代碼的過程中,難免會(huì)有一些突發(fā)的情況需要處理,這樣就會(huì)打斷當(dāng)前的代碼,待處理完突發(fā)情況之后,程序會(huì)回到被打斷的地方繼續(xù)執(zhí)行。

1 EXTI控制器

外部中斷/事件控制器(EXTI)管理了控制器的 23 個(gè)中斷/事件線。每個(gè)中斷/事件線都對(duì)應(yīng)有一個(gè)邊沿檢測(cè)器,可以實(shí)現(xiàn)輸入信號(hào)的上升沿檢測(cè)和下降沿的檢測(cè)。EXTI 可以實(shí)現(xiàn)對(duì)每個(gè)中斷/事件線進(jìn)行單獨(dú)配置,可以單獨(dú)配置為中斷或者事件,以及觸發(fā)事件的屬性。

外部信號(hào)進(jìn)入經(jīng)過1的邊沿檢測(cè)電路,檢測(cè)是否符合(有2和3的上升沿和下降沿選擇寄存器決定),產(chǎn)生信號(hào),然后和4軟件中斷事件寄存器或值,(在這里也就說(shuō)可以寫入軟件中斷事件寄存器模擬中斷和事件),之后產(chǎn)生信號(hào)一分為二,看5中斷屏蔽寄存器和7事件屏蔽寄存器,如果中斷和事件都沒有屏蔽,首先會(huì)產(chǎn)生事件,進(jìn)入脈沖發(fā)生器。其次,會(huì)進(jìn)入6掛起寄存器,然后進(jìn)入NVIC。

 

注意:

1、上面說(shuō),我們可以使用寄存器4軟件模擬中斷事件寄存器模式符合條件的信號(hào)進(jìn)入,為什么不能用6寄存器呢?因?yàn)?p style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; color: rgb(77, 77, 77); overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; white-space: normal; background-color: rgb(255, 255, 255); line-height: 26px !important;">

寄存器是可讀可清除的寄存器,通過寫1清除。寫0無(wú)效。所以不能使用

2、關(guān)于掛起寄存器,掛起就是,證明有了中斷,會(huì)在觸發(fā)中斷。但是不會(huì)硬件清除。

只能軟件清除,或者修改邊沿極性的時(shí)候清除。如下

先說(shuō)EXTI吧, 

EXTI 控制器的主要特性:

  • 每個(gè)中斷/事件線上都具有獨(dú)立的觸發(fā)和屏蔽

  • 每個(gè)中斷線都具有專用的狀態(tài)位

  • 支持多達(dá)23個(gè)軟件事件/中斷請(qǐng)求

  • 檢測(cè)脈沖寬度低于APB2 時(shí)鐘寬度的外部信號(hào)

下圖是ST207的框架圖

下圖為翻譯版

從圖中看出和外部中斷有關(guān)的寄存器有:上升沿觸發(fā)選擇、下降沿觸發(fā)選擇、軟件中斷事件寄存器、中斷屏蔽寄存器、掛起請(qǐng)求寄存器、事件屏蔽寄存器和NVIC中斷控制寄存器等。此外就是對(duì)輸入線的理解了。

另外七根 EXTI 線連接方式如下

也就是說(shuō)對(duì)于一個(gè)外部中斷線可以和多個(gè)GPIO相連,當(dāng)你要使用哪一個(gè)IO的時(shí)候只要對(duì)SYSCFG_EXTICR對(duì)應(yīng)的位設(shè)置就好了,在中斷屏蔽寄存器或事件屏蔽寄存器對(duì)應(yīng)位可以設(shè)置使用哪一個(gè)中斷線

注:ST的使用SYSCFG_EXTICR來(lái)配置,GD的采用AFIO寄存器(在GPIO寄存器中)

EXTI是外部中斷吧,上面的主要是針對(duì)的這22條中斷線的說(shuō)明,我們還知道還是有很多中斷的,比如定時(shí)器中斷,串口中斷等等,他們不屬于這22條中斷線。

我們可以在中斷向量表中看到

其他的中斷配置都在各個(gè)模塊的寄存器中了

 

2 NVIC控制器

在上面的EXTI寄存器都設(shè)置好后就可以設(shè)置NVIC了,關(guān)于NVIC的芯片編程手冊(cè)上描述較少,但是說(shuō)了

所以我們就參考一下M3手冊(cè)吧

找到AIRCR寄存器,其中8到10位為優(yōu)先級(jí)分組

我們?cè)诖a中使用的庫(kù)函數(shù)是

void NVIC_PRIGroup_Enable(uint32_t NVIC_PRIGroup)

{

    /*Set the priority grouping value */

    SCB->AIRCR =AIRCR_VECTKEY_MASK | NVIC_PRIGroup;

}

其中我們查到

1、SCB->AIRCR在庫(kù)函數(shù)的地址是0XE000ED0C,不懂的如何查詢的,請(qǐng)自行百度

2、查到SCB的結(jié)構(gòu)體定義

我們看到SCB是SystemControl Block的簡(jiǎn)寫

下面我們說(shuō)一下分組的取值

在misc.c中有


*   ==========================================================================================================================

 *      NVIC_PriorityGroup   | NVIC_IRQChannelPreemptionPriority |NVIC_IRQChannelSubPriority  |       Description

  *   ==========================================================================================================================

 *     NVIC_PriorityGroup_0  |                0                  |           0-15             | 0 bits for pre-emption priority

  *                          |                                   |                            | 4 bits for subpriority

  *   --------------------------------------------------------------------------------------------------------------------------

 *     NVIC_PriorityGroup_1  |                0-1                |           0-7              | 1 bits for pre-emption priority

  *                          |                                   |                            | 3 bits for subpriority

  *   --------------------------------------------------------------------------------------------------------------------------  

  *     NVIC_PriorityGroup_2  |                0-3               |            0-3              | 2 bits for pre-emption priority

 *                           |                                   |                            | 2 bits for subpriority

  *   --------------------------------------------------------------------------------------------------------------------------  

  *     NVIC_PriorityGroup_3  |                0-7               |            0-1              | 3 bits for pre-emption priority

 *                           |                                   |                            | 1 bits for subpriority

  *   --------------------------------------------------------------------------------------------------------------------------  

  *     NVIC_PriorityGroup_4  |                0-15              |            0                | 4 bits for pre-emption priority

 *                           |                                   |                            | 0 bits for subpriority                      

  *   ==========================================================================================================================

搶占優(yōu)先級(jí)& 響應(yīng)優(yōu)先級(jí)區(qū)別


高優(yōu)先級(jí)的搶占優(yōu)先級(jí)是可以打斷正在進(jìn)行的低搶占優(yōu)先級(jí)中斷的。

搶占優(yōu)先級(jí)相同的中斷,高響應(yīng)優(yōu)先級(jí)不可以打斷低響應(yīng)優(yōu)先級(jí)的中斷。

搶占優(yōu)先級(jí)相同的中斷,當(dāng)兩個(gè)中斷同時(shí)發(fā)生的情況下,哪個(gè)響應(yīng)優(yōu)先級(jí)高,哪個(gè)先執(zhí)行。

如果兩個(gè)中斷的搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)都是一樣的話,則看哪個(gè)中斷先發(fā)生就先執(zhí)行。

例子:


假定設(shè)置中斷優(yōu)先級(jí)組為2,然后設(shè)置


中斷3(RTC中斷)的搶占優(yōu)先級(jí)為2,響應(yīng)優(yōu)先級(jí)為1。


中斷6(外部中斷0)的搶占優(yōu)先級(jí)為3,響應(yīng)優(yōu)先級(jí)為0


中斷7(外部中斷1)的搶占優(yōu)先級(jí)為2,響應(yīng)優(yōu)先級(jí)為0。


那么這3個(gè)中斷的優(yōu)先級(jí)順序?yàn)椋褐袛?>中斷3>中斷6


 


表現(xiàn)在代碼中


NVIC_InitPara NVIC_InitStructure;

NVIC_InitStructure.NVIC_IRQ = IRQn;

NVIC_InitStructure.NVIC_IRQPreemptPriority =pri;

NVIC_InitStructure.NVIC_IRQSubPriority = pri1;

NVIC_InitStructure.NVIC_IRQEnable = ENABLE;

NVIC_Init(&NVIC_InitStructure);

分組0,那么pri的取值范圍0~0,pri1的取值范圍0~16


分組2,那么pri的取值范圍0~4,pri1的取值范圍0~4


分組4,那么pri的取值范圍0~16,pri1的取值范圍0~0


下面我們講解一下NVIC寄存器

__IO uint8_t  IP[240]; //中斷優(yōu)先級(jí)控制的寄存器組


__IO uint32_t ISER[8]; //中斷使能寄存器組


__IO uint32_t ICER[8]; //中斷失能寄存器組


__IO uint32_t ISPR[8]; //中斷掛起寄存器組


__IO uint32_t ICPR[8]; //中斷解掛寄存器組


__IO uint32_t IABR[8]; //中斷激活標(biāo)志位寄存器組


 


中斷優(yōu)先級(jí)控制的寄存器組:IP[240]


全稱是:InterruptPriority Registers


240個(gè)8位寄存器,每個(gè)中斷使用一個(gè)寄存器來(lái)確定優(yōu)先級(jí)。


比如:STM32F10x系列一共60個(gè)可屏蔽中斷,使用IP[59]~IP[0]。


每個(gè)IP寄存器的高4位用來(lái)設(shè)置搶占和響應(yīng)優(yōu)先級(jí)(根據(jù)分組),低4位沒有用到。


void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);

 


中斷使能寄存器組:ISER[8]


作用:用來(lái)使能中斷


32位寄存器,每個(gè)位控制一個(gè)中斷的使能。STM32F10x只有60個(gè)可屏蔽中斷,所以只使用了其中的ISER[0]和ISER[1]。


ISER[0]的bit0~bit31分別對(duì)應(yīng)中斷0~31。ISER[1]的bit0~27對(duì)應(yīng)中斷32~59;


void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);

 


中斷失能寄存器組:ICER[8]


作用:用來(lái)失能中斷


32位寄存器,每個(gè)位控制一個(gè)中斷的失能。STM32F10x只有60個(gè)可屏蔽中斷,所以只使用了其中的ICER[0]和ICER[1]。


ICER[0]的bit0~bit31分別對(duì)應(yīng)中斷0~31。ICER[1]的bit0~27對(duì)應(yīng)中斷32~59;


配置方法跟ISER一樣。


void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);

 


中斷掛起控制寄存器組:ISPR[8]


作用:用來(lái)掛起中斷


中斷解掛控制寄存器組:ICPR[8]


作用:用來(lái)解掛中斷


static __INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn);

static __INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn);

static __INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn);

 


中斷激活標(biāo)志位寄存器組:IABR[8]


作用:只讀,通過它可以知道當(dāng)前在執(zhí)行的中斷是哪一個(gè)


如果對(duì)應(yīng)位為1,說(shuō)明該中斷正在執(zhí)行。


static __INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn)

3 code

 


一定要使能系統(tǒng)時(shí)鐘


因?yàn)榕渲肎PIO和中斷線的映射關(guān)系需要SYSCFG


SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource11);

只要用到外部中斷,就一定要打開SYSCFG時(shí)鐘

關(guān)鍵字:STM32  中斷 引用地址:STM32 中斷詳解

上一篇:STM32中斷與事件
下一篇:STM32 位段詳解

推薦閱讀

MPEG LA今天宣布,MPEG LA AVC/H.264專利組合許可證專利持有人已就德國(guó)地方法院(“Landgericht Dusseldorf”)的案件強(qiáng)制執(zhí)行禁令判決,這些判決認(rèn)定華為德國(guó)有限公司(“華為”)和中興德國(guó)有限公司(“中興”)在其移動(dòng)電話中實(shí)施AVC/H.264(MPEG-4第10部分)標(biāo)準(zhǔn)而侵犯了這些專利。請(qǐng)參閱?http://www.mpegla.com/Lists/MPEG%20LA%20Legal%20Action%...
日媒稱,人口日益老齡化,對(duì)具體幫助的需求日益增多,但缺乏提供幫助的資金和看護(hù)人。日本的豐田汽車公司認(rèn)為,它們能解決這個(gè)問題。 12月19日?qǐng)?bào)道,18日,在東京國(guó)際機(jī)器人展覽會(huì)上,該公司的款類人機(jī)器人T-HR3由一名人類操作員遙控。 該機(jī)器人提供的眼鏡可以讓操作員看到機(jī)器人所見之物,手套讓他們感覺到機(jī)器人所觸摸之物——這足以讓操作員通過機(jī)...
要想成功開發(fā)使用毫米波的5G新型無(wú)線電設(shè)備,就需要更多的天線。5G NR手機(jī)是非常復(fù)雜的設(shè)備。它們必須處理新的5G毫米波頻段,包括4×4多輸入多輸出(MIMO)天線、3GPP指定的進(jìn)化通用地面無(wú)線接入(EUTRA)雙連通性,以及UWB等新興標(biāo)準(zhǔn)。而且它們?nèi)匀槐仨氈С?G連接以及藍(lán)牙、WIFI和GNSS的所有現(xiàn)有需求。5G NR手機(jī)可用于射頻信號(hào)鏈的電路板空間比LTE高級(jí)手機(jī)...
車輛中電子電路數(shù)量不斷增加,使得需要消耗的電池電量也隨之大幅增長(zhǎng)。為了支持遙控免鑰進(jìn)入和安全等功能,即使在汽車停車或熄火時(shí),電池也要持續(xù)供電。由于所有車輛都使用有限的電池供電,因此必須找到一種方法,一方面能增加更多功能(尤其是在設(shè)計(jì)汽車前端電源系統(tǒng)時(shí)),同時(shí)又不會(huì)顯著增加耗電量。是否需要符合嚴(yán)格的電磁兼容性 (EMC) 標(biāo)準(zhǔn)(例如...

史海拾趣

問答坊 | AI 解惑

智能機(jī)器車論文

              題目名稱:智能機(jī)器車                           淮安信息職業(yè)技術(shù)學(xué)院  & ...…

查看全部問答∨

機(jī)器人 轉(zhuǎn)一個(gè)國(guó)外的機(jī)器人項(xiàng)目

http://66.249.89.132/translate_c?hl=zh-CN&sl=en&u=http://www.robotroom.com/Jet.html&prev=/search%3Fq%3DC51%2Bcompiler%26hl%3Dzh-CN%26client%3Daff-cs-360se%26hs%3Dbtg%26sa%3DN%26start%3D50%26newwindow%3D1&usg=ALkJrhhLTO9Bj7 ...…

查看全部問答∨

求硬件資料,寫操作系統(tǒng)用,匯編級(jí)的,

舉個(gè)例吧,像下面這樣的就可以,簡(jiǎn)單明白,通俗易懂 7.1.2 可編程間隔定時(shí)器PIT 每個(gè)PC機(jī)中都有一個(gè)PIT,以通過IRQ0產(chǎn)生周期性的時(shí)鐘中斷信號(hào)。當(dāng)前使用最普遍的是Intel 8254 PIT芯片,它的I/O端口地址是0x40~0x43。 Intel 8254 PIT有3個(gè)計(jì)時(shí)通 ...…

查看全部問答∨

拜托各位大蝦,迷茫中!!女孩到底適合不適合做嵌入式??????

  學(xué)習(xí)嵌入式學(xué)了一些了,都還沒入門。有朋友勸我放棄,覺得女孩做這個(gè)沒有什么前途。真的迷茫啊,如果不做這個(gè)那又做什么呢?女孩到底做什么合適啊!我的很多朋友都在做基礎(chǔ)測(cè)試,我覺得我現(xiàn)在做好像晚了點(diǎn),況且還很無(wú)聊。我對(duì)自己能否 ...…

查看全部問答∨

[轉(zhuǎn)貼]DM9000 linux2.6 驅(qū)動(dòng)解析

DM9000 linux2.6 驅(qū)動(dòng)解析,網(wǎng)絡(luò)上面找的,感覺還不錯(cuò)轉(zhuǎn)帖給需要朋友。 /* *   dm9000.c: Version 1.2 03/18/2003 * *         A Davicom DM9000 ISA NIC fast Ethernet driver for Linux. * & ...…

查看全部問答∨

6M左右的無(wú)線收發(fā)模塊最遠(yuǎn)能多少米?

本帖最后由 paulhyde 于 2014-9-15 09:22 編輯 現(xiàn)在正在做一無(wú)線收發(fā)模塊,鑒于高頻的太難,想降低頻率控制在6M左右,這個(gè)頻率能傳多遠(yuǎn),謝謝指點(diǎn)。  …

查看全部問答∨

msp430 作為游戲把柄玩俄羅斯方塊 俄羅斯方塊visual basic做的 源碼

之前做課程設(shè)計(jì)vb做的俄羅斯方塊電腦運(yùn)行俄羅斯方塊下位機(jī)msp430的四個(gè)按鍵操作上下左右 [ 本帖最后由 chouchick 于 2012-6-1 23:09 編輯 ]…

查看全部問答∨

msp430 AD轉(zhuǎn)換程序

本帖最后由 paulhyde 于 2014-9-15 04:09 編輯 #include #include"lcd12864.h" #include"BoardConfig.h" #define Num_of_Results 32 static uint results[Num_of_Results]; //保存ADC轉(zhuǎn)換結(jié)果的數(shù)組 void int_adc() { P6SEL |= ...…

查看全部問答∨

FPGA+處理器

一直想做個(gè)FPGA+mcu的開發(fā)板,配套AD和以太網(wǎng)通信或者USB通信,目前FPGA+處理器的應(yīng)用越來(lái)越多,一直忙于項(xiàng)目,沒有時(shí)間做,各位大俠,覺得這樣的開發(fā)板如何,有沒有需求? 希望各位大俠提提意見……謝謝…

查看全部問答∨

悲劇的Nios 12.0

最近一直想給EE_FPGA做個(gè)集成化的測(cè)試程序,思來(lái)想去還是nios開發(fā)簡(jiǎn)單點(diǎn),尼瑪,悲劇的事情發(fā)生了。。 我做了一遍一遍,就是不對(duì),怎么都下載不到sdram里面去。真的是黔驢技窮了啊。。 我開始懷疑編譯器了,我換成了nios 11.0 ;NND,就神奇的好 ...…

查看全部問答∨
小廣播
設(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
主站蜘蛛池模板: 和平县| 临夏县| 丽江市| 刚察县| 明星| 得荣县| 扬中市| 玉田县| 光山县| 榆社县| 宁阳县| 曲麻莱县| 铜山县| 柳江县| 手游| 明光市| 九龙坡区| 高雄县| 东乌珠穆沁旗| 瑞丽市| 台湾省| 鄂伦春自治旗| 太原市| 神农架林区| 松桃| 包头市| 肇东市| 松滋市| 河源市| 宁明县| 金秀| 盘锦市| 临猗县| 新沂市| 宣武区| 黄大仙区| 榆中县| 昭觉县| 德州市| 顺昌县| 托克托县|