找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1833|回复: 1
打印 上一主题 下一主题
收起左侧

STM32-NVIC中断管理实现

[复制链接]
跳转到指定楼层
楼主
ID:476077 发表于 2019-2-13 09:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
cortex-m3支持256个中端,其中包含了16个内核中断,240个外部中断。stm32只有84个中断,包括16个内核中断和68个可屏蔽中断。stm32f103上只有60个中断,f107上才有68个中断。
中断是stm32很基础的一个功能,学会使用中断,才可以更好的使用其他的外设。理解stm32的中断,必须要先从stm32的中断优先级分组是怎么回事。要理解优先级分组,就要先理解什么是先占优先级,和次占优先级。
先占优先级的概念等同于51单片机中的中断。假设有两中断先后触发,已经在执行的中断先占优先级如果没有后触发的中断 先占优先级更高,就会先处理先占优先级高的中断。也就是说又有较高的先占优先级的中断可以打断先占优先级较低的中断。这是实现中断嵌套的基础。
次占优先级只在同一先占优先级的中断同时触发时起作用,先占优先级相同,则优先执行次占优先级较高的中断。次占优先级不会造成中断嵌套。 如果中断的两个优先级都一致,则优先执行位于中断向量表中位置较高的中断。
还需要注意的一点是 这里的中断优先级 高是指 是指是否更接近0级,0级优先级是最高的。
那么最低的优先级可以是多少?这就涉及了优先级分组的概念。 stm32 通过一个中断向量控制器(NVIC),来分配先占优先级和次占优先级的数量。
arm cortex-m3 内核中拥有一个3位宽度的的PRIGROUP数据区,用来指示一个8位数据序列中的小数点的位置从而表示中断优先级的分组。
举个例子可以更好的理解: 如果PRIGROUP 数据位000 即为0 说明8位数据序列中小数位置在第1位的左边 为xxxxxxx.y 用于表示中断优先级的分组的含义就是 用7位的数据宽度来表示 先占优先级的数量 即为128 用1位的数据宽度来表示 次占优先级数量 即为 2
所以arm cortex-m3中有2的三次方 即为8个优先级分组 。
但是stm32中只有5个优先级分组,表示方法略有不同,参照下表:

stm32-NVIC中断管理实现.docx

127.85 KB, 下载次数: 6, 下载积分: 黑币 -5

STM32-NVIC中断管理实现

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:476077 发表于 2019-2-13 09:18 | 只看该作者
讲的很详细
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表