找回密码
 注册
关于网站域名变更的通知
查看: 64|回复: 0
打印 上一主题 下一主题

基于STM32的FREERTOS应用的几个常见问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
 楼主| 发表于 2024-9-12 15:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

! ~+ Y2 z& I' D9 N  A
2 D- f" @/ [/ m* r& @6 d1、怎样将 FreeRTOS 移植到不同的Cortex-M 内核?
+ H) ]6 Y, G" R! @0 }) L答:若需将 FreeRTOS 移植到正确的Cortex-M 产品,您必须从正确的目录导入 “port.c”文件。例如,若微控制器是带有IAR 工具的 Cortex-M0 内核,则您必须从“FreeRTOSSourceportableIARARM_CM0” 获取 port.c。: l6 a5 w, |+ j% |. P4 h
: O( ^& n6 f0 ?
2、FreeRTOS 使用需要ROM/RAM?2 t/ M% ?# f' c' i4 L4 s
答:这取决于您的编译器、代码架构,以及RTOS 内核配置。一般来说, RTOS 内核本身需要大约 5到 10 K 字节 ROM 空间。( R2 r8 ~" o7 J4 @# C! t
# X, v0 V% |9 }% K1 U! z: x
如果创建的线程或队列数增加,RAM 使用量就会上升。
& M) b" F- H& G8 s8 _! f" B
9 z! N1 H" f* ]. W- _5 p3、怎样设置 CPU 时钟?+ N$ l3 E7 U2 @5 U: A7 `  K) J2 d
答:CPU 时钟由 FreeRTOSConfig.h 中的 configCPU_CLOCK_HZ 定义,比如在STM32CubeF4固件内它由 SystEMCoreClock 提供,表示 HCLK 时钟 (AHB 总线),通过调用SystemClock_Config() 函数配置 RCC 时钟时会设置此值。- B  v; ]' Y+ |$ {9 o4 A
- L6 [6 b" D! n7 f2 c
4、怎样设置中断优先级?; t. T  d1 ], V8 `
答:任何使用 RTOS API 函数的中断服务程序,其优先级必须手动设置为大于等于FreeRTOSConfig.h 文件中configMAX_SYSCALL_INTERRUPT_PRIORITY 的设置值。这确保其中断的逻辑优先级低于等于configMAX_SYSCALL_INTERRUPT_PRIORITY设置的优先级。
$ t- Z( m4 l) f4 D/ H) w  M* M0 t. D& H$ Y3 _
5、怎样使用非 SysTick 时钟生成时间片中断?
1 \) T4 s7 j+ C" x7 Q( D- N, ]& P答:用户可选择性地自己提供时间片中断源,方法是使用非SysTick 的定时器生成中断:$ t, l$ B  O0 Z
• 提供 vPortSetupTimerInterrupt() 的实现,它会以FreeRTOSConfig.h文件中定义的configTICK_RATE_HZ常量指定的频率产生中断。
' h" a/ v% B. K& m3 v6 G; y• 将 xPortSysTickHandler() 配置为定时器中断的处理程序,确保xPortSysTickHandler()在FreeRTOSConfig.h 中未映射至 SysTick_Handler(),或在 port.c 中未被命名为SysTick_Handler()。8 g. y3 I3 [, I3 _& l
2 Z) R! O$ z# L* x
6、怎样启用无时间片空闲模式?. P+ o; d2 f. l2 w
答:FreeRTOS 无时间片模式 (低功耗)通过进入睡眠模式并停止周期性的时间片中断来降低mcu 功耗。在 FreeRTOSConfig.h 中,将 configUSE_TICKLESS_IDLE 定义为 1,即可启用此功能。
: `  B% F& T7 `. x
- ?$ C4 l4 B/ S, w, Q% n当使用非 SysTick 定时器生成时间片中断时,也可启用无时间片空闲模式。用户必须添加下列动作至上一个问题所述内容:: `: g$ I$ ~( x+ V# S& q
; w& |. G! y0 a: A+ O. O5 k+ I
• 在 FreeRTOSConfig.h 中,将 configUSE_TICKLESS_IDLE 设为 2。
  c  t  U0 y! k% q• 根据 FreeRTOS 相关文档说明,定义portSUPPRESS_TICKS_AND_SLEEP()。
5 ~+ e3 E5 h* @1 P; \6 m/ B, S4 V" @, ]3 k! ~8 \
7、在做基于STM32的FREERTOS应用中出现比较频繁的问题是什么?* B% `/ }1 W8 V, O8 m
答:应属STACK溢出和中断优先级相关的问题。
3 S" p4 \: P, G; C以为内容取自于ST官方的一篇关于具有RTOS的STM32Cube开发应用的用户手册UM1722,该手册较为详细了介绍了如下内容。本文内容只是其中的FAQ部分。
1 W/ T: u, D) W( x; e- i
2 F8 h' K  W/ u* E- M! ?( B( c4 g1 n: g" [

* r* v8 M% f8 h% {, ~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-9-24 05:19 , Processed in 0.125000 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表