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

systick的优先级比外设的优先级高还是低,80%的人回答不了。  

[复制链接]
野火_firege 发布时间:2016-9-1 08:52
本帖最后由 野火_firege 于 2016-9-3 09:29 编辑 5 l$ }$ A) L+ p' o9 u! Y2 t
9 q+ H- u  y6 O
提示:systick是内核的外设,其他外设比如串口,adc等是内核之外的。
$ z3 F4 J& @" B' A
# Z5 z" U7 N: z4 h, c2 |答案分析:
% i2 V+ b; H" ?, C1、只要内核的优先级可以配置,那么内核的优先级就不是一定比外设的高,而是要先比较软件优先级,如果软件优先级一样,那么就比较他们的硬件的中断编号,编号就是在中断向量表中的位置,越小,优先级越高。
/ H/ R% t- a9 R$ e9 L5 E& L, ^  m
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个位来配置中断优先级。/ ~7 ?! B4 W1 K+ l9 U

! E7 `  c5 z& [7 |; k% [0 x3、那么问题来了,这里systick的中断优先级配置成15,应该是最低的,那跟外设来比,那是systick的优先级比外设是高还是低?  这个得看 外设 配置 中断优先级时的优先级分组。
' S) t4 }# h/ ]5 U
( d+ W1 f4 \4 p; r' q( g4、如果分组为 2,那抢占优先级和子优先级各有2个位表示优先级,抢占的取值范围为0~3,子优先级的取值范围为:0~3。那这时systick的优先级15,该怎么对比,只需要把15转换成二进制:1111,这四位同样受优先级分组的控制,即前两位表示抢占优先级,那就是3,后两位表示子优先级,也是3。在分组2里面都是最低的。如果你的外设也配置成组2,主和子优先级配置的不是3,那就肯定比systick的优先级高。/ H+ B! M2 z9 E0 W4 i7 O1 @4 C! o
, O% ?$ D- D7 U" \% B2 Q
5、内核的优先级并非一定比外设的优先级高,只要你的优先级可以配置。
9 y. Y- @9 T) o其他资料链接,有需要的可以下载。% X% j/ |" s: T0 r

3 u1 Y2 }4 |, y+ z( k, F【秉火STM32-视频教程 优酷 观看地址】; @2 }3 j  l/ e8 n' e
1-200集STM32F429视频教程,从0开始手打代码教学!而不是拿写好的代码讲解!
. X: p9 {+ t* Z8 F2-150集STM32F103视频教程,从0开始手打代码教学!而不是拿写好的代码讲解!, A* U' i% O( p9 f+ }
3-优酷观看链接:http://i.youku.com/firege 【不断更新,记得收藏】: V9 }* f, w" P/ Q$ k1 c- l

3 D, l) @+ t; s/ a8 R【秉火STM32-视频+程序+书籍 下载地址】
* S0 x( _8 H& B) N9 ^F103-霸道光盘资料:http://yunpan.cn/cBUab8r9vpf3B  访问密码 8d7e$ F1 h* v; j2 E' Y- E9 ]
F103-指南者光盘资料:http://yunpan.cn/cBUaNcjtqCsyI  访问密码 e21a  G; \3 r' x- I, R
F429-挑战者光盘资料:http://yunpan.cn/cRiEnMsyqzxAE  访问密码 246a# D( J/ n7 j: Y; o

/ M+ Q4 V+ [0 l% Y7 a  K+ S
. [0 a& `4 v7 P9 `' n4 b

评分

参与人数 1 ST金币 +1 收起 理由
智いさ + 1 赞一个!

查看全部评分

收藏 6 评论78 发布时间:2016-9-1 08:52

举报

78个回答
中山无雪 回答时间:2017-1-15 22:25:24
本帖最后由 中山无雪 于 2017-1-15 23:08 编辑 : `' j& x3 O: d, P4 e4 |+ y
# F- t/ k8 m& J% ~: O) \
看过系统配置文件的都应该知道的
$ W) P8 \7 {/ [/ e8 y6 N4 D" c0 c) |  f# W' d& W# [
SYStick是核心中断中级别最低的,但是和外设比是要看外设的设置了7 t8 ~+ Z! Q; q" S) [  Q  G

5 S( G( p" u) ~0 o  /* System interrupt init*/
5 d- n& q& V+ w' _* u, ^" v5 M! J  /* MemoryManagement_IRQn interrupt configuration */
- s  Q& I0 W- `6 ]$ n/ [0 A  HAL_NVIC_SetPriority(MemoryManagement_IRQn, 0, 0);* p! x6 h( }; ^5 R$ T. G$ d
  /* BusFault_IRQn interrupt configuration */
- M8 L7 O6 l, L) j  HAL_NVIC_SetPriority(BusFault_IRQn, 0, 0);) n! M% o. _* C, p$ g7 z( v: b8 L
  /* UsageFault_IRQn interrupt configuration */
6 |3 ?$ {: r: h; g8 M% M% }. [# X  HAL_NVIC_SetPriority(UsageFault_IRQn, 0, 0);
8 u( `& _3 N. @, p5 y* E) c. a5 M) Z  }  /* SVCall_IRQn interrupt configuration */
5 H! N1 d: p; `) _0 ^! L9 c  HAL_NVIC_SetPriority(SVCall_IRQn, 0, 0);
! v" @+ s/ D; y( q5 `- u$ l. E  /* DebugMonitor_IRQn interrupt configuration */
% ~9 M; E- W) }  o+ o# a  }  HAL_NVIC_SetPriority(DebugMonitor_IRQn, 0, 0);! L% s' \+ }# d7 }: ]
  /* PendSV_IRQn interrupt configuration */
- M  Q! i2 D' C  ^6 U  HAL_NVIC_SetPriority(PendSV_IRQn, 15, 0);
3 W( O( Y6 X: `! w  /* SysTick_IRQn interrupt configuration */
4 b1 F: ?$ L5 F& l- H  HAL_NVIC_SetPriority(SysTick_IRQn, 15, 0);/ O  y7 {" z- _4 X3 D  p
( q3 |+ Z. T7 Z% C
野火_firege 回答时间:2016-9-1 08:55:15
更加详细的分析可参考《STM32库开发实战指南——基于STM32F429》第16章——STM32中断应用总结。2 `, U# [# I  ]" N/ @0 M

/ C! u' ^6 ~7 f% J7 X: T, ^" _《STM32库开发实战指南—基于STM32F429》即将出版,开源电子版) ~# L4 i+ \+ g$ T5 U9 Z
https://www.stmcu.org.cn/module/foru ... 569&fromuid=3255788
# H, f# Q* T; ?) d: Y6 k/ d(出处: 意法半导体STM32/STM8技术社区)
% e( @6 ^/ U* Z+ e4 \. b. P
野火_firege 回答时间:2016-9-3 09:28:55
guo8113 发表于 2016-9-2 13:41! I& T: f8 o' w; O4 J
比外设高吧

$ w* c" J% e( B; c/ P0 y* @2 P回答错误                                          
bmnli 回答时间:2016-9-1 09:39:01
看看答案
stary666 回答时间:2016-9-1 10:11:36
看看,,,,,,,,
moyanming2013 回答时间:2016-9-1 11:42:20
学习下                 
suoma 回答时间:2016-9-1 12:28:25
systick是内核的外设优先级高
chenbourne 回答时间:2016-9-1 14:09:50
学习学习
长不大的小孩 回答时间:2016-9-1 14:26:28
看看
mcza30 回答时间:2016-9-1 16:24:25
是不是高低可以设置?
CallMeWater 回答时间:2016-9-1 18:05:10
学习学习                        
mark0668 回答时间:2016-9-1 19:01:52
看看答案
望蓝天 回答时间:2016-9-1 20:41:47
雁过留声,人过留名。
beebird 回答时间:2016-9-1 22:50:08
来学习一下
野火_firege 回答时间:2016-9-2 09:34:34
suoma 发表于 2016-9-1 12:283 B5 a* l1 q* c
systick是内核的外设优先级高
; y2 L% l0 ?+ C+ m7 T* s8 j" I/ d
错了                                
野火_firege 回答时间:2016-9-2 09:35:28
mcza30 发表于 2016-9-1 16:24
5 `9 a8 m' i% o0 e* Z# N是不是高低可以设置?
2 x) n' M. Y. ~/ S7 I9 E
yes                                

所属标签

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