关于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管控。
理解若是有误,还盼坛友们指正,谢谢!
没问题。
第12章 FreeRTOS中断优先级配置(重要)
http://www.armbbs.cn/forum.php?mod=viewthread&tid=21094&fromuid=58
(出处: 硬汉嵌入式论坛)
eric2013 发表于 2020-11-5 03:59
没问题。
第12章 FreeRTOS中断优先级配置(重要)
感谢硬汉哥的指导。
另外我发现,CMSIS-RTOS-V2 FreeRTOS中,不允许使用自带的硬件指令(前导零指令)待切换任务,使用前导零指令时,最多只有32个任务优先级。
可能是为了兼容RTX-5,所以这里这么做了。
这个是可以修改的。 默认的参数有时候不合适。 比如我经常留下5个优先级给硬件用(比如时序控制,精确计时等),不让FreeRTOS控制。 caicaptain2 发表于 2020-11-5 10:27
这个是可以修改的。 默认的参数有时候不合适。 比如我经常留下5个优先级给硬件用(比如时序控制,精确计时 ...
嗯嗯,是的。
页:
[1]