OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...

查看: 209|回复: 12

systick的抢占优先级和响应优先级

[复制链接]

  离线 

1

主题

13

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2018-1-15
在线时间
5 小时
发表于 5 天前 | 显示全部楼层 |阅读模式
1金钱
各位,最近看了systick,看起来很简单的一个定时器。但是在设置中断优先级的时候,有点儿迷糊了。systick中断属于内核异常中断,那他的中断优先级是怎么设置的呢?是否有抢占优先级和响应优先级的说法,NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);   这个函数里面将SCB->SHP【11】=15。怎么理解他的中断时抢占还是响应?拜托了,看了那个内核手册也没太明白。万分感谢。

回复

使用道具 举报

  离线 

1

主题

13

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2018-1-15
在线时间
5 小时
 楼主| 发表于 5 天前 | 显示全部楼层
优先级的分组应该是按照SCB_AIRCR中的PRIGROUP来的。也就是说可配置的系统异常中断和其他外设中断共用一个分组。在配置systick时,因为没有设置分组,所以为默认分组状态,然后根据写入到systick的优先级按位分配为抢占优先级和响应优先级。
回复

使用道具 举报

  离线 

1

主题

13

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2018-1-15
在线时间
5 小时
 楼主| 发表于 5 天前 | 显示全部楼层
PRIGROUP的默认值为000,这个是什么分组呢?如果只是设置了systick的优先级,没有设置分组,那么又怎么区分抢占响应优先级呢?
回复

使用道具 举报

  离线 

59

主题

874

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2891
金钱
2891
注册时间
2015-4-26
在线时间
593 小时
发表于 5 天前 | 显示全部楼层
按位分,如果你设置为group2,那0xf 高2位是3,低2为是3,就是说抢占是3,响应是3
我有故事,你有酒吗
回复

使用道具 举报

  离线 

1

主题

13

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2018-1-15
在线时间
5 小时
 楼主| 发表于 5 天前 | 显示全部楼层
正点原子公众号
来俩不甜的 发表于 2018-7-12 14:34
按位分,如果你设置为group2,那0xf 高2位是3,低2为是3,就是说抢占是3,响应是3

group不设置,采用默认值的000,是哪个组呢?
回复

使用道具 举报

  离线 

16

主题

502

帖子

1

精华

高级会员

Rank: 4

积分
861
金钱
861
注册时间
2018-5-11
在线时间
153 小时
发表于 5 天前 | 显示全部楼层
hougeqvjing 发表于 2018-7-12 17:57
group不设置,采用默认值的000,是哪个组呢?

0组就是0位抢先,4位响应,
而此时SYSTICK的优先级是响应优先级为15,是最低的。
回复

使用道具 举报

  离线 

1

主题

13

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2018-1-15
在线时间
5 小时
 楼主| 发表于 4 天前 | 显示全部楼层
warship 发表于 2018-7-12 20:16
0组就是0位抢先,4位响应,
而此时SYSTICK的优先级是响应优先级为15,是最低的。

那个寄存器的默认值,是000,就是0组么?我看那个内核手册对于那个guropp的配置,只有,7,6,5,4这几种配置。
回复

使用道具 举报

  离线 

16

主题

502

帖子

1

精华

高级会员

Rank: 4

积分
861
金钱
861
注册时间
2018-5-11
在线时间
153 小时
发表于 4 天前 | 显示全部楼层
本帖最后由 warship 于 2018-7-13 11:38 编辑
hougeqvjing 发表于 2018-7-13 11:15
那个寄存器的默认值,是000,就是0组么?我看那个内核手册对于那个guropp的配置,只有,7,6,5,4这几种配 ...

SCB->AIRCR中第8:10位决定分组
共有5种设置结果:7、6、5、4、3
分别对应分组:      0、1、2、3、4
系统复位后为0组, 即复位值为111

回复

使用道具 举报

  离线 

1

主题

13

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2018-1-15
在线时间
5 小时
 楼主| 发表于 4 天前 | 显示全部楼层
warship 发表于 2018-7-13 11:35
SCB->AIRCR中第8:10位决定分组
共有5种设置结果:7、6、5、4、3
分别对应分组:      0、1、2、3、4

你好,我看了下这个内核的手册,它的复位值是000呢,那个111是在哪儿看到的呀?谢谢了,这个问题困扰我很久了。
2018-07-13 12 44 09.png
回复

使用道具 举报

  离线 

16

主题

502

帖子

1

精华

高级会员

Rank: 4

积分
861
金钱
861
注册时间
2018-5-11
在线时间
153 小时
发表于 4 天前 | 显示全部楼层
hougeqvjing 发表于 2018-7-13 12:46
你好,我看了下这个内核的手册,它的复位值是000呢,那个111是在哪儿看到的呀?谢谢了,这个问题困扰我很 ...

不好意思,
我刚才实测了一下,

复位后AIRCR的值是:FA050000
复位值还真的是000
这个把我也搞迷糊了,
你看看这个吧:
https://blog.csdn.net/changyourmind/article/details/56858954
回复

使用道具 举报

  离线 

1

主题

13

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2018-1-15
在线时间
5 小时
 楼主| 发表于 4 天前 | 显示全部楼层
warship 发表于 2018-7-13 13:12
不好意思,
我刚才实测了一下,

这个链接,里面也没提到这个题。看来只有在系统初始化的时候就把这个组定义好,这个算不算是这个芯片考虑漏掉的地方呢?
回复

使用道具 举报

  离线 

16

主题

502

帖子

1

精华

高级会员

Rank: 4

积分
861
金钱
861
注册时间
2018-5-11
在线时间
153 小时
发表于 4 天前 | 显示全部楼层
hougeqvjing 发表于 2018-7-13 13:21
这个链接,里面也没提到这个题。看来只有在系统初始化的时候就把这个组定义好,这个算不算是这个芯片考虑 ...

应该不会,
简单推测理解,
复位值为000是针对最大8位优先级的,即分组0(7位抢占,1位子优先级),
具体的芯片可以裁减(裁减抢占优级数),对于只有4位优先级的F10X,
则映射成3位抢占,1位子优先级?
回复

使用道具 举报

  离线 

1

主题

13

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2018-1-15
在线时间
5 小时
 楼主| 发表于 4 天前 | 显示全部楼层
warship 发表于 2018-7-13 13:47
应该不会,
简单推测理解,
复位值为000是针对最大8位优先级的,即分组0(7位抢占,1位子优先级),

这样说是有些道理的,也就变成了设置成这个分组有两种配置哦?
回复

使用道具 举报

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

本版积分规则




关闭

"原子哥”推荐上一条 /1 下一条

QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-7-17 08:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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