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

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

[复制链接]
野火_firege 发布时间:2016-9-1 08:52
本帖最后由 野火_firege 于 2016-9-3 09:29 编辑 ( s1 f  f/ p) M, R0 p3 H
0 z2 p+ C) ^/ q% I; s
提示:systick是内核的外设,其他外设比如串口,adc等是内核之外的。
7 W+ @, k7 G& Y% _1 n6 N' |, v: u% ]" ^9 Y- \) ]
答案分析:5 b) `+ V; {" n
1、只要内核的优先级可以配置,那么内核的优先级就不是一定比外设的高,而是要先比较软件优先级,如果软件优先级一样,那么就比较他们的硬件的中断编号,编号就是在中断向量表中的位置,越小,优先级越高。
. q+ b# ^' j8 z. k: S- U  C  X6 Q' o1 s; j4 f
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个位来配置中断优先级。. s( @! B! B4 g! S2 `# E
; j& L. U/ B2 ^! D5 A% H1 d% a
3、那么问题来了,这里systick的中断优先级配置成15,应该是最低的,那跟外设来比,那是systick的优先级比外设是高还是低?  这个得看 外设 配置 中断优先级时的优先级分组。+ k  I' i1 Z# l' s+ ]+ P: _+ Q5 B9 `
: k  @4 Y/ Y, |/ q9 [- A
4、如果分组为 2,那抢占优先级和子优先级各有2个位表示优先级,抢占的取值范围为0~3,子优先级的取值范围为:0~3。那这时systick的优先级15,该怎么对比,只需要把15转换成二进制:1111,这四位同样受优先级分组的控制,即前两位表示抢占优先级,那就是3,后两位表示子优先级,也是3。在分组2里面都是最低的。如果你的外设也配置成组2,主和子优先级配置的不是3,那就肯定比systick的优先级高。9 A7 J% z# ^5 t; e5 q- T3 t: @) C) J
' N& H" w. A: g0 P! T+ u
5、内核的优先级并非一定比外设的优先级高,只要你的优先级可以配置。# C4 v8 Y5 j$ S
其他资料链接,有需要的可以下载。) g" f3 Q" k$ D

4 N+ q* l6 Z% G; J) Q. N& z; a: A( q. [【秉火STM32-视频教程 优酷 观看地址】
2 X9 u) V7 z9 H2 x5 o1-200集STM32F429视频教程,从0开始手打代码教学!而不是拿写好的代码讲解!
& E4 u7 x- O! i# n% D* \; Q0 _2-150集STM32F103视频教程,从0开始手打代码教学!而不是拿写好的代码讲解!$ k, l# X; Y  u& ?
3-优酷观看链接:http://i.youku.com/firege 【不断更新,记得收藏】
6 D8 T' E6 g6 V5 A& z! q5 `. ?) [+ T! {3 V1 v
【秉火STM32-视频+程序+书籍 下载地址】
7 Z, U6 A9 R  c6 T8 }F103-霸道光盘资料:http://yunpan.cn/cBUab8r9vpf3B  访问密码 8d7e7 o6 z4 L6 Q8 m2 g* ~) p' G2 a
F103-指南者光盘资料:http://yunpan.cn/cBUaNcjtqCsyI  访问密码 e21a
) ?) O# g% z& d; a% O, FF429-挑战者光盘资料:http://yunpan.cn/cRiEnMsyqzxAE  访问密码 246a
2 ?; t5 X7 j* `3 [
& ?/ p% a' p) j1 q* `% u7 H& s, n
; @" L: w5 ~. R# x

评分

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

查看全部评分

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

举报

78个回答
中山无雪 回答时间:2017-1-15 22:25:24
本帖最后由 中山无雪 于 2017-1-15 23:08 编辑
4 h. H9 d. i) O% M4 a  {/ _
5 n: Y7 m  X+ n8 W- Z; H2 b7 `看过系统配置文件的都应该知道的
4 C4 g7 y/ K5 S+ ]
9 u" Q6 a- K7 W$ ]7 Y7 L! wSYStick是核心中断中级别最低的,但是和外设比是要看外设的设置了
" ?' h* b+ Y) l, M" n3 d( I( I0 e
  /* System interrupt init*/
4 H/ D0 ^( X$ ?. J% j/ S4 k- k  /* MemoryManagement_IRQn interrupt configuration */5 |$ ~3 t3 l  I! N
  HAL_NVIC_SetPriority(MemoryManagement_IRQn, 0, 0);
2 X8 {1 h7 [9 W. h8 F  /* BusFault_IRQn interrupt configuration */
/ k# D0 o3 |* ^% f* S% ]  HAL_NVIC_SetPriority(BusFault_IRQn, 0, 0);
, Q3 s" ^( z2 S/ V, D6 K; O: Z  /* UsageFault_IRQn interrupt configuration */+ {) r- O, u2 d6 H& {! I9 W
  HAL_NVIC_SetPriority(UsageFault_IRQn, 0, 0);, z+ S: p- u# y2 g0 b
  /* SVCall_IRQn interrupt configuration */$ E" g, h" C4 [7 H
  HAL_NVIC_SetPriority(SVCall_IRQn, 0, 0);' Q& l% m  P$ _
  /* DebugMonitor_IRQn interrupt configuration */
9 g/ V* d% n! e' z/ V( u  HAL_NVIC_SetPriority(DebugMonitor_IRQn, 0, 0);
$ ]% N1 j. Q# l9 }0 t; b  /* PendSV_IRQn interrupt configuration */
9 k* n0 t6 _6 e7 Z: m5 l2 y8 e  HAL_NVIC_SetPriority(PendSV_IRQn, 15, 0);0 Q. ^  i$ k# k+ Y
  /* SysTick_IRQn interrupt configuration */
3 A' b( b, M+ c( `9 b# z  HAL_NVIC_SetPriority(SysTick_IRQn, 15, 0);9 c8 L! Z) y+ e! l
$ I. M* k( H$ a. Q% k/ I1 n
野火_firege 回答时间:2016-9-1 08:55:15
更加详细的分析可参考《STM32库开发实战指南——基于STM32F429》第16章——STM32中断应用总结。
, k' H! Z- Y  D) g+ ^+ T. v7 N* X% H" J  o2 d
《STM32库开发实战指南—基于STM32F429》即将出版,开源电子版6 I3 o' P9 Z4 X  u/ ]/ ^
https://www.stmcu.org.cn/module/foru ... 569&fromuid=3255788
5 h& _9 S; O6 ~  W+ q& G9 C(出处: 意法半导体STM32/STM8技术社区)
% `6 Q+ w% B8 y
野火_firege 回答时间:2016-9-3 09:28:55
guo8113 发表于 2016-9-2 13:414 z! g( `; [- |
比外设高吧

; D( H/ ]4 W+ ^  v/ Q回答错误                                          
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:28% n9 w8 V# Y5 @6 _- |
systick是内核的外设优先级高
) Z- X" O0 `* t
错了                                
野火_firege 回答时间:2016-9-2 09:35:28
mcza30 发表于 2016-9-1 16:24; p1 T) @) ~4 h0 P7 ]% \& T' v
是不是高低可以设置?

+ Y, i1 D0 \0 }& G: F( Dyes                                

所属标签

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