HAL库学习03---中断系统

前言

个人觉得中断算是单片机入门中必须要掌握好的知识,如果这里没有理解,后续的工作张开将会很是苦难,为此自己痛定思痛,决心把这一知识点好好梳理一下。在讲中断系统前,必须要理解以下几个概念。

中断: CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断。引发中断的称为中断源。在Crotex-M3内核中支持256个中断,其中包含16个内核中断以及240个外部中断。STM32F10X芯片中只用了其中的84个中断通道,包含16个内核中断和68个可屏蔽中断。

NVIC: 中文意思是嵌套向量中断控制器,控制着芯片的中断相关功能。由于ARM给NVIC预留了非常多的功能,但对于使用M3内核设计芯片的公司可能就不需要这么多功能,于是就需要在NVIC上裁剪。ST公司的STM32F103芯片内部中断数量就是NVIC裁剪后的结果。

中断优先级: TM32的每个中断通道都有一个中断优先级控制字节(8位二进制数据,可设置为0~255,数值越小,优先级越高。在STM32F103中只用其中高4位数据),其用于表达优先级的高4位又被分为抢占式优先级和响应式优先级。在抢占式优先级相同情况下,高响应优先级的中断优先被响应。优先级相同时,按照中断响应的顺序执行服务程序,越靠前的先执行。中断的相关功能需要通过NVIC(嵌套向量中断器)来配置。

HAL库中NVIC初始化配置如下:主要包含中断源、两个优先级设置以及使能

typedef struct
{
  uint8_t NVIC_IRQChannel;  //用来设置中断源                   
  uint8_t NVIC_IRQChannelPreemptionPriority;  //抢占优先级(主优先级)
  uint8_t NVIC_IRQChannelSubPriority;   //子优先级     
  FunctionalState NVIC_IRQChannelCmd;  //中断使能( ENABLE)或者失能( DISABLE)      
} NVIC_InitTypeDef;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值