首页 > 代码库 > FreeRTOS - 中断使用注意

FreeRTOS - 中断使用注意

注意点:
1:首先要将中断的嵌套全部设置为抢占优先级。
2:将freertos系统内核中断(configKERNEL_INTERRUPT_PRIORITY)的优先级设置成最低。
3:将freertos的最大系统调用中断优先级(configMAX_SYSCALL_INTERRUPT_PRIORITY)设置为合适的优先级,比如11。
4:如果有用户中断函数调用到freertos提供的系统函数,一定要使用带FromISR的freertos提供的系统函数,并且这个用户中断的优先级一定要在configKERNEL_INTERRUPT_PRIORITY和configMAX_SYSCALL_INTERRUPT_PRIORITY的优先级之间,比如FREERTOS中的优先级数值设定的参数是configMAX_SYSCALL_INTERUPT_PRORITY。默认值是5,所以要想在中断中使用操作系统函数需要将中断的优先级设置的大于等于5

(原因分析:

1、执行带FromISR的FreeRTOS提供的系统函数会进入临界区,屏蔽了任务的切换,否则有高优先级的任务调用了这个系统函数,但这个系统函数的使用资格被用户中断函数霸占(低优先级),高优先级任务因为得不到操作这个系统函数的资格而被阻塞,就好像高优先级任务不能打断低优先级任务

2、如果用户中断的优先级高于configMAX_SYSCALL_INTERRUPT_PRIORITY,还调用系统函数,由于系统被此用户中断打断而不能正常运行,会导致程序出错(猜测)


5:其他没有调用到freertos提供的系统函数的中断的优先级没有特别要求。

FreeRTOS - 中断使用注意