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对应起来
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)