单片机的中断学习笔记

 中断就类似于一个人在吃饭的时候,来了个快递(快递就是中断源)他取了快递(执行中断的任务)后,回到吃饭这个当前任务。

一.中断源

顾名思义中断产生的源头。

1.内部中断源:

cup内产生

由CPU得运行结果产生:如除数为0、结果溢出、单步执行等。
执行中断指令INT:INT3
非法操作或指令引起异常处理。

2.外部中断源:

I/O设备:如显示器、键盘、打印机等。
数据通道:软盘、硬盘、光盘等。
实时时钟:如外部的定时电路等。
用户故障源:如掉电、奇偶校验错误等

二.中断线                                                                                                                STM32的EXTI控制器支持19 个外部中断/ 事件请求。

STM32的19个外部中断对应着19路中断线,分别是EXTI_Line0-EXTI_Line18:

线0~15:对应外部 IO口的输入中断。

线16:连接到 PVD 输出。

线17:连接到 RTC 闹钟事件。

线18:连接到 USB 唤醒事件。

 触发方式:通过边沿触发(上升沿触发、下降沿触发、双边沿触发) fcf0b04305c048348d791d5d3246b977.png

 如图可以看出GPIO引脚的映射关系,16个引脚为一组对应一个中断线这里要说明同一个组中上不能同时有两个引脚申请中断,不同的组可以。

外部中断的配置

1、开启IO口时钟,初始化IO口为输入。调用函数:GPIO_Init();

2、开启IO口复用时钟。调用函数:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

3、设置IO口与中断线的映射关系。调用函数:GPIO_EXTILineConfig();

4、初始化线上中断,设置触发条件等。调用函数:EXTI_Init();

5、配置中断分组(NVIC),并使能中断。调用函数:NVIC_Init();

6、编写中断服务函数。调用函数:EXTIx_IRQHandler();其中这个x是对应着那一个中断标志(0到4:x为0、1、2、3、4从5到9:共用一个中断服务函数x为9_5从10到15共用一个中断服务函数x为15_10)

7、清除中断标志位。调用函数:EXTI_ClearITPendingBit()。使用此函数清除标志位后程序能回到主程序,如果不调用程序会一直执行中断程序。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值