STMCU小助手
发布时间:2021-11-10 18:02
|
知识点14 c' u& O9 Y; G) f* n 8 I6 a E/ J/ V /*< STM32G0xx uses 2 Bits for the Priority Levels */ 5 d/ x; p2 {8 f' Z5 U2 b #define __NVIC_PRIO_BITS 2 . @4 k# A' j! l8 C3 K6 }4 D( H 4 ^- a& L+ t7 w7 K 所以M0+的中断优先级:0、1、2、39 U& J# ]* [/ P+ {2 Z ; V& n% S; s( [) }# e 知识点2) M- Y- [( d, K& w& ]) t 在Cortex-M0 上,FreeRTOS内核的临界区屏蔽了所有中断(除了NMI、HardFault、复位)。$ v: q9 I$ y% t& z9 { ; f6 J! p- c* o" o e$ Q 知识点3 FreeRTOS 任务优先级从0开始,作为最低的紧急 RTOS 任务优先级,而M0+ NVIC 使用0作为最高的紧急中断优先级。8 K1 V W9 z5 U$ a0 r, X " [# \5 L# r9 r 但是任务优先级和中断优先级没有关联 # z7 O; |4 k. e2 G 知识点4# m9 O0 E/ U8 P& O$ E : _9 z) }) S* ~ FreeRTOS 内核使用 2-3 个中断,具体取决于内核:SysTick用作时基,PendSV用于上下文切换,以及Cortex-M3/4/7 上的SVCall用于启动调度程序。 SysTick 和 PendSV 配置为最低紧急程度:RTOS 以最低紧急程度运行。 1 n" S- C+ F/ \; s8 s 知识点5: c, Z! v; _1 h# ] 中断服务代码里必须使用中断安全的FromISR()变体 : F7 [* J0 L4 Z' J+ { |
微信公众号
手机版