前言:
本期介绍在将FreeRTOS移植到ARM Cortex-M0后,已创建多个任务后,怎么编写单片机外设中断服务函数。
OS调配各个任务独自运行,各任务有各自的中断服务。因此,需要将各任务的中断行为报告OS。OS需要记录下各任务进入和退出中断的行为,这样才能全面且有效地调配各个任务运行。因此带OS和不带OS的软件系统的外设中断服务函数是不一样的。
下面以外设通用计数器GPTimer0的中断服务函数为例,介绍如何编写中断服务函数。
1. 第一种GPTimer0中断服务函数源码及说明(见源码注释)
typedef long BaseType_t;
typedef unsigned long UBaseType_t;
void GPTM0_IRQHandler(void)
{
BaseType_t xTestYieldRequired = pdFALSE;
UBaseType_t uxSavedInterruptStatus;
//
uxSavedInterruptStatus = taskENTER_CRITICAL_FROM_ISR(); // 进入临界段。嵌套数加1。关闭其他高优先级中断。
{