exti.c

来自「stm32初级例程」· C语言 代码 · 共 55 行

C
55
字号
/**************************************************************
**  精英STM32开发板
**  版本:V1.0
**  功能: 
***************************************************************/
#include <stm32f10x_lib.h>                        // STM32F10x Library Definitions
#include "STM32_Init.h"                           // STM32 Initialization


unsigned int ledPosExti = 0;                      // led position (from 0..7) for EXTI
unsigned int ledExti    = 0;


/*----------------------------------------------------------------------------
  EXTI15..10 Interrupt Handler
  外部中断15~10使用共享中断向量
 *----------------------------------------------------------------------------*/
void EXTI15_10_IRQHandler(void)
{
  if (EXTI->PR & (1<<12)) {                       // EXTI12 interrupt pending?/是否是外部中断12
    if ((ledExti ^=1) == 0) 
      GPIOC->ODR &= ~(1 << (ledPosExti+8));       // switch on LED //点亮LED
    else
      GPIOC->ODR |=  (1 << (ledPosExti+8));       // switch off LED	//熄灭LED

    EXTI->PR |= (1<<12);                          // clear pending interrupt/清除中断标志
  }
}

void EXTI2_IRQHandler(void)
{
  if (EXTI->PR & (1<<12)) {                       // EXTI12 interrupt pending?/是否是外部中断12
    if ((ledExti ^=1) == 0) 
      GPIOC->ODR &= ~(1 << (ledPosExti+8));       // switch on LED //点亮LED
    else
      GPIOC->ODR |=  (1 << (ledPosExti+8));       // switch off LED	//熄灭LED

    EXTI->PR |= (1<<12);                          // clear pending interrupt/清除中断标志
  }

}


/*----------------------------------------------------------------------------
  MAIN function
 *----------------------------------------------------------------------------*/
int main (void) {

  stm32_Init ();                                  // STM32 初始化
    
  while (1) {                                     // Loop forever
    ;
  } // end while
} // end main

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?