你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 9641|回复: 10

STM32的Systick中断优先级控制

[复制链接]

8

主题

206

回帖

0

蝴蝶豆

中级会员

最后登录
2019-10-23
发表于 2012-3-19 00:36:20 | 显示全部楼层 |阅读模式
用的是3.0 的库  Systick中断优先级控制 的函数是
static __INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
{
  if(IRQn < 0) {
    SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority IP[(uint32_t)(IRQn)] = ((priority SHP 这个设置的是系统中断的中断优先级 ;NVIC->IP这个设置的是外设就是普通的中断的中断优先级
如果这两个都设置的话 那个的优先级别高一点啊?
回复

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2012-3-19 10:12:32 | 显示全部楼层

RE:STM32的Systick中断优先级控制

IRQn同一级别的时候,priority决定哪个中断先运行。
IRQ决定先进哪个中断。但是这个2个是同时需要处理的。
回复 支持 反对

使用道具 举报

8

主题

206

回帖

0

蝴蝶豆

中级会员

最后登录
2019-10-23
 楼主| 发表于 2012-3-19 16:16:19 | 显示全部楼层

RE:STM32的Systick中断优先级控制

谢谢 虽然不是我要的答案  但是让我领悟到了 可能是我表达的不清楚。应该是每一个中断号 应该都有自己的中断控制寄存器,看自己设置。我本来以为优先级控制就是一个总的中断控制器 误解了。
回复 支持 反对

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2012-3-19 17:01:51 | 显示全部楼层

RE:STM32的Systick中断优先级控制

我以为你问的是关于中断优先级的问题。
回复 支持 反对

使用道具 举报

8

主题

206

回帖

0

蝴蝶豆

中级会员

最后登录
2019-10-23
 楼主| 发表于 2012-3-19 19:17:17 | 显示全部楼层

RE:STM32的Systick中断优先级控制

真的还有个关于中断优先级的问题  STM32 关总中断 是通过改变CPU的当前优先级来允许或禁止中断。
就是把NMI 与HARDfault 设置为最高优先级 ,这样为什么就能把别的中断都屏蔽了呢? 优先高的运行完了 低优先级的中断不是还会响应的吗?
回复 支持 反对

使用道具 举报

24

主题

317

回帖

0

蝴蝶豆

高级会员

最后登录
2020-10-10
发表于 2012-3-20 08:09:49 | 显示全部楼层

RE:STM32的Systick中断优先级控制

南方注重能力,北方注重关系”。
回复 支持 反对

使用道具 举报

8

主题

206

回帖

0

蝴蝶豆

中级会员

最后登录
2019-10-23
 楼主| 发表于 2012-3-20 19:09:07 | 显示全部楼层

RE:STM32的Systick中断优先级控制

楼上的 可以解析下吗 ?
回复 支持 反对

使用道具 举报

0

主题

9

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-4-3 13:13:01 | 显示全部楼层

回复:STM32的Systick中断优先级控制

在 SCB->SHP 中設置的是內核的中斷,內核的中斷無論何時都會比內核外部的中斷具有優先權.
 
回复 支持 反对

使用道具 举报

25

主题

216

回帖

0

蝴蝶豆

论坛元老

最后登录
2019-1-3
发表于 2016-8-15 12:09:16 | 显示全部楼层
lucky_jeck 发表于 2012-4-3 13:13
在 SCB->SHP 中設置的是內核的中斷,內核的中斷無論何時都會比內核外部的中斷具有優先權.
  ...

你回答错了                  
回复 支持 反对

使用道具 举报

25

主题

216

回帖

0

蝴蝶豆

论坛元老

最后登录
2019-1-3
发表于 2016-8-15 12:09:36 | 显示全部楼层
1、只要内核的优先级可以配置,那么内核的优先级就不是一定比外设的高,而是要先比较软件优先级,如果软件优先级一样,那么就比较他们的硬件的中断编号,编号就是在中断向量表中的位置,越小,优先级越高。

2、以systick为例,在systick的固件库初始化函数:SysTick_Config(uint32_t ticks) 中,调用了NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); ,这里面把 systick的 优先级配置为 :1<<4-1 = 15,这里面的4是因为STM32 使用4个位来配置中断优先级。

3、那么问题来了,这里systick的中断优先级配置成15,应该是最低的,那跟外设来比,那是systick的优先级比外设是高还是低?  这个得看 外设 配置 中断优先级时的优先级分组。

4、如果分组为 2,那抢占优先级和子优先级各有2个位表示优先级,抢占的取值范围为0~3,子优先级的取值范围为:0~3。那这时systick的优先级15,该怎么对比,只需要把15转换成二进制:1111,这四位同样受优先级分组的控制,即前两位表示抢占优先级,那就是3,后两位表示子优先级,也是3。在分组2里面都是最低的。如果你的外设也配置成组2,主和子优先级配置的不是3,那就肯定比systick的优先级高。

5、内核的优先级并非一定比外设的优先级高,只要你的优先级可以配置。
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版