STM32学习笔记<4.1中断>

1.中断的概念

计算机运行过程中,出现某些意外情况需主机干预时,机器停止程序的运行,去执行新情况的程序,处理完成后又返回原先被暂停的程序继续运行。(相当于你正在敲代码,然后突然你想上厕所,急急急!然后你就去上厕所了,上完厕所你就回来继续敲代码)

2.STM32异常和中断介绍

1. 对于STM32来说,异常和中断是由芯片内的Cortex-M内核提供的,ST公司是在内核上进行拓展和修改。

2.异常(系统异常):内核活动产生的(执行指令出错)

3.中断(外设中断):连接到内核的外部器件产生(外设产生中断)

4.异常和中断的处理方式相同。

5.Cortex-M3和M4的NVIC最多支持240个IRQ(中断请求)、1个不可屏蔽中断(NMI)、1个Systick(滴答定时器)定时器中断和多个系统异常。

6.与中断相关的寄存器都在NVIC和SCB中。

3.中断优先级

1.分为两种:可编程和不可编程

2.小值优先原则,越小优先级越高

4.中断的优先级分组

1.STM32只使用M3内核8bit中的高4bit,也就是支持2的4次方,16个优先级。

2.组成5组优先级分组,这5组中每组分为一个抢占组、1个子优先组。

优先级分组抢占优先级子优先级描述
NVIC_PriorityGroup_000-15主-0bit,子-4bit
NVIC_PriorityGroup_10-10-7主-1bit,子-3bit
NVIC_PriorityGroup_20-30-3主-2bit,子-2bit
NVIC_PriorityGroup_30-70-1主-3bit,子-1bit
NVIC_PriorityGroup_40-150主-4bit,子-0bit

通过优先级分组,可以管理中断的响应顺序

只有抢占优先级才有抢占中断权限,发生中断嵌套

中断抢占优先级相同,不发生抢占行为。

多个挂起的中断具有相同的抢占优先级,则子优先级高的先行,子优先级相同,IRQ编号小的先行。抢占优先级>子优先级>IRQ编号

通过NVIC实现。

5.嵌套向量中断控制器(NVIC)功能

NVIC库函数描述
void NVIC_EnableIRQ(IRQn_Type IRQn)使能中断
void NVIC_DisableIRQ(IRQn_Type IRQn)使能中断
void NVIC_SetPendingIRQ(IRQn_Type IRQn)设置中断悬起位
void NVIC_ClearPendingIRQ(IRQn_Type IRQn)清除中断悬起位
uint_32 NVIC_GetPendingIRQ(IRQn_Type IRQn)获取悬起中断编号
void NVIC_SetPriority(IRQn_Type IRQn, uint_32 priority)设置中断优先级
uint_32 NVIC_GetPriority(IRQn_Type IRQn)获取中断优先级
void NVIC_SystemReset(void)系统复位

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值