stm32.外部中断(寄存器)

外部中断

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;
		 }
		 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值