1、如何将 FreeRTOS移植到不同的Cortex-M 内核?
答:假如要将 FreeRTOS 移植到正确的Cortex-M 产品,你有必要从正确的目录导入 “port.c”文件。例如,若微控制器是带有IAR 东西的 Cortex-M0 内核,则您有必要从“FreeRTOS\Source\portable\IAR\ARM_CM0” 获取 port.c。
2、FreeRTOS运用需求ROM/RAM?
答:这取决于您的编译器、代码架构,以及RTOS 内核装备。一般来说, RTOS 内核自身需求大约 5到 10 K 字节 ROM 空间。
假如创立的线程或行列数增加,RAM 运用量就会上升。
3、怎样设置 CPU 时钟?
答:CPU 时钟由 FreeRTOSConfig.h 中的 configCPU_CLOCK_HZ 界说,比如在STM32CubeF4″>STM32CubeF4固件内它由 SystemCoreClock 供给,表明 HCLK 时钟 (AHB 总线),经过调用SystemClock_Config() 函数装备 RCC 时钟时会设置此值。
4、怎样设置中止优先级?
答:任何运用 RTOS API 函数的中止服务程序,其优先级有必要手动设置为大于等于FreeRTOSConfig.h 文件中configMAX_SYSCALL_INTERRUPT_PRIORITY 的设置值。这保证其间止的逻辑优先级低于等于configMAX_SYSCALL_INTERRUPT_PRIORITY设置的优先级。
5、怎样运用非 SysTick 时钟生成时刻片中止?
答:用户可选择性地自己供给时刻片中止源,办法是运用非SysTick 的定时器生成中止:
• 供给 vPortSetupTimerInterrupt() 的完成,它会以FreeRTOSConfig.h文件中界说的configTICK_RATE_HZ常量指定的频率发生中止。
• 将 xPortSysTickHandler() 装备为定时器中止的处理程序,保证xPortSysTickHandler()在FreeRTOSConfig.h 中未映射至 SysTick_Handler(),或在 port.c 中未被命名为SysTick_Handler()。
6、怎样启用无时刻片闲暇形式?
答:FreeRTOS无时刻片形式 (低功耗)经过进入睡觉形式并中止周期性的时刻片中止来下降MCU 功耗。在 FreeRTOSConfig.h 中,将 configUSE_TICKLESS_IDLE 界说为 1,即可启用此功用。
当运用非 SysTick 定时器生成时刻片中止时,也可启用无时刻片闲暇形式。用户有必要增加下列动作至上一个问题所述内容:
• 在 FreeRTOSConfig.h 中,将 configUSE_TICKLESS_IDLE 设为 2。
• 依据 FreeRTOS 相关文档阐明,界说portSUPPRESS_T%&&&&&%KS_AND_SLEEP()。
7、在做根据STM32的FREERTOS使用中呈现比较频频的问题是什么?
答:应属STACK溢出和中止优先级相关的问题。
认为内容取自于ST官方的一篇关于具有RTOS的STM32Cube开发使用的用户手册UM1722,该手册较为详细了介绍了如下内容。本文内容仅仅其间的FAQ部分