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

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

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

單片機(jī)的NVIC與EXTI中斷詳解

CHANBAEK ? 來(lái)源:無(wú)限琢磨 ? 作者: Cai ? 2023-11-01 12:35 ? 次閱讀

01嵌套向量中斷控制器——NVIC

NVIC的全稱是Nested vectoredinterrupt controller,即嵌套向量中斷控制器??刂浦麄€(gè)芯片中斷相關(guān)的功能,通過(guò)對(duì)NVIC寄存器進(jìn)行配置可以實(shí)現(xiàn)對(duì)內(nèi)核和片上外設(shè)的中斷的控制。但是各個(gè)芯片廠商在設(shè)計(jì)芯片的時(shí)候會(huì)對(duì) Cortex-M4內(nèi)核里面的 NVIC進(jìn)行裁剪,把不需要的部分去掉,所以說(shuō) STM32的 NVIC 是 Cortex-M4的 NVIC 的一個(gè)子集,只是用到了NVIC的一部分功能,其余的保留以后備用。

搶占式優(yōu)先級(jí)(占先式優(yōu)先級(jí))和響應(yīng)優(yōu)先級(jí)(子優(yōu)先級(jí))

搶占優(yōu)先級(jí)(占先式優(yōu)先級(jí))

搶占,是指打斷其他中斷的屬性,即因?yàn)榫哂羞@個(gè)屬性會(huì)出現(xiàn)嵌套中斷(在執(zhí)行中斷服務(wù)函數(shù)A 的過(guò)程中被中斷B 打斷,執(zhí)行完中斷服務(wù)函數(shù)B 再繼續(xù)執(zhí)行中斷服務(wù)函數(shù)A)。

通俗的講,完成某一件事正常是有順序,先完成事件 A ,再完成事件 B,假如,張三現(xiàn)在在做事件 A ,突然李四叫張三去做事件 B ,那么現(xiàn)在就有一個(gè)問(wèn)題,張三是先完成事件 A ?還是去做事件 B ?這里就需要看看那個(gè)事件的優(yōu)先級(jí)了,倘若事件 A ,比事件 B 比較重要,那么先完成事件 A 后再完成事件 B ,假如是事件 B, 比事件 A 比較重要,則張三需要先完成事件 B ,再回來(lái)繼續(xù)完成事件 A ,不管事件 A,有沒(méi)有完成。

在片內(nèi)中設(shè)置好事件執(zhí)行的優(yōu)先級(jí)之后,總是高優(yōu)先級(jí)先執(zhí)行完然后再執(zhí)行低優(yōu)先級(jí)的。編號(hào)越低優(yōu)先級(jí)越高。即 “0”的優(yōu)先級(jí)最高。

響應(yīng)優(yōu)先級(jí)(子優(yōu)先級(jí))

響應(yīng)屬性則應(yīng)用在搶占屬性相同的情況下,當(dāng)兩個(gè)中斷向量的搶占優(yōu)先級(jí)相同時(shí),如果兩個(gè)中斷同時(shí)到達(dá), 則先處理響應(yīng)優(yōu)先級(jí)高的中斷。

通俗的講,同時(shí)有事件 A 、事件 B 、事件 C ,其中事件 A 的搶占優(yōu)先級(jí)要高于事件 B 、事件 C ,其次事件 B 、事件 C 的搶占優(yōu)先級(jí)一樣,在完成事件 A 之后,假如事件 B 、事件 C 這兩件事同時(shí)“到達(dá)”,那這個(gè)時(shí)候響應(yīng)屬性的作用就開(kāi)始發(fā)揮了,假如事件 B 的響應(yīng)屬性高于事件 C ,則優(yōu)先完成事件B。

響應(yīng)和搶占優(yōu)先級(jí),有種搶占優(yōu)先級(jí)里面包含著響應(yīng)優(yōu)先級(jí)的感覺(jué),只不過(guò)搶占優(yōu)先級(jí)強(qiáng)調(diào)的事,我正在做某一件事,有另外一件事來(lái)打斷我現(xiàn)在在做的這件。響應(yīng)優(yōu)先級(jí)則強(qiáng)調(diào)的是,同時(shí)“到達(dá)”,我先處理哪一件事的問(wèn)題。

NVIC 的定義

在 NVIC 有一個(gè)專門的寄存器:中斷優(yōu)先級(jí)寄存器 NVIC_IPRx,用來(lái)配置外部中斷的優(yōu)先級(jí),IPR寬度為 8bit,原則上每個(gè)外部中斷可配置的優(yōu)先級(jí)為 0~255,數(shù)值越小,優(yōu)先級(jí)越高。但是絕大多數(shù) CM3 芯片都會(huì)精簡(jiǎn)設(shè)計(jì),以致實(shí)際上支持的優(yōu)先級(jí)數(shù)減少,在 F103 中,只使用了高 4bit,如下所示:

圖片

在僅剩的4位中,又包含搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)。理論是會(huì)有16個(gè)中斷源,但是STM32又進(jìn)行了分組,共分為5組,如下:

圖片

在庫(kù)文件misc.c和misc.h中分別用宏定義定義了 "NVIC_PtiorityGroup"這五組分組源。

#define NVIC_PriorityGroup_0         ((uint32_t)0x700) /* 0 bits for pre-emption priority
                                                          4 bits for subpriority */
#define NVIC_PriorityGroup_1         ((uint32_t)0x600) /* 1 bits for pre-emption priority
                                                          3 bits for subpriority */
#define NVIC_PriorityGroup_2         ((uint32_t)0x500) /* 2 bits for pre-emption priority
                                                          2 bits for subpriority */
#define NVIC_PriorityGroup_3         ((uint32_t)0x400) /* 3 bits for pre-emption priority
                                                          1 bits for subpriority */
#define NVIC_PriorityGroup_4         ((uint32_t)0x300) /* 4 bits for pre-emption priority
                                                          0 bits for subpriority */

通過(guò)misc.c文件中定義的 “ **NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup) ** ” 函數(shù):

void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)
{
  /* Check the parameters */
  assert_param(IS_NVIC_PRIORITY_GROUP(NVIC_PriorityGroup));

  /* Set the PRIGROUP[10:8] bits according to NVIC_PriorityGroup value */
  SCB- >AIRCR = AIRCR_VECTKEY_MASK | NVIC_PriorityGroup;

圖片

配置響應(yīng)優(yōu)先級(jí)及應(yīng)用舉例

例如配置以下一位搶占優(yōu)先級(jí),三位子優(yōu)先級(jí)

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//中斷優(yōu)先級(jí)分組:2位的搶占,2位的子優(yōu)先級(jí)

在選擇完組源之后,就需要對(duì)該組的中斷源、搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)、配置通道的開(kāi)啟進(jìn)行配置 。

通過(guò)在 misc.h 中的結(jié)構(gòu)體,進(jìn)行配置

typedef struct
{
uint8_t NVIC_IRQChannel;//中斷源
uint8_t NVIC_IRQChannelPreemptionPriority;//搶占優(yōu)先級(jí)
uint8_t NVIC_IRQChannelSubPriority;//響應(yīng)優(yōu)先級(jí)
FunctionalState NVIC_IRQChannelCmd;//是否使能
} NVIC_InitTypeDef;

針對(duì)每個(gè)中斷,設(shè)置對(duì)應(yīng)的搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí),下面以中斷源為 "USART2_IRQn",搶占優(yōu)先級(jí)為1,響應(yīng)優(yōu)先級(jí)為0,的例子,優(yōu)先級(jí)分組為一。

static void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  /* 嵌套向量中斷控制器組選擇 */

NVIC_InitStructure.NVIC_IRQChannel = DEBUG_USART_IRQ;  /* 配置USART為中斷源 */
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; /* 搶斷優(yōu)先級(jí)*/
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;  /* 子優(yōu)先級(jí) */
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  /* 使能中斷 */
 
NVIC_Init(&NVIC_InitStructure); /* 初始化配置NVIC */
}

其中中斷源通過(guò)在 "stm32f10x.h"中的結(jié)構(gòu)體

typedef enum IRQn
{
  .
  .
  .
  .
  .
}IRQn_Type;

至此,關(guān)于NCIV的簡(jiǎn)單配置就完成了

02外部中斷/事件控制器——EXTI

EXTI簡(jiǎn)介

EXTI(External interrupt/event controller)—外部中斷/事件控制器,管理了控制器的 20 個(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ā)事件的屬性。

中斷/事件線

EXTI 有 20 個(gè)中斷/事件線,每個(gè) GPIO 都可以被設(shè)置為輸入線,占用 EXTI0 至 EXTI15,還有另外七根用于特定的外設(shè)事件。這里得并不是以PA的整個(gè)系列作為一個(gè)中斷/事件線,而是以PA0,PB0,PC0 …… PG0作為一個(gè)中斷源,如下圖所示。

圖片

圖片

16個(gè)中斷線的不是每個(gè)中斷都有獨(dú)立的中斷服務(wù)函數(shù),IO口外部中斷在中斷向量表中只分配了7個(gè)中斷向量,也就是只能使用7個(gè)中斷服務(wù)函數(shù)。

圖片

從表可以看出外部中斷EXTI5_9共用一個(gè)服務(wù)函數(shù),外部中斷EXTI15_10共用一個(gè)服務(wù)函數(shù),對(duì)應(yīng)的中斷函數(shù)在啟動(dòng)文件里面

EXTI0_IRQHandler
EXTI1_IRQHandler
EXTI2_IRQHandler
EXTI3_IRQHandler
EXTI4_IRQHandler

因?yàn)檫@里是通過(guò)STM32 的引腳,通過(guò)映射的方法,讓GPIO具有了中斷的功能,所以在使用某一個(gè)GPIO作為中斷的引腳的時(shí)候,就需要調(diào)動(dòng)映射服務(wù)函數(shù)。( “ stm32f10x_gpio.c” 中的 “ GPIO_EXTILineConfig”)

void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)
{
  uint32_t tmp = 0x00;
  /* Check the parameters */
  assert_param(IS_GPIO_EXTI_PORT_SOURCE(GPIO_PortSource));
  assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));


  tmp = ((uint32_t)0x0F) < < (0x04 * (GPIO_PinSource & (uint8_t)0x03));
  AFIO- >EXTICR[GPIO_PinSource > > 0x02] &= ~tmp;
  AFIO- >EXTICR[GPIO_PinSource > > 0x02] |= (((uint32_t)GPIO_PortSource) < < (0x04 * (GPIO_PinSource & (uint8_t)0x03)));
}

其中,GPIO_PortSource,通過(guò)在 stm32f10x_gpio.h 中的查找響應(yīng)的指令,如下所示

#define GPIO_PortSourceGPIOA       ((uint8_t)0x00)
#define GPIO_PortSourceGPIOB       ((uint8_t)0x01)
#define GPIO_PortSourceGPIOC       ((uint8_t)0x02)
#define GPIO_PortSourceGPIOD       ((uint8_t)0x03)
#define GPIO_PortSourceGPIOE       ((uint8_t)0x04)
#define GPIO_PortSourceGPIOF       ((uint8_t)0x05)
#define GPIO_PortSourceGPIOG       ((uint8_t)0x06)

同理,GPIO_PinSource ,通過(guò)在 stm32f10x_gpio.h 中的查找響應(yīng)的指令,如下所示

#define GPIO_PinSource0            ((uint8_t)0x00)
#define GPIO_PinSource1            ((uint8_t)0x01)
#define GPIO_PinSource2            ((uint8_t)0x02)
#define GPIO_PinSource3            ((uint8_t)0x03)
#define GPIO_PinSource4            ((uint8_t)0x04)
#define GPIO_PinSource5            ((uint8_t)0x05)
#define GPIO_PinSource6            ((uint8_t)0x06)
#define GPIO_PinSource7            ((uint8_t)0x07)
#define GPIO_PinSource8            ((uint8_t)0x08)
#define GPIO_PinSource9            ((uint8_t)0x09)
#define GPIO_PinSource10           ((uint8_t)0x0A)
#define GPIO_PinSource11           ((uint8_t)0x0B)
#define GPIO_PinSource12           ((uint8_t)0x0C)
#define GPIO_PinSource13           ((uint8_t)0x0D)
#define GPIO_PinSource14           ((uint8_t)0x0E)
#define GPIO_PinSource15           ((uint8_t)0x0F)

EXTI功能框圖

圖片

輸入線通過(guò)邊沿檢測(cè)電路,檢測(cè)是上升沿還是下降沿,至于哪一種觸發(fā)方式,通過(guò)上升沿觸發(fā)選擇寄存器(EXTI_RTSR)和下降沿觸發(fā)選擇寄存器(EXTI_FTSR)進(jìn)行相應(yīng)位置置 “1”。

圖片

圖片

通過(guò)在 “stm32f10x_exti.h”中的結(jié)構(gòu)體進(jìn)行選擇

typedef enum
{
  EXTI_Trigger_Rising = 0x08,//上升沿
  EXTI_Trigger_Falling = 0x0C,  //下降沿
  EXTI_Trigger_Rising_Falling = 0x10//雙觸發(fā)
}EXTITrigger_TypeDef;

在通過(guò)或門,分別有兩個(gè)信號(hào)來(lái)源,一個(gè)是軟件中斷事件寄存器,允許我們通過(guò)程序控制就可以啟動(dòng)中斷/事件線,另一個(gè)是邊沿檢測(cè)電路,假如我設(shè)置的是是上升沿觸發(fā),當(dāng)外部輸入輸入線是上升沿的時(shí),則邊沿檢測(cè)電路則會(huì)輸出“1”至或門,再通過(guò)或門,有 “1”則輸出是 “1”,或門的輸出端分別有兩個(gè)信號(hào)源去向,一個(gè)是請(qǐng)求掛起寄存器,一個(gè)事件屏蔽寄存器。

中斷屏蔽寄存器和請(qǐng)求掛起寄存器的與門邏輯運(yùn)算至NVIC中斷寄存器,再去判斷優(yōu)先級(jí)等等。

事件屏蔽寄存器和事件屏蔽寄存器的與門邏輯運(yùn)算至脈沖發(fā)生器,這個(gè)脈沖信號(hào)可以給其他外設(shè)電路使用,比如定時(shí)器 TIM、模擬數(shù)字轉(zhuǎn)換器 ADC 等等,這樣的脈沖信號(hào)一般用來(lái)觸發(fā) TIM 或者 ADC開(kāi)始轉(zhuǎn)換。

事件:是表示檢測(cè)到某一動(dòng)作(電平邊沿)觸發(fā)事件發(fā)生了。

中斷:有某個(gè)事件發(fā)生并產(chǎn)生中斷,并跳轉(zhuǎn)到對(duì)應(yīng)的中斷處理程序中。

選擇中斷線與EXTI 初始化結(jié)構(gòu)體詳解

首先選擇某一個(gè)GPIO作為中斷的輸入引腳,第一步使能起對(duì)應(yīng)的時(shí)鐘線,其次是配置起響應(yīng)的GPIO的功能,如下

GPIO_InitTypeDef GPIO_InitStructure;
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//配置相應(yīng)的Pin腳
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; /* 配置為浮空輸入 */ 
 GPIO_Init(GPIOA, &GPIO_InitStructure);//配置相應(yīng)的GPIO

"激活"該引腳之后,就需要將中斷的功能賦于這個(gè)引腳,即把響應(yīng)的映射功能使能,同時(shí)對(duì)該中斷的詳細(xì)內(nèi)容進(jìn)行配置.如下

首先找到以下函數(shù)進(jìn)行映射使能

"RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState) "

圖片

圖片

找到"RCC_APB2Periph_AFIO"

圖片

碼源:

EXTI_InitTypeDef EXTI_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO ,ENABLE);
EXTI_InitStructure.EXTI_Line = EXTI_Line0;

/* EXTI為中斷模式 */
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
/* 上升沿中斷 */
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
/* 使能中斷 */  
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);

下面是對(duì)應(yīng)查找的位置

通過(guò)查找EXTI相應(yīng)的設(shè)置結(jié)構(gòu)體

圖片

EXTI_Line :——>stm32f10x_exti.h

圖片

"EXTI為中斷模式":

圖片

EXTI_Trigger :

圖片

最后一步則是選擇EXTI的信號(hào)源,通過(guò)下面該函數(shù),進(jìn)行配置

void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)

以上中斷服務(wù)函數(shù)的初始化就完成了,接下來(lái)則是編寫中斷服務(wù)函數(shù)

void  EXTI0_IRQHandler (void)
{
    //要執(zhí)行的內(nèi)容
    EXTI_ClearITPendingBit( 相應(yīng)的中斷線);//查詢相應(yīng)中斷線和EXTI_Line 一樣
}

" EXTI0_IRQHandler "在啟動(dòng)文件中查找

圖片

void EXTI_ClearITPendingBit( 相應(yīng)的中斷線):

其作用就是清除進(jìn)入中斷時(shí)對(duì)寄存器某個(gè)位置 "1",進(jìn)行清 "0"

圖片

理論完成,進(jìn)入喜聞樂(lè)見(jiàn)的實(shí)驗(yàn)環(huán)節(jié)

以按鍵觸發(fā)中斷為例子,觸發(fā)引腳為:PA1

簡(jiǎn)單的邏輯過(guò)程

圖片

EXIT.c

#include "exti.h"


static void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;

  /* 嵌套向量中斷控制器組選擇 */
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

  /* 配置USART為中斷源 */
  NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;
  /* 搶斷優(yōu)先級(jí)*/
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  /* 子優(yōu)先級(jí) */
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
  /* 使能中斷 */
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  /* 初始化配置NVIC */
  NVIC_Init(&NVIC_InitStructure);
}


void EXIT_config(void)
{
  GPIO_InitTypeDef GPIO_InitStruct;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);

  GPIO_InitStruct.GPIO_Mode= GPIO_Mode_IN_FLOATING ;
  GPIO_InitStruct.GPIO_Pin= GPIO_Pin_1 ;
  GPIO_InitStruct.GPIO_Speed= GPIO_Speed_50MHz ;
  GPIO_Init(GPIOA,&GPIO_InitStruct);

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

  EXTI_InitTypeDef EXTI_InitStruct;

  EXTI_InitStruct.EXTI_Line=EXTI_Line1  ;
  EXTI_InitStruct.EXTI_LineCmd=ENABLE ;
  EXTI_InitStruct.EXTI_Mode= EXTI_Mode_Interrupt;
  EXTI_InitStruct.EXTI_Trigger= EXTI_Trigger_Falling;

  NVIC_Configuration();
  EXTI_Init(&EXTI_InitStruct);

}


void  EXTI1_IRQHandler (void)
{
    SysTick_Config_delay_ms(10);
    GPIO_ResetBits(GPIOC, GPIO_Pin_13 );
    EXTI_ClearITPendingBit( EXTI_Line1 );//查詢相應(yīng)中斷線和EXTI_Line 一樣
}

EXIT.h

#ifndef _EXIT_H
#define _EXIT_H


#include "misc.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x.h"
#include "led.h"
#include "systick.h"
#include "stm32f10x_exti.h"




void EXIT_config(void);
static void NVIC_Configuration(void);
#endif

main.c

#include "led.h"
#include "stm32f10x.h"
#include "exti.h"
#include "systick.h"


int main(void)
{
   SysTick_Init();
   LED_GPIO_Config()  ;
   EXIT_config( );
  while(1)
  {  


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

    關(guān)注

    6030

    文章

    44489

    瀏覽量

    631971
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5294

    瀏覽量

    119814
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    895

    瀏覽量

    41349
  • NVIC
    +關(guān)注

    關(guān)注

    0

    文章

    35

    瀏覽量

    11667
  • EXTI
    +關(guān)注

    關(guān)注

    0

    文章

    27

    瀏覽量

    3649
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    什么是中斷?單片機(jī)中斷處理過(guò)程詳解

    如果單片機(jī)沒(méi)有中斷,那么,單片機(jī)將失去靈魂。
    的頭像 發(fā)表于 11-09 11:28 ?4698次閱讀
    什么是<b class='flag-5'>中斷</b>?<b class='flag-5'>單片機(jī)</b><b class='flag-5'>中斷</b>處理過(guò)程<b class='flag-5'>詳解</b>

    STM32中斷NVIC/EXTI外部中斷是什么?

    STM32中斷NVIC/EXTI外部中斷是什么?
    發(fā)表于 11-17 06:22

    51單片機(jī)中斷詳解

    單片機(jī)_中斷理解51單片機(jī)中斷詳解(上)51單片機(jī)中斷
    發(fā)表于 11-22 06:08

    單片機(jī)教程十七:單片機(jī)中斷系統(tǒng)

    單片機(jī)教程十七:單片機(jī)中斷系統(tǒng) 單片機(jī)中斷系統(tǒng)的概念:什么是中斷,我們從一個(gè)生活中的例程引入
    發(fā)表于 05-15 23:11 ?5009次閱讀
    <b class='flag-5'>單片機(jī)</b>教程十七:<b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>中斷</b>系統(tǒng)

    《振南電子STM32視頻教程》第六講:EXTINVIC的配置和使用

    [第6講] EXTINVIC的配置和使用(34分鐘),由何強(qiáng)主講.本課主要講解:(1).STM32中的NVIC的理解;(2).NVIC的寄存器和庫(kù)函數(shù)的理解;(3).STM32中的
    發(fā)表于 10-09 15:50 ?963次閱讀

    51單片機(jī)中斷編程實(shí)例詳解

    51單片機(jī)中斷編程實(shí)例詳解.pdf
    發(fā)表于 12-16 15:42 ?17次下載

    一文詳解MCS-51單片機(jī)中斷系統(tǒng)

    一文詳解MCS-51單片機(jī)中斷系統(tǒng),具體的跟隨小編來(lái)了解一下。
    的頭像 發(fā)表于 07-28 11:26 ?1.3w次閱讀
    一文<b class='flag-5'>詳解</b>MCS-51<b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>中斷</b>系統(tǒng)

    51單片機(jī)NVIC中斷控制設(shè)計(jì)

    對(duì)于NVIC的任務(wù),可以概括為三個(gè): 1.配置中斷向量表--如果不配置,則不能進(jìn)入中斷 SCB-》VTOR 2.配置系統(tǒng)中斷分組--決定了第一和第二優(yōu)先級(jí)各占用的位數(shù) SC
    發(fā)表于 12-12 15:09 ?1795次閱讀

    STM32單片機(jī)中斷NVIC的詳細(xì)資料概述

    對(duì)51單片機(jī)有一定了解的都知道51單片機(jī)有5個(gè)中斷源,2個(gè)優(yōu)先級(jí),通過(guò)對(duì)IP這個(gè)寄存器賦值來(lái)進(jìn)行中斷優(yōu)先級(jí)的處理而STM32的中斷非常強(qiáng)大,
    發(fā)表于 07-17 17:39 ?3次下載
    STM32<b class='flag-5'>單片機(jī)</b><b class='flag-5'>中斷</b>及<b class='flag-5'>NVIC</b>的詳細(xì)資料概述

    51單片機(jī)外部中斷0實(shí)例詳解

    今天就以51單片機(jī)的外部中斷0為例,來(lái)簡(jiǎn)單講解一下單片機(jī)中斷的用法。1 51單片機(jī)中斷源51
    發(fā)表于 11-11 12:51 ?19次下載
    51<b class='flag-5'>單片機(jī)</b>外部<b class='flag-5'>中斷</b>0實(shí)例<b class='flag-5'>詳解</b>

    MCU_關(guān)于STM32Fxxx中斷EXTI產(chǎn)生時(shí)多次(兩次)進(jìn)入中斷的原因

    調(diào)試新的芯片Stm32F407時(shí),發(fā)現(xiàn)和以前的不一樣。相同的代碼,EXTI中斷總是會(huì)進(jìn)入兩次,為了驗(yàn)證,我手動(dòng)在中斷中進(jìn)行了清除,void EXTI0_IRQHandler(void
    發(fā)表于 11-18 17:21 ?11次下載
    MCU_關(guān)于STM32Fxxx<b class='flag-5'>中斷</b><b class='flag-5'>EXTI</b>產(chǎn)生時(shí)多次(兩次)進(jìn)入<b class='flag-5'>中斷</b>的原因

    STM32學(xué)習(xí)筆記(4)——NVIC中斷優(yōu)先級(jí)管理和外部中斷EXTI

    STM32學(xué)習(xí)筆記(4)——NVIC中斷優(yōu)先級(jí)管理和外部中斷EXTI一、NVIC中斷優(yōu)先級(jí)管理1
    發(fā)表于 11-26 11:36 ?0次下載
    STM32學(xué)習(xí)筆記(4)——<b class='flag-5'>NVIC</b><b class='flag-5'>中斷</b>優(yōu)先級(jí)管理和外部<b class='flag-5'>中斷</b><b class='flag-5'>EXTI</b>

    NVIC與外部中斷

    步驟RCC,NVIC,GPIO,USART,EXIT配置GPIOA.0 為按鍵GPIO用作EXTI外部中斷時(shí),需要打開(kāi)AFIO#ifdef
    發(fā)表于 12-27 19:30 ?6次下載
    <b class='flag-5'>NVIC</b>與外部<b class='flag-5'>中斷</b>

    STM32_EXTI外部中斷學(xué)習(xí)筆記

    參考資料:《STM32F4xx中文參考手冊(cè)》系統(tǒng)配置控制器以及中斷和事件章節(jié)。EXTI( External interrupt /evet controller)之前接觸過(guò)51單片機(jī)的都了解到51
    發(fā)表于 01-14 15:21 ?3次下載
    STM32_<b class='flag-5'>EXTI</b>外部<b class='flag-5'>中斷</b>學(xué)習(xí)筆記

    單片機(jī)中斷系統(tǒng)詳解

    單片機(jī)中斷是指在單片機(jī)執(zhí)行程序的過(guò)程中,當(dāng)外部設(shè)備或內(nèi)部條件發(fā)生某個(gè)特定事件時(shí),能夠暫停當(dāng)前正在執(zhí)行的程序,轉(zhuǎn)而去執(zhí)行一個(gè)特定的服務(wù)程序(稱為中斷服務(wù)程序或
    的頭像 發(fā)表于 12-05 09:09 ?2766次閱讀