STM32
直播中

张玲

7年用户 1279经验值
私信 关注
[问答]

怎样使用stm32的外部中断去配置寄存器呢

怎样使用STM32的外部中断去配置寄存器呢?有哪些步骤?

回帖(1)

刘璐

2021-11-16 11:05:54
  外部中断
  1.初始化 IO 口为输入。
  2)开启 IO 口复用时钟,设置 IO 口与中断线的映射关系。
  3)开启与该 IO 口相对的线上中断/事件,设置触发条件。
  4)配置中断分组(NVIC),并使能中断。
  5)编写中断服务函数
  GPIOA 有16个中断通道
  RCC-》APB2ENR|=1; //AFIO时钟
  RCC-》APB2ENR|=1《《3; // GPIOB
  RCC-》APB2ENR|=1《《6; //GPIOE
  AFIO-》EXTICR[0] &=0x0FF0;//中断0
  中断3
  AFIO-》EXTICR[0] |=0x4000;//PA0 PE3
  AFIO-》EXTICR[1] &=0xFFF0;
  AFIO-》EXTICR[1] |=0x0004;//PE4
  中断4
  
  
  EXTI-》IMR |=1《《0;//开放来自线0上的中断请求。
  EXTI-》RTSR|=1《《0;//线0上的上升沿触发事件配置位
  EXTI-》IMR |=1《《3;//开放来自线3上的中断请求。
  EXTI-》FTSR|=1《《3;//线3上的下降沿触发事件配置位
  EXTI-》IMR |=1《《4;开放来自线4上的中断请求。
  EXTI-》FTSR|=1《《4;//线4上的下降沿触发事件配置位
  服务函数
  void EXTI0_IRQHandler(void)
  {
  delay_ms(10);
  if(KEYUP==1)
  {
  beep=!beep;
  }
  EXTI-》PR|=1;
  }
  void EXTI3_IRQHandler(void)
  {
  delay_ms(10);
  if(KEY0==0)
  {
  led0=!led0;
  }
  EXTI-》PR|=1《《3;
  }
  void EXTI4_IRQHandler(void)
  {
  delay_ms(10);
  if(KEY1==0)
  {
  led1=!led1;
  }
  EXTI-》PR|=1《《4;
  }
举报

更多回帖

发帖
×
20
完善资料,
赚取积分