第三节:FreeRTOS 中断测试实验

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ZenNaiHeQiao/article/details/82704245

目录

(1)首先了解FreeRTOSConfig.h中的宏。

configKERNEL_INTERRUPT_PRIORITY

configMAX_SYSCALL_INTERRUPT_PRIORITY

(2)FreeRTOS 开关中断

             portDISABLE_INTERRUPTS();  关中断              portENABLE_INTERRUPTS();  开中断

(3)临界段保护

  taskENTER_CRITICAL() 和 taskEXIT_CRITICAL()

  taskENTER_CRITICAL_FROM_ISR() 和 taskEXIT_CRITICAL_FROM_ISR()


(1)首先了解FreeRTOSConfig.h中的宏。

configKERNEL_INTERRUPT_PRIORITY

此宏是定义内核中断优先级的,决定了可以有多少个优先级。

configMAX_SYSCALL_INTERRUPT_PRIORITY

此宏是定义系统中断权限的。高于此中断优先级的中断,内核无法禁止.

扫描二维码关注公众号,回复: 3818701 查看本文章

 

 

举个例子:STM32  设置为16个优先级 ,0为最高,16为最低。配置为configKERNEL_INTERRUPT_PRIORITY=15,

configMAX_SYSCALL_INTERRUPT_PRIORITY=5.

则高级别的中断0-4,不会被内核屏蔽。

(2)FreeRTOS 开关中断

             portDISABLE_INTERRUPTS();  关中断 
             portENABLE_INTERRUPTS();  开中断

     低于configMAX_SYSCALL_INTERRUPT_PRIORITY=5 的中断会被屏蔽。高于configMAX_SYSCALL_INTERRUPT_PRIORITY的中断会继续进行。

(3)临界段保护

  taskENTER_CRITICAL() 和 taskEXIT_CRITICAL()

  任务级临界保护代码,一个进入临界段,一个退出临界段。

  taskENTER_CRITICAL_FROM_ISR() 和 taskEXIT_CRITICAL_FROM_ISR()

  中断级临界保护代码,一个进入临界段,一个退出临界段。

猜你喜欢

转载自blog.csdn.net/ZenNaiHeQiao/article/details/82704245