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

歷史上的今天

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

正在發生

2020年09月01日 | STM32——如何配置外部中斷

發布者:感恩的7號 來源: eefocus關鍵字:STM3  配置  外部中斷 手機看文章 掃描二維碼
隨時隨地手機看文章

中斷服務函數列表

在這里插入圖片描述

IO口外部中斷在中斷向量表中只分配了7個中斷向量,也就是只能使用7個中斷服務函數


EXTI0_IRQHandler           

EXTI1_IRQHandler

EXTI2_IRQHandler           

EXTI3_IRQHandler           

EXTI4_IRQHandler           

EXTI9_5_IRQHandler         

EXTI15_10_IRQHandler 


外部中斷一般步驟

1、開啟IO口時鐘,初始化IO口為輸入。調用函數:GPIO_Init();

2、開啟IO口復用時鐘。調用函數:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

3、設置IO口與中斷線的映射關系。調用函數:GPIO_EXTILineConfig();

4、初始化線上中斷,設置觸發條件等。調用函數:EXTI_Init();

5、配置中斷分組(NVIC),并使能中斷。調用函數:NVIC_Init();

6、編寫中斷服務函數。調用函數:EXTIx_IRQHandler();

7、清除中斷標志位。調用函數:EXTI_ClearITPendingBit()。

硬件:

LED——GPIOB,GPIO_Pin_5

KEY——GPIOE,GPIO_Pin_1


代碼


void LED_Init(void) //led初始化配置

{

     GPIO_InitTypeDef GPIO_InitStructure;

     

     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能PB端口時鐘

   

     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 端口配置

     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出

     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度為50MHz

     GPIO_Init(GPIOB, &GPIO_InitStructure); //根據設定參數初始化GPIOB.5

     GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB.5 輸出高 此時狀態為滅 低電平


void KEY_Init(void) //key初始化配置   

  GPIO_InitTypeDef GPIO_InitStructure;

 

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能PORTA,PORTE時鐘

 

GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_1;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //設置成上拉輸入

  GPIO_Init(GPIOE, &GPIO_InitStructure); //初始化GPIOE.1

}


void EXTIX_Init(void) //中斷線初始化配置   下降沿觸發

{

  EXTI_InitTypeDef EXTI_InitStructure;


  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //使能復用功能時鐘

 

  GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource1); //設置IO口與中斷線的映射關系

 

  EXTI_InitStructure.EXTI_Line=EXTI_Line1; //KEY——GPIOE,GPIO_Pin_1 映射線

  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //中斷模式

  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //上升沿中斷

  EXTI_InitStructure.EXTI_LineCmd = ENABLE; //使能中斷

  EXTI_Init(&EXTI_InitStructure); //根據EXTI_InitStruct中指定的參數初始化外設EXTI寄存器

}

     

void NVIC_Init(void) //中斷初始化配置

{

NVIC_InitTypeDef NVIC_InitStructure;

 

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級


    NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn; //使能按鍵key1所在的外部中斷通道

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //搶占優先級2, 

    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02; //子優先級2

    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中斷通道

    NVIC_Init(&NVIC_InitStructure);  

}

 

void EXTI1_IRQHandler(void) //中斷服務函數配置

{

delay_ms(10); //鍵盤消抖

if(EXTI_GetITStatus(EXTI_Line1)==1) //判斷中斷線中斷狀態是否發生

{  

GPIO_PinReverse(GPIOB,GPIO_Pin_5); //反轉

}

EXTI_ClearITPendingBit(EXTI_Line1); //清除LINE1上的中斷標志位  

}


int main(void)

{

    LED_Init();

    KEY_Init();

    NVIC_Init();

    EXTIX_Init();

    while(1);

}


代碼可以進行的優化:

1.使用 #define 宏定義來聲明GPIO口

2.使用 庫函數 或者 寄存器 來操作GPIO口


硬件:

LED——GPIOB,GPIO_Pin_5

KEY——GPIOE,GPIO_Pin_1


#define digitalHi(p,i) {p->BSRR = i;}

#define digitalLow(p,i) {p->BSRR = (uint32_t)i;}

#define digitalToggle(p,i) {p->ODR ^= i;}


#define LED_GPIO_PORT GPIOB

#define LED_GPIO_PIN GPIO_pin_5

#define LED_GPIO_CLK RCC_APB2Periph_GPIOB


#define LED_TOGGLE digitalToggle(LED_GPIO_PORT,LED_GPIO_PIN)

#define LED_OFF digitalHi(LED_GPIO_PORT,LED_GPIO_PIN)

#define LED_ON digitalLow(LED_GPIO_PORT,LED_GPIO_PIN)


外部中斷常用庫函數:

①設置IO口與中斷線的映射關系:


void GPIO_EXTILineConfig(uint8_t GPIO_PortSource,uint8_t GPIO_PinSource);

eg:  GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource1);


② 初始化中斷線:觸發方式等:


void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);


③判斷中斷線中斷狀態,是否發生:


ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);


④清除中斷線上的中斷標志位:


void EXTI_ClearITPendingBit(uint32_t EXTI_Line);


EXTI_Init函數:


typedef struct

{

  uint32_t EXTI_Line;  //指定要配置的中斷線           

  EXTIMode_TypeDef EXTI_Mode;  //模式:事件 OR中斷

  EXTITrigger_TypeDef EXTI_Trigger; //觸發方式:上升沿/下降沿/雙沿觸發

  FunctionalState EXTI_LineCmd;  //使能 OR失能

}EXTI_InitTypeDef;


 EXTI_InitStructure.EXTI_Line=EXTI_Line2;  

 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;

 EXTI_InitStructure.EXTI_LineCmd = ENABLE;

 EXTI_Init(&EXTI_InitStructure);


關鍵字:STM3  配置  外部中斷 引用地址:STM32——如何配置外部中斷

上一篇:STM32——ARM與STM32之間的聯系
下一篇:STM32——MCU結構簡述(中英文對照)

推薦閱讀

? ??8月30日,廣州知識產權法院對華為終端有限公司(下稱“華為公司”)和惠州三星電子有限公司(下稱“惠州三星公司”)、三星(中國)投資有限公司(下稱“三星中國公司”)的侵害發明專利權糾紛一案進行了第一次公開審理。原告華為公司要求兩被告立即停止侵犯原告涉案專利權的行為,并索賠1500萬元。華為公司訴稱,其在2010年4月28日申請了名稱為“一種在界...
Power Integrations(PI)于2019年7月27日發布了結合PowiGaN技術的全新InnoSwitch?3系列恒壓/恒流離線反激式開關電源IC,利用GaN(氮化鎵)技術,讓InnoSwitch的產品在整個負載范圍內提供95%的高效率轉換,并且在密閉適配器內不使用散熱片的情況下可提供100 W的功率輸出。這款產品的發布日期專門選在了PI二季度財報當天,足見該技術對PI未來的重要性。P...
  由于眾所周知的原因,華為在9月14日之后面臨一個嚴重的考驗,與許多公司的合作關系都會受到影響。日前針對斷供華為顯示面板的消息,京東方表示否認,稱與華為合作順暢。  對于斷供華為OLED顯示屏的消息,在財報會談紀要中,京東方指出,“我們與華為合作很順暢,沒有聽說關于斷供的事情,我們會根據華為的政策策略相應的提供服務。”  對于華為9...
8月31日,聯合光電在與投資者互動時表示,公司目前AR/VR的客戶有小派、大朋、納德等,2021年上半年,公司AR/VR的出貨量同比增長較大,全年出貨量將高于去年全年。關于公司定增募投項目,聯合光電表示,公司定增募投主要項目為“新型顯示和智能穿戴產品智造項目”。項目建成達產后,可實現年產1,800萬套車載鏡頭產品、200萬套新型投影鏡頭產品以及58萬套VR/...

史海拾趣

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

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

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

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 深州市| 佳木斯市| 东宁县| 额济纳旗| 华蓥市| 嵊州市| 信阳市| 皮山县| 奎屯市| 曲阳县| 姚安县| 监利县| 漳平市| 新泰市| 武威市| 兴文县| 上栗县| 彭阳县| 隆德县| 治多县| 六安市| 崇信县| 通河县| 公主岭市| 孟村| 改则县| 麦盖提县| 乐清市| 钟山县| 土默特右旗| 慈溪市| 德保县| 甘孜县| 湖州市| 怀安县| 金湖县| 靖边县| 潮州市| 石景山区| 驻马店市| 太白县|