|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
" { q" j0 N3 `$ Q1 A- E/ T0 \2 \9 `7 j) n# `- f9 `/ n# j- G. M7 I
1、怎样将 FreeRTOS 移植到不同的Cortex-M 内核?; X9 c4 [, V4 C" S" K$ t$ `$ }
答:若需将 FreeRTOS 移植到正确的Cortex-M 产品,您必须从正确的目录导入 “port.c”文件。例如,若微控制器是带有IAR 工具的 Cortex-M0 内核,则您必须从“FreeRTOSSourceportableIARARM_CM0” 获取 port.c。; w( y( v* w7 o V) D
8 M; @" A9 }& c0 [* }
2、FreeRTOS 使用需要ROM/RAM?
+ ^: T$ @( N; V5 M答:这取决于您的编译器、代码架构,以及RTOS 内核配置。一般来说, RTOS 内核本身需要大约 5到 10 K 字节 ROM 空间。
+ T. o$ s) a5 u. s) h+ J" p
: e, F9 \4 V9 b) y如果创建的线程或队列数增加,RAM 使用量就会上升。& P. s* E/ ~$ x+ L$ \
- Z+ l6 t9 ~# y0 K' ~
3、怎样设置 CPU 时钟?
- t7 x% I4 y; p7 C7 x+ X( Q" H% a答:CPU 时钟由 FreeRTOSConfig.h 中的 configCPU_CLOCK_HZ 定义,比如在STM32CubeF4固件内它由 SystEMCoreClock 提供,表示 HCLK 时钟 (AHB 总线),通过调用SystemClock_Config() 函数配置 RCC 时钟时会设置此值。
7 u3 @/ k+ Y3 R# e# Q9 S0 I! b0 F0 U
4、怎样设置中断优先级?4 R3 a% w- k1 J- B( V
答:任何使用 RTOS API 函数的中断服务程序,其优先级必须手动设置为大于等于FreeRTOSConfig.h 文件中configMAX_SYSCALL_INTERRUPT_PRIORITY 的设置值。这确保其中断的逻辑优先级低于等于configMAX_SYSCALL_INTERRUPT_PRIORITY设置的优先级。; h! y* y& ~ P4 s' i# {
! s7 M0 t0 @' p6 B W8 \5、怎样使用非 SysTick 时钟生成时间片中断?
% I) x8 Q; F& q$ d7 k" [答:用户可选择性地自己提供时间片中断源,方法是使用非SysTick 的定时器生成中断:
0 p( G, }! ]- z' L2 I• 提供 vPortSetupTimerInterrupt() 的实现,它会以FreeRTOSConfig.h文件中定义的configTICK_RATE_HZ常量指定的频率产生中断。
3 ]/ k5 p( l0 S" P- l- E• 将 xPortSysTickHandler() 配置为定时器中断的处理程序,确保xPortSysTickHandler()在FreeRTOSConfig.h 中未映射至 SysTick_Handler(),或在 port.c 中未被命名为SysTick_Handler()。* L; @) d/ l2 f0 E) m* K k
8 u3 Z' l1 \; C8 V: q* g* ?, |
6、怎样启用无时间片空闲模式?' K2 C4 i1 r \8 e# N
答:FreeRTOS 无时间片模式 (低功耗)通过进入睡眠模式并停止周期性的时间片中断来降低mcu 功耗。在 FreeRTOSConfig.h 中,将 configUSE_TICKLESS_IDLE 定义为 1,即可启用此功能。
) e. S/ M5 y5 \6 k: D( T8 I1 E/ T! p1 q$ ]3 I% X" c6 w
当使用非 SysTick 定时器生成时间片中断时,也可启用无时间片空闲模式。用户必须添加下列动作至上一个问题所述内容:. q' P# X( s! D5 @
w9 J4 L! d' ?, s O
• 在 FreeRTOSConfig.h 中,将 configUSE_TICKLESS_IDLE 设为 2。
4 o) T0 C3 R( S* c9 ]• 根据 FreeRTOS 相关文档说明,定义portSUPPRESS_TICKS_AND_SLEEP()。. z3 R5 t( g0 c5 K
3 Q6 a4 D* E3 r& U: y, Y
7、在做基于STM32的FREERTOS应用中出现比较频繁的问题是什么?
4 Q2 P# |1 C7 J4 x. [, O; P答:应属STACK溢出和中断优先级相关的问题。
7 \' H+ s M% k! x2 s2 j: Q1 V以为内容取自于ST官方的一篇关于具有RTOS的STM32Cube开发应用的用户手册UM1722,该手册较为详细了介绍了如下内容。本文内容只是其中的FAQ部分。* O3 v$ G) ]( B9 o0 F: D
, ?. `' {, q, A% W% E8 }
7 c7 f- Z( p- ]' u
7 x1 l, X4 }7 C, I) y o! Q |
|