misplace5508 发表于 2020-11-4 12:17:01

关于CMSIS-RTOS-V2 FreeRTOS中断中系统调用的理解

使用Keil5 RTE添加CMSIS-RTOS-V2 FreeRTOS,发现默认configMAX_SYSCALL_INTERRUPT_PRIORITY = 16 = 0x10。

在选择NVIC_PRIORITYGROUP_4的情况下:


Value(高4位用来描述中断优先级)中断优先级
0x000
0x101
0x202
......
0xF015


可以看到,configMAX_SYSCALL_INTERRUPT_PRIORITY = 16 = 0x10对应的是中断优先级1,中断优先级1~15的情况下,是受到freeRTOS管控的,是可以在中断中调用freeRTOS的API函数的。而中断优先级为0的情况下则不受控也不能调用相关API函数。
在有些需要中断及时响应的情况下,可能需要修改configMAX_SYSCALL_INTERRUPT_PRIORITY 的值,来使得中断及时响应,这些中断不受freeRTOS管控。
理解若是有误,还盼坛友们指正,谢谢!


eric2013 发表于 2020-11-5 03:59:12

没问题。

第12章 FreeRTOS中断优先级配置(重要)
http://www.armbbs.cn/forum.php?mod=viewthread&tid=21094&fromuid=58
(出处: 硬汉嵌入式论坛)

misplace5508 发表于 2020-11-5 09:21:51

eric2013 发表于 2020-11-5 03:59
没问题。

第12章 FreeRTOS中断优先级配置(重要)


感谢硬汉哥的指导。
另外我发现,CMSIS-RTOS-V2 FreeRTOS中,不允许使用自带的硬件指令(前导零指令)待切换任务,使用前导零指令时,最多只有32个任务优先级。

可能是为了兼容RTX-5,所以这里这么做了。

caicaptain2 发表于 2020-11-5 10:27:18

这个是可以修改的。 默认的参数有时候不合适。 比如我经常留下5个优先级给硬件用(比如时序控制,精确计时等),不让FreeRTOS控制。

misplace5508 发表于 2020-11-5 10:29:57

caicaptain2 发表于 2020-11-5 10:27
这个是可以修改的。 默认的参数有时候不合适。 比如我经常留下5个优先级给硬件用(比如时序控制,精确计时 ...

嗯嗯,是的。
页: [1]
查看完整版本: 关于CMSIS-RTOS-V2 FreeRTOS中断中系统调用的理解