如题所述
ããå¤é¨ä¸æ/äºä»¶æ§å¶å¨ç±19个产çäºä»¶/ä¸æè¦æ±ç边沿æ£æµå¨ç»æãæ¯ä¸ªè¾å
¥çº¿å¯ä»¥ç¬ç«å°é
ç½®
ããè¾å ¥ç±»å(èå²ææèµ·)å对åºç触åäºä»¶(ä¸å沿æä¸é沿æè å边沿é½è§¦å)ãæ¯ä¸ªè¾å ¥çº¿é½å¯ä»¥è¢«ç¬
ããç«çå±è½ãæèµ·å¯åå¨ä¿æçç¶æ线çä¸æè¦æ±ã
ãã=========================================åå²çº¿=========================================
ãã19个ä¸æå¦ä¸ï¼
ãã17ââEXTI线16è¿æ¥å°PVDè¾åº
ãã18ââEXTI线17è¿æ¥å°RTCé¹éäºä»¶
ãã19ââEXTI线18è¿æ¥å°USBå¤éäºä»¶
ãã注ï¼æä¸å¾å¯ç¥EXTI0è¿æ¥çå¼è为PA0ãPB0ãPC0ãPD0ãPE0ãPF0ãPG0ï¼å ¶ä»å¤é¨ä¸æEXTI1ââ
ããEXTI15类似ãæ以å¨ä½¿ç¨æ¶å°½éå°éè¦çå¤é¨ä¸æé ç½®å¨ä¸åçEXTIxä¸ã
ããä¾å¦éè¦3个å¤é¨ä¸æï¼æ们å¯ä»¥é ç½®å°PA0ãPB4ãPG3ä¸ï¼æ¤æ¶æ¯ä¸ªä¸æé½æèªå·±çä¸æå¤çç¨
ããåºæ®µãå¦æé ç½®å°PA0ãPB0ãPC1ï¼åPA0åPB0å°å ¬ç¨ä¸ä¸ªä¸æç¨åºæ®µãå½ç¶å¦æç¹æ®éè¦ï¼ä¹
ããå¯ä»¥è¿æ ·è®¾è®¡ã
ãã=========================================åå²çº¿=========================================
ããé 置使ç¨æ¹æ³ï¼
ããåå§åç¸åºçGPIO管èé ç½®å¤é¨ä¸ææºå¹¶è¿è¡ä¸ææºåGPIOçè¿æ¥ç¼åç¸åºä¸ææºçä¸æå¤çç¨åº
ãã=========================================åå²çº¿=========================================
ããç¨åºä»£ç
ããåå§åç¸åºçGPIO管è
ããGPIO_InitTypeDef GPIO_InitStructure;
ããRCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
ããRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
ããRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
ããGPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
ããGPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
ããGPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
ããGPIO_Init(GPIOE, &GPIO_InitStructure);
ããGPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;
ããGPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
ããGPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
ããGPIO_Init(GPIOB, &GPIO_InitStructure);
ãã注ï¼GPIOçå¤ç¨åè½å¿ é¡»æå¼ï¼å¦çº¢åé¨å
ããé ç½®å¤é¨ä¸ææºå¹¶è¿è¡ä¸ææºåGPIOçè¿æ¥
ããGPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource0);
ããGPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource1);
ããGPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource8);
ããGPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource9);
ããEXTI_InitStructure.EXTI_Line =EXTI_Line0|EXTI_Line1|EXTI_Line8|EXTI_Line9;
ããEXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
ããEXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
ããEXTI_InitStructure.EXTI_LineCmd = ENABLE;
ããEXTI_Init(&EXTI_InitStructure);
ããç¼åç¸åºä¸ææºçä¸æå¤çç¨åº
ããvoid EXTI0_IRQHandler(void)
ãã{
ããif(Sys_Status > MIN_STATUS)
ãã{
ããSys_Status--;
ãã}
ããEXTI_ClearITPendingBit(EXTI_Line0);
ãã}
ããvoid EXTI1_IRQHandler(void)
ãã{
ããPEout(2) = ~PEout(2);
ããEXTI_ClearITPendingBit(EXTI_Line1);
ãã}
ãã#define Exti_From_Pin8 0x00000100
ãã#define Exti_From_Pin9 0x00000200
ããvoid EXTI9_5_IRQHandler(void)
ãã{
ããu32 Temp = 0x00;
ããPEout(2) = ~PEout(2);
ããTemp =EXTI->PR; //å读æ¯é£ä¸ªå¼èçä¸æ
ããswitch(Temp)
ãã{
ããcaseExti_From_Pin8:
ããEXTI_ClearITPendingBit(EXTI_Line8);
ããbreak;
ããcaseExti_From_Pin9:
ããif(Sys_Status < MAX_STATUS)
ãã{
ããSys_Status ++;
ãã}
ããEXTI_ClearITPendingBit(EXTI_Line9);
ããbreak;
ããdefault:break;
ãã}
ãã}
ãã=========================================åå²çº¿=========================================
ããä¸æå¤çç¨åºè¯´æï¼ç±äºå¤é¨ä¸æEXTI5ââEXTI9å ¬ç¨äºä¸ä¸ªä¸æï¼EXTI10ââEXTI15类似ï¼æ以è¦
ããåºåä¸åçä¸ææºéè¦è¿è¡ç¸åºçå¤æãå¦ä¸EXTI9_5_IRQHandlerä¸ï¼éè¿å读EXTI->PRå¯åå¨æ¥å¤
ããæä¸æçæ¥æºã
ããè¾å ¥ç±»å(èå²ææèµ·)å对åºç触åäºä»¶(ä¸å沿æä¸é沿æè å边沿é½è§¦å)ãæ¯ä¸ªè¾å ¥çº¿é½å¯ä»¥è¢«ç¬
ããç«çå±è½ãæèµ·å¯åå¨ä¿æçç¶æ线çä¸æè¦æ±ã
ãã=========================================åå²çº¿=========================================
ãã19个ä¸æå¦ä¸ï¼
ãã17ââEXTI线16è¿æ¥å°PVDè¾åº
ãã18ââEXTI线17è¿æ¥å°RTCé¹éäºä»¶
ãã19ââEXTI线18è¿æ¥å°USBå¤éäºä»¶
ãã注ï¼æä¸å¾å¯ç¥EXTI0è¿æ¥çå¼è为PA0ãPB0ãPC0ãPD0ãPE0ãPF0ãPG0ï¼å ¶ä»å¤é¨ä¸æEXTI1ââ
ããEXTI15类似ãæ以å¨ä½¿ç¨æ¶å°½éå°éè¦çå¤é¨ä¸æé ç½®å¨ä¸åçEXTIxä¸ã
ããä¾å¦éè¦3个å¤é¨ä¸æï¼æ们å¯ä»¥é ç½®å°PA0ãPB4ãPG3ä¸ï¼æ¤æ¶æ¯ä¸ªä¸æé½æèªå·±çä¸æå¤çç¨
ããåºæ®µãå¦æé ç½®å°PA0ãPB0ãPC1ï¼åPA0åPB0å°å ¬ç¨ä¸ä¸ªä¸æç¨åºæ®µãå½ç¶å¦æç¹æ®éè¦ï¼ä¹
ããå¯ä»¥è¿æ ·è®¾è®¡ã
ãã=========================================åå²çº¿=========================================
ããé 置使ç¨æ¹æ³ï¼
ããåå§åç¸åºçGPIO管èé ç½®å¤é¨ä¸ææºå¹¶è¿è¡ä¸ææºåGPIOçè¿æ¥ç¼åç¸åºä¸ææºçä¸æå¤çç¨åº
ãã=========================================åå²çº¿=========================================
ããç¨åºä»£ç
ããåå§åç¸åºçGPIO管è
ããGPIO_InitTypeDef GPIO_InitStructure;
ããRCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
ããRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
ããRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
ããGPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
ããGPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
ããGPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
ããGPIO_Init(GPIOE, &GPIO_InitStructure);
ããGPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;
ããGPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
ããGPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
ããGPIO_Init(GPIOB, &GPIO_InitStructure);
ãã注ï¼GPIOçå¤ç¨åè½å¿ é¡»æå¼ï¼å¦çº¢åé¨å
ããé ç½®å¤é¨ä¸ææºå¹¶è¿è¡ä¸ææºåGPIOçè¿æ¥
ããGPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource0);
ããGPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource1);
ããGPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource8);
ããGPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource9);
ããEXTI_InitStructure.EXTI_Line =EXTI_Line0|EXTI_Line1|EXTI_Line8|EXTI_Line9;
ããEXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
ããEXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
ããEXTI_InitStructure.EXTI_LineCmd = ENABLE;
ããEXTI_Init(&EXTI_InitStructure);
ããç¼åç¸åºä¸ææºçä¸æå¤çç¨åº
ããvoid EXTI0_IRQHandler(void)
ãã{
ããif(Sys_Status > MIN_STATUS)
ãã{
ããSys_Status--;
ãã}
ããEXTI_ClearITPendingBit(EXTI_Line0);
ãã}
ããvoid EXTI1_IRQHandler(void)
ãã{
ããPEout(2) = ~PEout(2);
ããEXTI_ClearITPendingBit(EXTI_Line1);
ãã}
ãã#define Exti_From_Pin8 0x00000100
ãã#define Exti_From_Pin9 0x00000200
ããvoid EXTI9_5_IRQHandler(void)
ãã{
ããu32 Temp = 0x00;
ããPEout(2) = ~PEout(2);
ããTemp =EXTI->PR; //å读æ¯é£ä¸ªå¼èçä¸æ
ããswitch(Temp)
ãã{
ããcaseExti_From_Pin8:
ããEXTI_ClearITPendingBit(EXTI_Line8);
ããbreak;
ããcaseExti_From_Pin9:
ããif(Sys_Status < MAX_STATUS)
ãã{
ããSys_Status ++;
ãã}
ããEXTI_ClearITPendingBit(EXTI_Line9);
ããbreak;
ããdefault:break;
ãã}
ãã}
ãã=========================================åå²çº¿=========================================
ããä¸æå¤çç¨åºè¯´æï¼ç±äºå¤é¨ä¸æEXTI5ââEXTI9å ¬ç¨äºä¸ä¸ªä¸æï¼EXTI10ââEXTI15类似ï¼æ以è¦
ããåºåä¸åçä¸ææºéè¦è¿è¡ç¸åºçå¤æãå¦ä¸EXTI9_5_IRQHandlerä¸ï¼éè¿å读EXTI->PRå¯åå¨æ¥å¤
ããæä¸æçæ¥æºã
温馨提示:答案为网友推荐,仅供参考