<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > stm32快速學(xué)習(xí)3——簡(jiǎn)單按鍵中斷

          stm32快速學(xué)習(xí)3——簡(jiǎn)單按鍵中斷

          作者: 時(shí)間:2016-11-17 來源:網(wǎng)絡(luò) 收藏
          2個(gè)按鍵中斷,控制2個(gè)LED

          Main文件

          本文引用地址:http://www.ex-cimer.com/article/201611/315442.htm

          #include"stm32f10x.h"

          voidRCC_Configuration(void);

          voidGPIO_Configuration(void);

          voidEXTI_Configuration(void);//外部中斷設(shè)置

          voidNVIC_Configuration(void);//中斷優(yōu)先級(jí)別設(shè)置

          unsignedcharled_bit1=0;

          unsignedcharled_bit2=0;

          intmain(void)

          {

          RCC_Configuration();

          GPIO_Configuration();

          EXTI_Configuration();

          NVIC_Configuration();

          GPIO_SetBits(GPIOA,GPIO_Pin_0);

          GPIO_SetBits(GPIOA,GPIO_Pin_1);

          while(1);

          }

          voidRCC_Configuration(void)

          {

          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_AFIO ,ENABLE);

          }

          voidGPIO_Configuration(void)

          {

          GPIO_InitTypeDefGPIO_InitStructure;

          GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;

          GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

          GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

          GPIO_Init(GPIOA,&GPIO_InitStructure);

          GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_8;

          GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;

          GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

          GPIO_Init(GPIOD,&GPIO_InitStructure);

          }

          voidEXTI_Configuration(void)

          {

          EXTI_InitTypeDefEXTI_InitStructure;

          GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource3);

          EXTI_InitStructure.EXTI_Line=EXTI_Line3;

          EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;

          EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;

          EXTI_InitStructure.EXTI_LineCmd=ENABLE;

          EXTI_Init(&EXTI_InitStructure);

          GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource8);

          EXTI_InitStructure.EXTI_Line=EXTI_Line8;

          EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;

          EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;

          EXTI_InitStructure.EXTI_LineCmd=ENABLE;

          EXTI_Init(&EXTI_InitStructure);

          }

          voidNVIC_Configuration(void)

          {

          /*

          查看固件庫(kù)手冊(cè),關(guān)于中斷部分NVIC_IRQChannel

          PA3、PA8分別設(shè)置

          EXTI3_IRQChannel外部中斷線3中斷

          EXTI9_5_IRQChannel外部中斷線9-5中斷

          關(guān)于中斷線,查看STM32 Reference Manual的9.2.5外部中斷/事件線路映像

          stm32使用了4個(gè)位來保存優(yōu)先級(jí)別

          查固件庫(kù)

          Table273.先占優(yōu)先級(jí)和從優(yōu)先級(jí)值

          占先優(yōu)先級(jí)->主

          副優(yōu)先級(jí)->次

          號(hào)碼越小,等級(jí)越高

          判斷主的級(jí)別->一個(gè)高一個(gè)低->ok

          判斷主的級(jí)別->兩個(gè)都相同->判斷次的級(jí)別->一個(gè)高一個(gè)低->ok

          判斷主的級(jí)別->兩個(gè)都相同->判斷次的級(jí)別->兩個(gè)都相同->按照列表順序運(yùn)行

          */

          NVIC_InitTypeDefNVIC_InitStructure;

          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//占先優(yōu)先級(jí)、副優(yōu)先級(jí)的資源分配

          NVIC_InitStructure.NVIC_IRQChannel=EXTI3_IRQn;//指定中斷源

          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;//占先優(yōu)先級(jí)設(shè)定

          NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//副優(yōu)先級(jí)設(shè)定

          NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

          NVIC_Init(&NVIC_InitStructure);

          NVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQn;

          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;

          NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;

          NVIC_Init(&NVIC_InitStructure);

          }

          stm32f10x_it.c中加入

          externunsignedcharled_bit1,led_bit2;

          voidEXTI9_5_IRQHandler(void)

          {

          if(EXTI_GetITStatus(EXTI_Line8)!=RESET)

          {

          //添加中斷處理程序

          if(led_bit1)

          {

          GPIO_SetBits(GPIOA,GPIO_Pin_1);

          led_bit1=0;

          }

          else

          {

          GPIO_ResetBits(GPIOA,GPIO_Pin_1);

          led_bit1=1;

          }

          EXTI_ClearFlag(EXTI_Line8);

          }

          }

          voidEXTI3_IRQHandler(void)

          {

          if(EXTI_GetITStatus(EXTI_Line3)!=RESET)

          {

          if(led_bit2)

          {

          GPIO_SetBits(GPIOA,GPIO_Pin_0);

          led_bit2=0;

          }

          else

          {

          GPIO_ResetBits(GPIOA,GPIO_Pin_0);

          led_bit2=1;

          }

          EXTI_ClearFlag(EXTI_Line3);

          }

          }



          關(guān)鍵詞: stm32按鍵中

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();