FreeRTOS怎么定义systick中断处理?

1, 在FreeRTOSConfig.h里,定义如下:

#define xPortSysTickHandler SysTick_Handler

2, 在启动代码里( .s或者.asm),指定了SysTick中断处理函数

DCD     SysTick_Handler           ; SysTick Handler

3, 一般FreeRTOS都有一个port.c,这个文件是厂家或者自己做porting时候主要修改的一个文件。在这个文件里实现:

void xPortSysTickHandler( void )
{
uint32_t ulPreviousMask;


ulPreviousMask = portSET_INTERRUPT_MASK_FROM_ISR();
{
/* Increment the RTOS tick. */
if( xTaskIncrementTick() != pdFALSE )
{
/* Pend a context switch. */
*(portNVIC_INT_CTRL) = portNVIC_PENDSVSET;
}
}
portCLEAR_INTERRUPT_MASK_FROM_ISR( ulPreviousMask );
}


总结一下:

1, 在port.c里实现中断处理,按照FreeRTOS要求,取个名字xPortSysTickHandler

2, 在FreeRTOSConfig.h将这个函数名字与启动代码里的SysTick_Handler对应起来

你可能感兴趣的:(FreeRTOS,FreeRTOS,Systick,嵌入式)