打印
[MM32软件]

MM32/STM32中断和事件梳理

[复制链接]
748|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Interrupt_event梳理
1.预备资料
MM32/stm32中文参考手册
Cortex-M3权威指南(深入了解中断和异常)
MM32F103产品手册(配置GPIO的复用功能可能用到)

2.提出问题
什么是中断?
怎样配置一个中断?

3.思维导图整体框架(CTRL+中键缩放查看)

使用特权

评论回复
沙发
flycamelaaa|  楼主 | 2022-8-30 15:30 | 只看该作者
4.什么是中断?
中断,Interrupt,就是CPU正在执行某项任务,被此项任务外的其他事务打断,CPU将正在执行的任务暂停(保护现场)转而执行其他高优先级的事务(处理中断),等此项事务执行完成,CPU再来执行先前被打断的任务(返回/恢复现场)。
对于用户而言,我们不必关心CPU怎样跳转(保护/恢复现场),我们主要关注CPU响应我们的预置中断请求即可。
因此,中断的配置主要关注:怎样进入中断和中断中做什么事情。

使用特权

评论回复
板凳
flycamelaaa|  楼主 | 2022-8-30 15:30 | 只看该作者
5.NVIC(嵌套中断向量中断控制器)
中断和异常向量
中断与异常是ARM内核的东西,需要深入了解可以看《Cortex-M3权威指南》
这里分析stm32中的中断向量表的使用与查询
表中的几个重要参数:
位置:配置中断是,告诉CPU中断的位置
名称:外设请求的中断名称,详情可以看“说明”字段
优先级:当同时发生多个中断请求时,CPU需要一种合理高效的调度模式,决定处理各个中断请求的次序(抢占优先级,响应优先级)

使用特权

评论回复
地板
flycamelaaa|  楼主 | 2022-8-30 15:31 | 只看该作者
以表中的EXTI0说明:
这里需要配置EXTI0上的中断,即当EXTI0线上发生上升沿或者下降沿(可配置)时,我们需要CPU跳转到相应的中断服务函数中执行我们想执行的任务,可以这样配置:
  • 设置NVIC的中断位置为6
  • 设置边沿触发模式(上升沿/下降沿/双边沿)
  • 适当的时候在EXTI0上产生触发信号,激活中断执行中断服务函数
关于产生EXTI0触发信号
查阅外部中断通用I/O映射可以知道,通过配置GPIO[x]0连接到EXTI0线

使用特权

评论回复
5
flycamelaaa|  楼主 | 2022-8-30 15:32 | 只看该作者
6.EXTI(外部中断/事件控制器)
框图
  • 配置1-3 + NVIC响应中断使能 可以触发硬件的外部中断
  • 配置2-3 + NVIC响应中断使能 可以触发软件的外部中断
  • 配置1-4可以触发硬件的外部事件(事件可用于sleep mode唤醒等)
  • 配置2-4可以触发软件的外部事件

使用特权

评论回复
6
flycamelaaa|  楼主 | 2022-8-30 15:33 | 只看该作者
本帖最后由 flycamelaaa 于 2022-8-30 15:37 编辑

配置一个中断(EXTI0外部中断)
配置时钟和GPIO(EXTI0输入)
配置EXTI控制器

使用特权

评论回复
7
flycamelaaa|  楼主 | 2022-8-30 15:37 | 只看该作者
7.总结中断配置步骤
配置NVIC寄存器NVIC->ISER[0]=(0x1<<6)
配置外设中断寄存器,使能中断
根据定义的中断子函数名写中断函数,例如void EXTI0IRQHandler(void
运行程序,使之产生中断
查看进入中断情况,是否触发中断

使用特权

评论回复
8
Bowclad| | 2022-9-9 19:15 | 只看该作者
这个中断讲的很清楚

使用特权

评论回复
9
weifeng90| | 2022-9-9 19:16 | 只看该作者
这个帖子讲的清楚

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

656

主题

2742

帖子

0

粉丝