[STM32G0] 在STM32G0上,有没有办法在FreeRTOS中设置configMAX_SYSCALL_INTERRUPT_PRIORITY?

[复制链接]
 楼主| WHALEE 发表于 2025-7-19 17:31 | 显示全部楼层 |阅读模式
在STM32G070KB上打算使用freeRTOS。
我遇到的问题是,在最新的STM32CubeIDE(配套STM32G070KB的1.4.1固件包)中,configMAX_SYSCALL_INTERRUPT_PRIORITY这个配置似乎从移植文件中消失了!
由于STM32G070只有4个优先级级别(2位),这意味着在STM32Cube环境中,所有需要使用freeRTOS函数的中断都必须设置为优先级3(最低优先级)!这样一来,我就无法对这些中断进行优先级区分了!

公羊子丹 发表于 2025-7-23 07:24 | 显示全部楼层
G0 这 2 位优先级确实麻烦,我之前也卡在只能用优先级 3 的坑里。
周半梅 发表于 2025-7-23 07:26 | 显示全部楼层
configMAX_SYSCALL_INTERRUPT_PRIORITY 其实还在,只是新版移植文件有的默认隐藏了,手动加也行。
帛灿灿 发表于 2025-7-23 07:28 | 显示全部楼层
STM32G0 的 NVIC 只有 4 级,中断调度要和 FreeRTOS 的 BASEPRI 机制对齐,不然会跑飞。
童雨竹 发表于 2025-7-23 07:30 | 显示全部楼层
要是一定要区分优先级,可以考虑用软件 flag 或者把高优先中断里只放唤醒,不调 FreeRTOS API。
万图 发表于 2025-7-23 07:32 | 显示全部楼层
我当时直接在中断里做最小化处理,然后扔到队列里在任务里跑,比较稳。
Wordsworth 发表于 2025-7-23 07:34 | 显示全部楼层
如果用 CMSIS-RTOS 封装,也会有类似限制,根本原因还是 G0 优先级太少。
Bblythe 发表于 2025-7-23 07:36 | 显示全部楼层
可以看看 port.c 里 portNVIC_SYSCALL_PRIORITY 的定义,和 configMAX_SYSCALL_INTERRUPT_PRIORITY 是联动的。
Pulitzer 发表于 2025-7-23 07:38 | 显示全部楼层
有人会把 configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 设成 1,这样还能分一档出来用,但要小心测试。
Uriah 发表于 2025-7-23 07:40 | 显示全部楼层
ST 的固件包有时漏了 FreeRTOSConfig 的注释,自己加注释别怕,只要对齐中断优先级就行。
Uriah 发表于 2025-7-23 07:42 | 显示全部楼层
不行的话只能换个高端点的核了,比如 G4 或 F3,至少有 4 位优先级,好安排得多。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

36

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

36

主题

36

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部