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

歷史上的今天

今天是:2024年09月11日(星期三)

正在發生

2020年09月11日 | 中斷之外部中斷

發布者:RoboPilot 來源: eefocus關鍵字:中斷  外部中斷  STM32 手機看文章 掃描二維碼
隨時隨地手機看文章

ARM Cortex M3共有256個中斷。

STM32F103CB共有43個外部中斷和16個內部中斷。

具有相同數值編號的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個端口PORTA..E,每個端口各有16位可供選擇)

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

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

           4、上升沿觸發選擇寄存器  EXTI_RTSR---------->設置相應線為上升沿觸發       19位

           5、下降沿觸發選擇寄存器  EXTI_FTSR---------->設置相應線為上升沿觸發       19位

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

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

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

       1、配置相應的IO口為輸入,浮空輸入時一定要加上拉或者是下拉

       2、開啟IO口復用時鐘,設置IO與中斷線的映射關系---->AFIO_EXTxCR1

       3、設置相應中斷觸發條件---------->EXTI_IMR、EXTI_RTSR、EXTI_FTSR      

       4、在NVIC中開啟并使能中斷,對中斷分組進行配置

       5、編寫中斷服務函數

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

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

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

2.初始化GPIO。

3.中斷配置,包括兩部分(兩個函數),中斷配置和中斷優先級配置。

中斷配置:結構體:EXTI_InitTypeDef 。清空中斷線、中斷線映射CPU、中斷線選擇、中斷模式、觸發方式、使能。

優先級配置:結構體:NVIC_InitTypeDef。選組、選擇IRQ通道、設置搶占優先級、設置從優先級、使能。

EG:  EXTI_Configuration() 和 NVIC_Configuration()

分組情況:

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

 

4.中斷服務程序。比如0號中斷線對應函數  void EXTI0_IRQHandler(void)

示例:按鍵改變LED的狀態

1.主要功能是按鍵響應中斷從而改變LED的狀態。
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);      //功能復用IO時鐘

 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;           //設置模式

 48     EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;       //設置觸發方式

 49     EXTI_InitStructure.EXTI_LineCmd=ENABLE;                        //使能

 50 

 51     EXTI_Init(&EXTI_InitStructure);

 52 }

 53 

 54 void NVIC_Configuration0(void)         //優先級設置函數

 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;  //搶占優先級設置

 62     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;            //次優先級設置

 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]
關鍵字:中斷  外部中斷  STM32 引用地址:中斷之外部中斷

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

推薦閱讀

本塊代碼實現了定時器定時觸發ADC,多通道采樣,并通過DMA進行數據傳輸到內存的操作。#include "adc.h" [cpp] view plain copy#define DMA_BUFFER_SIZE 6 uint8 sample_finish = 0; int16 adc_dma_tab[6] = { 0 }; uint8 sample_index = 0; //采樣點數據 int16 sample_1[128] = { 0 }; int16 sample_2[1...
為了測試前面的無線模塊的程序,寫了一個usart操縱Windows超級終端的程序小程序。廢話少說,上代碼: 1.硬件配置的頭文件:******************** (C) COPYRIGHT 2011 SDUEM ********************* File Name : hw_config.h* Author : wzb@sduem* Version : V2.2.0* Date ...
單片機源程序如下:#include <REG52.H> #include <math.h> //Keil library #include <stdio.h> //Keil library #include <INTRINS.H>#include "lcd1602.h"typedef unsigned short ushort;typedef unsigned int uint;//****************************************#define DataPort P0 //LCD1602數...
智東西(公眾號:zhidxcom)作者 | 健恩編輯 | 云鵬智東西9月11日報道,昨天,世界機器人大會再次在北京亦莊拉開帷幕,智東西記者一大早便跨越整個北京城來到這里打探這場大會的最新消息。世界機器人大會自2015年開始舉辦,迄今為止已成功舉辦過5次。它不僅是國內一年一度規模最大的機器人產業頂級展會,也是國內機器人產業風向的集中展示。智東西了解...

史海拾趣

小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 九台市| 凤山市| 南部县| 炎陵县| 凉城县| 通化县| 临漳县| 巴东县| 时尚| 清镇市| 南丰县| 石狮市| 轮台县| 平原县| 囊谦县| 上栗县| 景宁| 成都市| 石楼县| 安乡县| 丰台区| 武胜县| 阜康市| 峨边| 泰兴市| 江北区| 朝阳区| 罗山县| 东明县| 沐川县| 资阳市| 平果县| 同心县| 清丰县| 达州市| 沂水县| 长宁区| 长治县| 宁国市| 咸阳市| 广水市|