STM32上使用freertos常见问题

STM32上使用freertos常见问题,来自STM32的官方文档,这里把部分摘录在这里。

怎样将 FreeRTOS 移植到不同的 Cortex-M 内核?

若需将 FreeRTOS 移植到正确的 Cortex-M 产品,您必须从正确的目录导入 “port.c”。例如,若微控制器是带有 IAR 工具的 Cortex-M0 内核,则您必须从
“FreeRTOS\Source\portable\IAR\ARM_CM0” 获取 port.c。

FreeRTOS 使用多少 ROM/RAM?

这取决于您的编译器、架构,以及 RTOS 内核配置。一般来说, RTOS 内核本身需要大约 5到 10 K 字节 ROM 空间。如果创建的线程或队列数增加, RAM 使用量就会上升。

怎样设置 CPU 时钟?

CPU 时钟由 FreeRTOSConfig.h 中的 configCPU_CLOCK_HZ 定义,在 STM32CubeF4固件内它由 SystemCoreClock 提供,表示 HCLK 时钟 (AHB 总线),当通过调用SystemClock_Config() 函数配置 RCC 时钟时会设置此值。

怎样设置中断优先级?

任何使用 RTOS API 函数的中断服务程序,其优先级必须手动设置为大于等于
FreeRTOSConfig.h 文件中 configMAX_SYSCALL_INTERRUPT_PRIORITY 的设置值。这确保了中断的逻辑优先级小于等于 configMAX_SYSCALL_INTERRUPT_PRIORITY设置。

怎样使用非 SysTick 时钟生成时间片中断?

用户可选择性地自己提供时间片中断源,方法是使用非 SysTick 的定时器生成中断:

  • 提供 vPortSetupTimerInterrupt() 的实现,它会以 configTICK_RATE_HZ
    FreeRTOSConfig.h 常量指定的频率生成中断。
  • 将 xPortSysTickHandler() 安装为定时器中断的处理程序,确保 xPortSysTickHandler()在 FreeRTOSConfig.h 中未映射至 SysTick_Handler(),且在 port.c 中未重命名为SysTick_Handler()。

怎样启用无时间片空闲模式?

FreeRTOS 无时间片模式 (低功耗)通过进入睡眠模式并停止周期性的时间片中断来降低MCU 功耗。在 FreeRTOSConfig.h 中,将 configUSE_TICKLESS_IDLE 定义为 1,即可启用此功能当使用非 SysTick 定时器生成时间片中断时,也可启用无时间片空闲模式。用户必须添加下列动作至上一个问题所述内容:

  • 在 FreeRTOSConfig.h 中,将 configUSE_TICKLESS_IDLE 设为 2。
  • 按 FreeRTOS 网站的文档页面说明,定义portSUPPRESS_TICKS_AND_SLEEP()。

猜你喜欢

转载自blog.csdn.net/u011559046/article/details/80204637
今日推荐