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

中斷之外部中斷

發(fā)布者:RoboPilot最新更新時(shí)間:2020-09-11 來源: eefocus關(guān)鍵字:中斷  外部中斷  STM32 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

ARM Cortex M3共有256個(gè)中斷。

STM32F103CB共有43個(gè)外部中斷和16個(gè)內(nèi)部中斷。

具有相同數(shù)值編號的IO口被分配為同一組,共用一條中斷請求線,如下圖:

 

 

所以共有15條中斷線,另外

●EXTI線16連接到PVD輸出
●EXTI線17連接到RTC鬧鐘事件
●EXTI線18連接到USB喚醒事件

寄存器:1、外部中斷配置寄存器    AFIO_EXTxCR1------->用于選擇輸入中斷源  Pin 0..3

                                     AFIO_EXTxCR2------->用于選擇輸入中斷源  Pin 0..7

                                     AFIO_EXTxCR2------->用于選擇輸入中斷源  Pin 8..11

                                     AFIO_EXTxCR2------->用于選擇輸入中斷源  Pin 12..15

                                 (說明:5個(gè)端口PORTA..E,每個(gè)端口各有16位可供選擇)

           2、中斷屏蔽寄存器        EXTI_IMR----------->屏蔽線上的中斷請求         共19路

           3、事件屏蔽寄存器        EXTI_EMR----------->屏蔽線上的事件             共19路

           4、上升沿觸發(fā)選擇寄存器  EXTI_RTSR---------->設(shè)置相應(yīng)線為上升沿觸發(fā)       19位

           5、下降沿觸發(fā)選擇寄存器  EXTI_FTSR---------->設(shè)置相應(yīng)線為上升沿觸發(fā)       19位

          6、掛起寄存器            EXTI_PR------------>中斷線上發(fā)生了選擇的邊沿事件時(shí)置1   19位

          7、軟件中斷事件寄存器    EXTI_SWIER--------->寫該位可以將EXTI_PR中相應(yīng)的位值高,如果EXTI_IMR或EXTI_EMR使能,則可以產(chǎn)生相應(yīng)的中斷 

配置流程:中斷在使用前必須對中斷線進(jìn)行配置并激活

       1、配置相應(yīng)的IO口為輸入,浮空輸入時(shí)一定要加上拉或者是下拉

       2、開啟IO口復(fù)用時(shí)鐘,設(shè)置IO與中斷線的映射關(guān)系---->AFIO_EXTxCR1

       3、設(shè)置相應(yīng)中斷觸發(fā)條件---------->EXTI_IMR、EXTI_RTSR、EXTI_FTSR      

       4、在NVIC中開啟并使能中斷,對中斷分組進(jìn)行配置

       5、編寫中斷服務(wù)函數(shù)

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------>

編寫中斷程序的步驟:(庫函數(shù)版)

1.初始化系統(tǒng)時(shí)鐘和端口時(shí)鐘,在此需注意設(shè)置完端口時(shí)鐘外還須將端口設(shè)置為功能復(fù)用IO時(shí)鐘。RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE)

2.初始化GPIO。

3.中斷配置,包括兩部分(兩個(gè)函數(shù)),中斷配置和中斷優(yōu)先級配置。

中斷配置:結(jié)構(gòu)體:EXTI_InitTypeDef 。清空中斷線、中斷線映射CPU、中斷線選擇、中斷模式、觸發(fā)方式、使能。

優(yōu)先級配置:結(jié)構(gòu)體:NVIC_InitTypeDef。選組、選擇IRQ通道、設(shè)置搶占優(yōu)先級、設(shè)置從優(yōu)先級、使能。

EG:  EXTI_Configuration() 和 NVIC_Configuration()

分組情況:

優(yōu)先級組別搶占式優(yōu)先級副優(yōu)先級
44位/16級0位/0級
33位/8級1位/2級
22位/4級2位/4級
11位/2級3位/8級
00位/0級4位/6級

 

4.中斷服務(wù)程序。比如0號中斷線對應(yīng)函數(shù)  void EXTI0_IRQHandler(void)

示例:按鍵改變LED的狀態(tài)

1.主要功能是按鍵響應(yīng)中斷從而改變LED的狀態(tài)。
2.按鍵所屬端口:GPIOB,LED所屬端口:GPIOB
3.按鍵管腳:PB0~PB7
4.LED管腳:PB8~PB15
5.PB0~PB5分別依次控制PB8~PB13


  1 #include "pbdata.h"

  2 #include "led.h"

  3 #include "key.h"

  4 #include "misc.h"

  5 #include "stm32f10x_exti.h"

  6 

  7 void RCC_Configration(void)

  8 {

  9      SystemInit();

 10      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

 11      RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);      //功能復(fù)用IO時(shí)鐘

 12 }

 13 

 14 void GPIO_Configration(void)

 15 {

 16     GPIO_LED_Configration();

 17     GPIO_KEY_Configration();

 18 }

 19 

 20 /*

 21   *中斷配置*

 22             */

 23 void EXTI_Configuration(void)

 24 {

 25     EXTI_InitTypeDef EXTI_InitStructure;

 26          

 27     EXTI_ClearITPendingBit(EXTI_Line0);     //清空中斷線

 28     EXTI_ClearITPendingBit(EXTI_Line1);

 29     EXTI_ClearITPendingBit(EXTI_Line2);

 30     EXTI_ClearITPendingBit(EXTI_Line3);

 31     EXTI_ClearITPendingBit(EXTI_Line4);

 32     EXTI_ClearITPendingBit(EXTI_Line5);

 33     EXTI_ClearITPendingBit(EXTI_Line6);

 34     EXTI_ClearITPendingBit(EXTI_Line7);

 35 

 36     GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0);//映射

 37     GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource1);

 38     GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource2);

 39     GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource3);

 40     GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource4);

 41     GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource5);

 42     GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource6);

 43     GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource7);

 44         

 45     EXTI_InitStructure.EXTI_Line=EXTI_Line0 | EXTI_Line1 | EXTI_Line2 | EXTI_Line3 | EXTI_Line4 | EXTI_Line5 | EXTI_Line6 | EXTI_Line7;       //選擇中斷線

 46 

 47     EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;           //設(shè)置模式

 48     EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;       //設(shè)置觸發(fā)方式

 49     EXTI_InitStructure.EXTI_LineCmd=ENABLE;                        //使能

 50 

 51     EXTI_Init(&EXTI_InitStructure);

 52 }

 53 

 54 void NVIC_Configuration0(void)         //優(yōu)先級設(shè)置函數(shù)

 55 {

 56        NVIC_InitTypeDef NVIC_InitStructure; 

 57 

 58     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3); 

 59                                                      

 60     NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;       //選擇IRQ通道

 61     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //搶占優(yōu)先級設(shè)置

 62     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;            //次優(yōu)先級設(shè)置

 63     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 

 64     NVIC_Init(&NVIC_InitStructure);     

 65 }

 66 

 67 void NVIC_Configuration1(void)        

 68 {

 69        NVIC_InitTypeDef NVIC_InitStructure; 

 70 

 71 //    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3); 

 72                                                      

 73     NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;       

 74     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;  

 75     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;            

 76     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 

 77     NVIC_Init(&NVIC_InitStructure);    

 78 }

 79 

 80 void NVIC_Configuration2(void)

 81 {

 82     NVIC_InitTypeDef NVIC_InitStructure; 

 83 

 84 //    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3); 

 85 

 86     NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;       

 87     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;  

 88     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;            

 89     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 

 90     NVIC_Init(&NVIC_InitStructure);       

 91 }

 92 

 93 void NVIC_Configuration3(void)

 94 {

 95     NVIC_InitTypeDef NVIC_InitStructure; 

 96 

 97 //    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3); 

 98 

 99     NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;       

100     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;  

101     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;            

102     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 

103     NVIC_Init(&NVIC_InitStructure);      

104 }

105 

106 void NVIC_Configuration4(void)

107 {

108     NVIC_InitTypeDef NVIC_InitStructure; 

109 

110 //    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3); 

111 

112     NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;      

[1] [2]
關(guān)鍵字:中斷  外部中斷  STM32 引用地址:中斷之外部中斷

上一篇:PWM控制led漸變
下一篇:SysTick 定時(shí)器的使用

推薦閱讀最新更新時(shí)間:2025-06-16 03:55

基于STM32F103入門3——外部中斷
外部中斷 基本概念 CPU在處理某一事件A時(shí),發(fā)生了另一事件B請求CPU迅速去處理(中斷發(fā)生),那么CPU就會(huì)暫停當(dāng)前的工作(A事件),去執(zhí)行B事件(中斷響應(yīng)和中斷服務(wù)),然后B事件做完之后,再回到原來的事件(A事件)中繼續(xù)工作。(中斷的返回)。 簡單的說就是 比如你在家看電視,突然電話響了(中斷),然后又突然有人敲門(又另一個(gè)中斷),這時(shí),你是不是應(yīng)該先不看電視,先去接電話,然后去開門,然后再回來看電視呢? 當(dāng)然 電話響和有人敲門 你先去干哪個(gè) 取決于你覺得哪個(gè)更重要,更應(yīng)該先去做。這個(gè)屬于中斷嵌套。 框圖 功能說明 外部中斷的配置 代碼編寫步驟 1:打開相應(yīng)的時(shí)鐘 1.1:GPIO的時(shí)鐘 2.2:功能復(fù)用IO的
[單片機(jī)]
基于STM32F103入門3——<font color='red'>外部中斷</font>
51單片機(jī)——中斷系統(tǒng)、外部中斷、定時(shí)器中斷、串口通信C語言入門編程
中斷系統(tǒng): 當(dāng)中央處理機(jī)CPU正在處理某件事的時(shí)候外界發(fā)生了緊急事件請求,要求CPU暫停當(dāng)前的工作,轉(zhuǎn)而去處理這個(gè)緊急事件,處理完以后,再回到原來被中斷的地方,繼續(xù)原來的工作,這樣的過程稱為中斷。當(dāng)幾個(gè)中斷源同時(shí)向 CPU請求中斷,CPU總是先響應(yīng)優(yōu)先級別最高的中斷請求。當(dāng)CPU正在處理一個(gè)中斷源請求的時(shí)候(執(zhí)行相應(yīng)的中斷服務(wù)程序),發(fā)生了另外一個(gè)優(yōu)先級比它還高的中斷源請求。如果CPU能夠暫停對原來中斷源的服務(wù)程序,轉(zhuǎn)而去處理優(yōu)先級更高的中斷請求源,處理完以后,再回到原低級中斷服務(wù)程序,這樣的過程稱為中斷嵌套。STC89C5X 系列單片機(jī)提供了8個(gè)中斷請求源,它們分別是:外部中斷0(INT0)、外部中斷1(INT1)、外部中斷2(
[單片機(jī)]
51單片機(jī)——<font color='red'>中斷</font>系統(tǒng)、<font color='red'>外部中斷</font>、定時(shí)器<font color='red'>中斷</font>、串口通信C語言入門編程
STM8之外部中斷長按鍵識別相關(guān)內(nèi)容
  STM8常用中斷指令   開總中斷   _asm(“rim”);   禁止中斷   _asm(“sim”);   進(jìn)入停機(jī)模式   _asm(“halt”);   中斷返回   _asm(“iret”);   等待中斷   _asm(“wfi”);   軟件中斷   _asm(“trap”);   STM8S常用中斷映射   如使用中斷函數(shù)時(shí),可以通過在上圖中查找相對應(yīng)的中斷向量號,而中斷函數(shù)的名字可以自定義   外部中斷長按鍵識別相關(guān)配置   ??STM8S為外部中斷事件專門分配了五個(gè)中斷向量:   PortA 口的5個(gè)引腳:PA[6:2]   PortB 口的8個(gè)引腳:PB[7:0]   PortC 口的8
[單片機(jī)]
STM8之<font color='red'>外部中斷</font>長按鍵識別相關(guān)內(nèi)容
CT107D藍(lán)橋杯外部中斷
//外部中斷 //程序說明:1.使用程序前,將跳線J2調(diào)整為BTN模式 //2.按下P3.2-INT0引腳對應(yīng)的按鍵S5,LED1狀態(tài)反轉(zhuǎn) //3.按下P3.3-INT1引腳對應(yīng)的按鍵S4, LED2狀態(tài)反轉(zhuǎn) void wzd() { EX0 = 1; IT0 = 1; //邊沿觸發(fā)方式(下降沿) EX1 = 1; IT1 = 1; //邊沿觸發(fā)方式(下降沿) EA = 1; //開啟總中斷 } //外部中斷0函數(shù) void isr_intr_0(void) interrupt 0 { // } //外部中斷1中斷服務(wù)函數(shù) void isr_in
[單片機(jī)]
AVR的INT外部中斷和PCINT中斷之區(qū)別與使用
INT外部中斷是幾乎所有通用單片機(jī),嵌入機(jī)中都會(huì)帶有的,早期的51系列和arm系列也都有,然而大多數(shù)因?yàn)樵O(shè)計(jì)原因,多只有帶兩個(gè)INT,最近別人提到了一個(gè)“所有端口都可以外部中斷”這樣的說法,因?yàn)楸硎敬嬉桑虼苏伊诵┵Y料,也就找到了avr328p自帶的PCINT引腳功能 INT外部中斷和AVR和PCINT具體區(qū)別如下: 差別1. INT限制在了兩個(gè)端口上面,而PCINT則是所有接口都具備。 差別2. INT具有上沿,下沿,低電平,高電平觸發(fā)這幾種模式,而PCINT只有測量電平的變化這一個(gè)模式。 差別3. INT可以了解具體是哪個(gè)口觸發(fā)的,而PCINT不行。 差別4. PCINT不會(huì)直接跳轉(zhuǎn)入指定的程序,用
[單片機(jī)]
AVR的INT<font color='red'>外部中斷</font>和PCINT<font color='red'>中斷</font>之區(qū)別與使用
avr單片機(jī)外部中斷0,1,2初始化配置及說明
#include iom16v.h #include macros.h /*1.狀態(tài)寄存器SREG bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 I T H S V N Z C I:全局中斷使能位。 在I置位后,單獨(dú)的中斷使能由不同的中斷寄存器控制。若I為0,則禁止中斷。 MCU 控制寄存器- MCUCR MCU 控制寄存器包含中斷觸發(fā)控制位與通用 MCU 功能 Bit 7 6 5 4 3 2 1 0 SM2 SE SM1 SM0
[單片機(jī)]
一起學(xué)mini2440裸機(jī)開發(fā)(十)mini2440外部中斷實(shí)驗(yàn)
我今天一整天都在試著將TQ2440的那種處理中斷的方法(即安裝中斷向量表)移植到MDK中的mini2440,但是一直沒成功,這種方法一直沒成功,后來又想,還是先從最簡單的開始吧,就是不利用中斷向量表,直接像利用51單片機(jī)那樣的中斷一樣使用它,但是也沒成功。考慮到程序跑飛的可能性,將程序利用MDK中的Download功能下載到了Nor Flash中去,竟然行了,想了想原因,明白是怎么回事了。我原來是利用jlink調(diào)試的方法,這種調(diào)試方式是直接將程序放到了SDRAM的0x3000 0000處,如果發(fā)生中斷后,比如發(fā)生了普通中斷IRQ,那么PC指針被強(qiáng)制設(shè)為0x0000 0018,而我的程序是放在了0x3000 0000處,在地址0x
[單片機(jī)]
一起學(xué)mini2440裸機(jī)開發(fā)(十)mini2440<font color='red'>外部中斷</font>實(shí)驗(yàn)
松翰單片機(jī)外部中斷
chip sn8f27e65 //{{SONIX_CODE_OPTION //完整源碼下載: http://www.51hei.com/f/shwbzd.rar .Code_Option WDT_CLK Flosc/4 .Code_Option Reset_Pin P04 .Code_Option LVD LVD_Max ; 3.3V Reset .Code_Option Watch_Dog Disable ;關(guān)閉看門狗 .Code_Option Low_Fcpu Flosc/1 .Code_Option High_Clk IHRC_16M ; Internal 16M RC Oscillator .Code_Op
[單片機(jī)]
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章
隨便看看

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京B2-20211791 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 措勤县| 博白县| 治多县| 伊宁市| 静宁县| 隆德县| 南陵县| 鹤庆县| 翁源县| 桐庐县| 左云县| 介休市| 彭山县| 临夏县| 永济市| 岳池县| 永清县| 渭源县| 安图县| 清新县| 吉安县| 湘西| 新兴县| 平乐县| 灯塔市| 新兴县| 即墨市| 苏尼特左旗| 固阳县| 香格里拉县| 城固县| 三明市| 渭源县| 双鸭山市| 高碑店市| 蓬溪县| 山东| 花垣县| 扬州市| 社旗县| 监利县|