Hello, may I ask if creating semaphores based on FreeRTOS in TMS570LC4357 conflicts with RTI interrupts
The specific phenomenon is as follows:
When no semaphore is created in the main function, the rtiNotification interrupt of RTI can be entered;
Keep other code unchanged and add CAN1 to the main function_ Semaphore=xSemaphoreCreatBinary(); To create a semaphore,Unable to enter RTI's rtiNotification interrupt
The specific configuration is as follows:
RTI uses Block1 and compare1 for counting and enabling:
rtiREG1->CAPCTRL = 2U | 0U;//enable capture counter 1,triggered by event source 0
rtiEnableNotification(rtiREG1, rtiNOTIFICATION_COMPARE1);
rtiStartCounter(rtiREG1, rtiCOUNTER_BLOCK1);
Configure the interrupt vector table as follows:
static const t_isrFuncPTR s_vim_init[128U] =
{
&phantomInterrupt,
&esmHighInterrupt,
&phantomInterrupt,
&vPortPreemptiveTick,
&rticompare1HighLevelInterrupt,
&rticompare2HighLevelInterrupt,
......
}
The configuration of the rticompare1HighLevelInterrupt function is as follows:
#pragma CODE_STATE(rticompare1HighLevelInterrupt, 32)
#pragma INTERRUPT(rticompare1HighLevelInterrupt, IRQ)
void rticompare1HighLevelInterrupt(void)
{
rtiREG1->INTFLAG = 2U;
rtiNotification(rtiREG1,rtiNOTIFICATION_COMPARE1);
}
If there is a conflict between the FreeRTOS operating system and RTI, how can I use a watchdog
Looking forward to your reply very much, thank you very much.