[应用相关]

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

[复制链接]
3168|14
手机看帖
扫描二维码
随时随地手机跟帖
goodluck09876|  楼主 | 2018-9-10 14:43 | 显示全部楼层 |阅读模式
基于STM32的FREERTOS应用的几个常见问题

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

goodluck09876|  楼主 | 2018-9-10 14:43 | 显示全部楼层
2、FreeRTOS 使用需要ROM/RAM?
答:这取决于您的编译器、代码架构,以及RTOS 内核配置。一般来说, RTOS 内核本身需要大约 5到 10 K 字节 ROM 空间。

如果创建的线程或队列数增加,RAM 使用量就会上升。

使用特权

评论回复
goodluck09876|  楼主 | 2018-9-10 14:45 | 显示全部楼层
3、怎样设置 CPU 时钟?
答:CPU 时钟由 FreeRTOSConfig.h 中的 configCPU_CLOCK_HZ 定义,比如在STM32CubeF4固件内它由 SystemCoreClock 提供,表示 HCLK 时钟 (AHB 总线),通过调用SystemClock_Config() 函数配置 RCC 时钟时会设置此值。

使用特权

评论回复
goodluck09876|  楼主 | 2018-9-10 14:45 | 显示全部楼层
4、怎样设置中断优先级?
答:任何使用 RTOS API 函数的中断服务程序,其优先级必须手动设置为大于等于FreeRTOSConfig.h 文件中configMAX_SYSCALL_INTERRUPT_PRIORITY 的设置值。这确保其中断的逻辑优先级低于等于configMAX_SYSCALL_INTERRUPT_PRIORITY设置的优先级。

使用特权

评论回复
goodluck09876|  楼主 | 2018-9-10 14:46 | 显示全部楼层
5、怎样使用非 SysTick 时钟生成时间片中断?
答:用户可选择性地自己提供时间片中断源,方法是使用非SysTick 的定时器生成中断:
• 提供 vPortSetupTimerInterrupt() 的实现,它会以FreeRTOSConfig.h文件中定义的configTICK_RATE_HZ常量指定的频率产生中断。
• 将 xPortSysTickHandler() 配置为定时器中断的处理程序,确保xPortSysTickHandler()在FreeRTOSConfig.h 中未映射至 SysTick_Handler(),或在 port.c 中未被命名为SysTick_Handler()。

使用特权

评论回复
goodluck09876|  楼主 | 2018-9-10 14:46 | 显示全部楼层
6、怎样启用无时间片空闲模式?
答:FreeRTOS 无时间片模式 (低功耗)通过进入睡眠模式并停止周期性的时间片中断来降低MCU 功耗。在 FreeRTOSConfig.h 中,将 configUSE_TICKLESS_IDLE 定义为 1,即可启用此功能。

当使用非 SysTick 定时器生成时间片中断时,也可启用无时间片空闲模式。用户必须添加下列动作至上一个问题所述内容:

• 在 FreeRTOSConfig.h 中,将 configUSE_TICKLESS_IDLE 设为 2。
• 根据 FreeRTOS 相关文档说明,定义portSUPPRESS_TICKS_AND_SLEEP()。

使用特权

评论回复
goodluck09876|  楼主 | 2018-9-10 14:46 | 显示全部楼层
7、在做基于STM32的FREERTOS应用中出现比较频繁的问题是什么?
答:应属STACK溢出和中断优先级相关的问题。
以为内容取自于ST官方的一篇关于具有RTOS的STM32Cube开发应用的用户手册UM1722,该手册较为详细了介绍了如下内容。本文内容只是其中的FAQ部分。

使用特权

评论回复
goodluck09876|  楼主 | 2018-9-10 14:59 | 显示全部楼层
1. FreeRTOS
  FreeRTOS是专为小型嵌入式系统设计的可扩展的实时内核。
亮点包括:

微小的封装形式。
免费的RTOS调度程序
免费嵌入式软件源代码。
免版税。
抢占式,协作式和混合配置选项,可选时间分片。
SafeRTOS衍生产品对代码完整性提供了高度的信心。
包括一个为低功耗应用设计的tickless模式。
可以使用动态或静态分配的RAM来创建RTOS对象(任务,队列,信号量,软件定时器,互斥体和事件组)。
官方支持>30个嵌入式系统架构(以ARM7和ARM Cortex-M3为一体架构)。
FreeRTOS-MPU支持ARM Cortex-M3内存保护单元(MPU)。
设计小巧,简单易用。通常,RTOS内核二进制映像将在4K到9K字节的区域内。
可移植性非常好的源代码结构,主要用C.
支持实时任务和协同程序。
直接到任务通知,队列,二进制信号量,计数信号量,递归信号量和互斥体,用于任务之间的通信和同步,或实时任务和中断之间。
创新事件组(或事件标志)实施。
具有优先级继承的互斥体。
高效的软件定时器。
强大的执行跟踪功能。
堆栈溢出检测选项。
免费监控的论坛支持或可选的商业支持和许可。
对可创建的实时任务数量没有软件限制。
对可以使用的任务优先级的数量没有软件限制。
对任务优先级分配没有限制 - 可以为多个实时任务分配相同的优先级。
许多支持的架构的免费开发工具。
从标准的Windows主机开发。

使用特权

评论回复
keaibukelian| | 2018-9-11 19:09 | 显示全部楼层
非常感谢楼主分享

使用特权

评论回复
labasi| | 2018-9-11 19:10 | 显示全部楼层
楼主讲讲rtos的基础吧 我对这个很不了解

使用特权

评论回复
paotangsan| | 2018-9-11 19:16 | 显示全部楼层
goodluck09876 发表于 2018-9-10 14:45
4、怎样设置中断优先级?
答:任何使用 RTOS API 函数的中断服务程序,其优先级必须手动设置为大于等于Free ...

rtos的流程怎么走

使用特权

评论回复
木木guainv| | 2018-9-12 19:37 | 显示全部楼层
很多问题对于初学者来说并不是很关心

使用特权

评论回复
略略u| | 2018-9-12 23:57 | 显示全部楼层
有时候也不知道是电脑问题,还是程序问题,一段时间之后,就需要重新调整一下。

使用特权

评论回复
磨砂| | 2018-9-13 07:19 | 显示全部楼层
我对第五个问题很感兴趣

使用特权

评论回复
晓伍| | 2018-9-13 07:25 | 显示全部楼层
我刚刚能在系统里边加代码  就这水平刚

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

220

主题

5843

帖子

20

粉丝