stm32cubemx freertos config parameters

use preemption                       使用抢占                                                          

cpu clock hz                           设置CPU的频率

tick rate hz                              时钟节拍频率,这里设置为1000,周期就是1ms

max priorities                         可使用的最大优先级(指的是任务的)

                                               对于 STM32F103,F407 和 F429 来说,中断优先级的数值越小,优先级越高。 而 FreeRTOS
                                                的任务优先级是,任务优先级数值越小,任务优先级越低。

minimal stack size                 空闲任务使用的堆栈大小,单位是字,一般128word

max task name len                任务名字字符串长度               

use 16 bit ticks                      系统节拍计数器变量数据类型,
                                             enable表示为16位无符号整形,disable表示为32位无符号整形

idle should yield                              为enable时空闲任务放弃CPU使用权给其他同优先级的用户任务          

use mutexes                                    为enable时使用互斥信号量

use recursive mutexes                     为enable时使用递归互斥信号量

use counting semaphores                为enable时使用计数信号量

queue registry size                              不为0时表示启用队列记录,具体的值是可以
                                                             记录的队列和信号量最大数目。

use appliction task tag                               为enable时可以给任务分配标签值

enable backward compatibility               为enable启用向后兼容,头文件FreeRTOS.h包含一系列#define宏定义,用来映射版本V8.0.0和V8.0.0之前版本的数据类型名字。这些宏可以确保RTOS内核升级到V8.0.0或以上版本时,之前的应用代码不用做任何修改。在FreeRTOSConfig.h文件中设置宏configENABLE_BACKWARD_COMPATIBILITY为disable会去掉这些宏定义,并且需要用户确认升级之前的应用没有用到这些名字。
  就是为了兼容之前的版本用的宏。例如:在之前的版本中,FreeRTOS的各种类型均为xXXX(如xSemaphoreHandle),在最新版中,均使用XXX_t(如SemaphoreHandle_t)。因此,在新项目中,最好使用FreeRTOS的最新的各种类型定义。

use port optimised task selection               enable启用特殊方法来选择下一个要运行的任务
                                                                       一般是硬件计算前导零指令,如果所使用的
                                                                       MCU没有这些硬件指令的话此宏应该设置为disable

use tickless idle                                         为enable启用低功耗tickless模式

use task notifications                                为enable时开启任务通知功能,默认开启

record stack high address                         为enable时记录堆栈高地址

tolal heap size                                                     总堆大小

memory management schema                            内存管理架构

use idle hook                                                       enable使用空闲钩子;disable不使用

use tick hook                                                      enable使用时间片钩子;disable不使用

use malloc failed hook                                         enable使用内存申请失败钩子函数

use daemon task startup hook                            使用守护程序任务启动挂钩                       

check for stack overflow                                      检查堆栈溢出,大于0时启用堆栈溢出检测功能,如果使用此功能
                                                                        用户必须提供一个栈溢出钩子函数,如果使用的话
                                                                        此值可以为option1或者option2,因为有两种栈溢出检测方法。

generate run time stats                                          生成运行时统计信息

use trace facility                                                   enable启用可视化跟踪调试

use stats formatting functions                             使用统计格式功能, 

                                                               与宏configUSE_TRACE_FACILITY同时为1时会编译下面3个 函数
                                                                        prvWriteNameToBuffer(),vTaskList(),
                                                                        vTaskGetRunTimeStats()

use co routines                                        为enable时启用协程,启用协程以后必须添加文件croutine.c

max co routine priorities                               协程的有效优先级数目,通常为2

use timers                                                     为enable时启用软件定时器

timer task priority                                                 软件定时器优先级,可设置为<=(configMAX_PRIORITIES-1)

timer queue length                                             软件定时器队列长度

timer task stack depth                                                软件定时器任务堆栈大小,通常为 (configMINIMAL_STACK_SIZE*2)

library lowest interrupt priority                                        中断最低优先级          

library max syscall interrupt priority                              系统可管理的最高中断优先级

扩展:https://blog.youkuaiyun.com/weixin_40599145/article/details/100164676

<think>嗯,用户问的是如何在STM32CubeMX配置FreeRTOS的tick中断。首先,我需要回忆一下STM32CubeMX的基本操作步骤,尤其是关于FreeRTOS的部分。记得在CubeMX配置FreeRTOS时,通常是在Middleware里选择FreeRTOS,然后设置相关参数。用户可能对tick中断的配置位置不太清楚,比如时钟源、优先级这些关键点。 首先,系统时钟配置是否正确会影响FreeRTOS的tick。默认情况下,FreeRTOS的时基可能来自SysTick,但用户可能需要使用其他定时器,比如TIM1。这时候需要在CubeMX的Clock Configuration里确认时钟源是否正确,然后在FreeRTOS配置里切换时基源。 接下来是FreeRTOS的优先级设置。tick中断的优先级需要高于configMAX_SYSCALL_INTERRUPT_PRIORITY,这样才能保证系统调用的安全性。用户可能不了解这个参数的意义,需要解释清楚,并指导如何在CubeMX中设置中断优先级,确保它不会被系统API打断。 另外,生成代码后的检查也很重要。用户生成代码后可能需要手动确认HAL_InitTick()是否正确配置,或者是否需要重写SysTick_Handler。特别是如果使用了其他定时器作为时基,可能需要修改相应的中断处理函数。 用户可能遇到的问题包括中断优先级冲突、时钟源配置错误或者生成的代码没有正确启用中断。需要提醒用户检查这些部分,并参考官方文档或社区资源,比如提到的优快云博客和FreeRTOSConfig.h的配置示例。 最后,生成的相关问题需要考虑用户可能的后续疑问,比如如何优化tick频率、处理中断冲突或者调整任务优先级。这些问题可以帮助用户深入理解FreeRTOS配置和调试方法。</think>### STM32CubeMX配置FreeRTOS tick中断的步骤 #### 1. **系统时钟配置** - 在`Clock Configuration`中确认主时钟源(如HSE/PLL)和时钟树设置,确保系统时钟频率与FreeRTOS的时钟需求匹配。 - **关键参数**:FreeRTOS默认使用SysTick作为时基源,若需改用其他定时器(如TIM1),需在后续步骤中修改。 #### 2. **启用FreeRTOS中间件** - 在`Middleware`选项卡中选择`FREERTOS`,模式设置为`CMSIS_V2`(推荐兼容性)[^2]。 - 配置任务堆栈、任务数量等基础参数。 #### 3. **Tick中断源设置** - 进入`Configuration` > `FreeRTOS` > `Config Parameters`: - 修改`USE_TIMERS`为`Enabled`以启用软件定时器(可选) - 调整`configTICK_RATE_HZ`定义tick频率(如1000Hz对应1ms周期)[^3] - 在`HAL Configuration`中切换时基源: - 若使用TIM1替代SysTick,选择`TIM1`作为`Timebase Source` #### 4. **中断优先级配置** - 在`NVIC Settings`中设置SysTick/TIMx中断优先级: - 必须满足:`tick中断优先级 ≤ configMAX_SYSCALL_INTERRUPT_PRIORITY`[^3] - 推荐优先级范围:5-15(Cortex-M数值越小优先级越高) #### 5. **生成代码后的关键检查** ```c /* FreeRTOSConfig.h中应包含以下配置 */ #define configUSE_PREEMPTION 1 #define configUSE_TICK_HOOK 0 // 建议关闭tick钩子函数以降低开销 #define configKERNEL_INTERRUPT_PRIORITY 255 // 对应NVIC优先级分组 ``` - 若使用自定义定时器,需在`main.c`中手动启动时钟和中断: ```c HAL_TIM_Base_Start_IT(&htim1); // 以TIM1为例 ``` #### 6. **调试要点** - 用`SystemCoreClock`变量验证时钟频率一致性 - 通过`osKernelGetTickCount()`函数监测实际tick计数 - 使用逻辑分析仪捕捉定时器中断信号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值