STM32嵌入式开发学习笔记(三)

STM32的中断系统

1.中断介绍:

    1.1 中断概念

           CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂 时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序 或中断处理程     
           序),以处理该事件,该事件处理完后又返回被中断的程序 继续执行,这一过程称为中断。引发中断的称为中断源。比如:看电视 时突然门铃响,那么门铃响就相当于中
           断源。有些中断还能够被其他高 优先级的中断所中断,那么这种情况又叫做中断的嵌套。
           

 

 

         STM32F10x芯片有84个中断通道,包括 16 个内核中断和 68 个可屏蔽中 断,这些中断通道已按照不同优先级顺序固定分配给相应的外部设备。  (参考《STM32F10x中文参考手册》-9 中断和事件章节)
          

         

 

1.2 NVIC介绍


       NVIC英文全称是Nested Vectored Interrupt Controller,中文意思 就是嵌套向量中断控制器,它属于M3内核的一个外设,控制着芯片的中 断相关功能。由于ARM给NVIC预
       留了非常多的功能,但对于使用M3内核设 计芯片的公司可能就不需要这么多功能,于是就需要在NVIC上裁剪。ST 公司的STM32F103芯片内部中断数量就是NVIC裁剪后
       的结果。 中断控制相关寄存器在固件库core_cm3.h文件NVIC结构体内。可打开 任意库函数工程即可查看到。
       

1.3 中断优先级


  STM32F103芯片支持60个可屏蔽中断通道,每个中断通道 都具备自己的中断优先级控制字节(8位,但是STM32F103中只使用4位 ,高4位有效),用于表达优先级的高4位
       又被为组成抢占式优先级和响应 优先级,通常也把响应优先级称为“亚优先级”或“副优先级”,每个 中断源都需要被指定这两种优先级。 高抢占式优先级的中断事件会打断当
  前的主程序或者中断程序运行, 俗称中断嵌套。在抢占式优先级相同的情况下,高响应优先级的中断优 先被响应。 当两个中断源的抢占式优先级相同时,这两个中断将没
  有嵌套关系, 当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要 等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则 中断控制器根
  据他们的响应优先级高低来决定先处理哪一个;如果他们 的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺 序决定先处理那一个。

        STM32F103中指定中断优先级的寄存器位有4位,这4位的分组方式 如下:
             

 

                    设置优先级分组可调用库函数 NVIC_PriorityGroupConfig(),在 misc.c可以查看  

2.中断配置步骤


要使用中断我们就需要先配置它,通常都需经过这几步:
(1)使能外设某个中断
(2)设置中断优先级分组,初始化 NVIC_InitTypeDef 结构体
         typedef struct {
                   uint8_t NVIC_IRQChannel; //中断源
                   uint8_t NVIC_IRQChannelPreemptionPriority; //抢占优先级
                   uint8_t NVIC_IRQChannelSubPriority; //响应优先级
      FunctionalState NVIC_IRQChannelCmd; //中断使能或失能
         } NVIC_InitTypeDef;
 (3)编写中断服务函数
          可以根据启动文件进行查看相应的中断服务函数的函数名。

3.基于STM32CubeMX的实例操作

将PC13引脚设置成外部中断,下降沿触发,在中断服务函数中,翻转PB9引脚的电平信号。

    1、将GPIO设置为外部中断:GPIO_EXIT功能

    2、设置中断触发条件:上升沿、下降沿、上升沿或下降沿

    3、使能相关的NVIC通道

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值