STM32F10x.h单片机中断通过寄存器配置

文章介绍了单片机中断系统,包括硬中断和软中断,强调了中断服务函数的特性。重点讲解了NVIC如何设置中断优先级,以及EXTI配置和外部中断使能。示例代码展示了EXTI0的中断配置和处理函数。最后提出了基于中断的按键功能设计作业。
摘要由CSDN通过智能技术生成

代码在后面,前面为理论部分

  1. 中断服务函数void handle(void),不需要声明,快进快出,避免死循环,大量循环,以及大量延迟函数
  2. 中断有硬中断(硬件触发),软中断(软件触发);单片机的中断是硬件处理机制
  3. 接下来都是单片机的中断,都是实际存在的而且固定的东西

分为

内部中断:

       内核引发的中断:系统中断(异常)

       内核外引发的:片上外设中断,例:串口、ADC引发的

外部中断

       外设引发的,例按键,通过GPIO

NVIC:中断嵌套向量控制器(受内核控制)

在内核手册里,但是我们不用寄存器设置,直接用库函数设置;

NVIC_SetPrority()

作用:

  1. 设置中断优先级
  2. 使能中断(让开关生效)
  3. 根据中断编号匹配中断服务函数

优先级:用数字表示,数字越小,优先级越高。

占先优先级(抢占优先级):高的中断可以打断占先优先级低的中断,例:在中断中执行中断;事件1(占先2),事件2(占先3),可以在事件2执行过程中执行事件1;

次级优先级:当占先优先级一样,次级优先级高的先执行;

次级优先级高的中断不可以打断次级优先级低的中断

该图包含了我们要操作的具体部位

故当设置外部中断时候要注意分开引脚号避免冲突 

 代码实现:

接下来进入正题:

绑定输入线GPIO需要配置:

外部中断配置寄存器:1EXIT通道2)哪个端口

AFIO->EXTICR[0] &= ~(0XF << 0);//PA0EXTI0绑定

EXTI->FTSR |= (0X1 << 0);//EXTI0选择下降沿

EXTI->IMR |= (0X1 << 0);//开放EXTI0的中断请求

//NVIC配置

NVIC_SetPriorityEXTI0_IRQn, 1;//数据设置优先级,10x1

NVIC_SetPriority_group(5)//下图,设置一次就行(main函数中)

NVIC_EnableIRQEXTI0_IRQN//中断使能

//EXTIO_IRQN为中断编号

接下来写中断执行服务函数(无需调用)

//先判断挂起寄存器,先清除挂起寄存器

void EXTI0_Handler(void)

{

      if(EXTI->PR & (0X1 << 0))//判断是否为1

{//清除中断

      EXTI->PR |= (0X1 << 0);

//写要执行的代码

flag ^= 1;//异或实现开关反转

}

}

作业:

按键1呼吸灯,按键2流水灯,按键3中断;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值