STMCU小助手
发布时间:2021-11-10 18:02
|
知识点13 N1 Z( R% Q$ _- D8 p# S* e4 B 9 L7 Z* F! f& m /*< STM32G0xx uses 2 Bits for the Priority Levels */8 b$ I& A6 r. T" r$ {/ M' l / w( @1 M. g) B w! U" a1 @) p7 H #define __NVIC_PRIO_BITS 2 2 Y" f8 B6 y, A; u: T 所以M0+的中断优先级:0、1、2、3 5 o W# z: X7 I 知识点2* H2 C6 R9 T u$ }# I' s; W, ] ! w; ?0 c7 U( v! r 在Cortex-M0 上,FreeRTOS内核的临界区屏蔽了所有中断(除了NMI、HardFault、复位)。9 t2 Q& A6 Q4 e# P, O# d) B ; _+ O& z4 H1 E5 }" H7 ` 知识点3 / `5 s1 l: d6 R0 X$ _* u FreeRTOS 任务优先级从0开始,作为最低的紧急 RTOS 任务优先级,而M0+ NVIC 使用0作为最高的紧急中断优先级。5 d0 o8 z" j5 s - e* s0 q0 i" T8 q, ?8 O 但是任务优先级和中断优先级没有关联, R2 N( N' F5 n2 N/ O( n 知识点4+ j8 t2 m8 U, a5 k" b0 D FreeRTOS 内核使用 2-3 个中断,具体取决于内核:SysTick用作时基,PendSV用于上下文切换,以及Cortex-M3/4/7 上的SVCall用于启动调度程序。& o2 b9 I( s/ g+ [, f SysTick 和 PendSV 配置为最低紧急程度:RTOS 以最低紧急程度运行。, g7 Q! z& q r e& O( ^9 i0 [ 知识点5; _$ ?0 K8 w; ~ f2 x4 Y0 | 中断服务代码里必须使用中断安全的FromISR()变体 |
微信公众号
手机版