学习正点原子讲解FreeRTOS中断管理心得和cortex-M3权威指南笔记

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

1、一个任务恢复运行:

(1)恢复一个任务的运行:将一个任务从挂起态恢复到就绪态,只有通过函数vTaskSuspend()设置为挂起态的任务才能使用vTaskResume()恢复,函数原型为void vTaskResume(TaskHandle_t xTaskToResume),xTaskToResume要恢复任务的句柄。

(2)中断服务函数中恢复一个任务的运行:用于中断服务函数中恢复一个任务,函数的原型如下:

BaseType_t xTaskResumeFromISR(TaskHandle_t xTaskToResume),xTaskToResume是要恢复任务的句柄。返回值为pdTRUE:恢复运行的任务的任务优先级等于或高于正在运行的任务(被中断打断的任务),这意味着在退出中断服务函数以后必须进行一次上下文切换。返回值为pdFALSE:恢复运行的任务的任务优先级低于当前正在运行的任务(被中断打断的任务),这意味着在退出中断服务函数以后不需要进行上下文切换。

2、中断是微控制器一个很常见的特性,中断有硬件产生,当中断产生以后,CPU就会中断当前的流程转而去处理中断服务,Cotex-M内核的MCU提供了一个用于中断管理的嵌套向量中断控制器(NVIC)。

3、Cotex-M3和M4的NVIC最多能支持240个IRQ(中断请求)、1个不可屏蔽中断(NMI)、一个Systick(滴答定时器)中断和多个系统异常。

4、与中断有关的寄存器都在NVIC和SCB中。Cotex-M3\M4中的异常就是中断。

5、在使用FreeRTOS的时候,最关心的是使用系统异常中的第14号系统异常--PendSV(为系统设备而设的“可悬挂请求”)和第15号系统异常SysTick(系统滴答定时器--也是周期性溢出的时基定时器)。系统异常从0号-15号。外部中断从16号到225号共240个中断,如下图所示:

6、Cortex-M3/M4中断优先级的数值越小,则优先级越高。

7、每一个中断都有一个寄存器(8位的寄存器)去设置对应的优先级。
8、Cortex-M3/M4有3个系统异常,复位、NMI以及硬fault,它们有固定的优先级(不可编程),并且它们的优先级号是负数,从而高于所有其它异常。所有其它异常的优先级则都是可编程的(但不能编程为负数)。

9、复位的优先级为最高、NMI第二(不可屏蔽中断)、硬fault第三,注:这三个系统异常不可编程

10、中断屏蔽寄存器有三个:PRIMASK、FAULTMASK、BASEPRI。

11、FreeRTOS操作的屏蔽中断是BASEPRI。

12、FreeRTOS任务优先级数值越小,优先级越低。

待续。。。。。。

猜你喜欢

转载自blog.csdn.net/euxnijuoh/article/details/82056502