stm32学习笔记(三)—— 中断、外部中断

重点写在前面:中断的分组问题、优先级——抢占优先级用来打断别人,响应优先级和硬件优先级用来比别人先执行、外部中断的配置

目录

一. 几个小概念

1.1 异常和中断

1.2 NVIC(嵌套向量中断控制器)

1.3 产生中断或事件

二. 异常和中断清单

2.1异常清单

 2.2 中断清单

三. NVIC

3.1 优先级的定义

3.2 库函数和结构体

3.2.1 NVIC的寄存器结构体

3.3.2 NVIC的初始化结构体

3.3.3 NVC的库函数

四. 外部中断

4.1 两条处理路线

4.1.1 产生中断

4.1.2 产生事件(脉冲)

4.1.3 中断和事件的区别(和1.3内容一样)

4.2 外部中断的中断事件线

4.3 EXTI的相关寄存器

4.3.1 中断屏蔽寄存器

 4.3.2 事件屏蔽寄存器

 4.3.3 上升沿、下降沿触发寄存器

 4.3.4 软件中断事件寄存器

4.3.5 挂起寄存器

4.4 中断服务函数

 5. 程序实战

5.1 主优先级实验

5.2 子优先级实验


一. 几个小概念

1.1 异常和中断

        异常一般是指内核发生的事件而产生的中断,而中断一般针对的是外设

1.2 NVIC(嵌套向量中断控制器)

        属于内核的一个外设,在Cortex-M3内核编程手册中有专门针对NVIC的讲解

1.3 产生中断或事件

        产生中断,即将输入信号输入到NVIC,由NVIC来调用中断服务函数,属于用软件来完成中断所需产生的结果

        而产生事件,是用来产生一个脉冲信号,从而给其他外设使用,例如作为ADC、定时器TIM的触发信号,属于硬件直接产生

二. 异常和中断清单

2.1异常清单

 2.2 中断清单

 可以根据表格查到其默认的优先级,优先级数字越小的优先级越高

三. NVIC

3.1 优先级的定义

        优先级分为主优先级(抢占优先级)和子优先级,每一个中断都有属于他自己的一个优先级寄存器NVIC_IPRx,每个优先级寄存器为8位,但是在stm32f103中,只用了高四位,此外,每四个寄存器拼成一个32位寄存器

        

         四位有效位共同构成了主优先级和子优先级,同时其分组由内核外设SCB的应用程序中断及复位控制寄存器AIRCR的PRIGROUP[10:8]三个位来决定。

 

        PRIGROUP[10:8]三个位能共同表达五组优先级分组,然后根据各个分组可以用不同位数来表示成各个主次优先级。比如,当PRIGROUP[10:8]为100时,可以用优先级寄存器的5、6、7三个位来表示主优先级,用第4位表示子优先级。注意:该寄存器只有一个,所以在一个程序中,只能设定一个分组(个人理解,有空的话做个小实验试试),然后再设置主次优先级,当发生多个中断时(补充!!!这里指的是同时发生多个中断!!!),先比主优先级,再比子优先级,最后时硬件默认优先级。但是需要注意!!!!!再次强调!!!这种情况是在同时发生时的!!!!当多个中断不是在同时发生的,属于中断嵌套时,只有主优先级高的才能打断别人,子优先级和硬件默认优先级就不管用了!!!一开始没注意到这个,在最后的实验中才发现,好在做了实验。。

实际上主优先级和子优先级是这个意思:一个为抢占属性,另一个为响应属性,所以就是抢占优先级和子优先级。二者都是编号越小,优先级越高。其中,

抢占:指打断其他中断的能力,即在中断嵌套中打断其他中断
响应:在抢占优先级相同时,如果两个中断同时到达,先响应响应优先级高的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值