Post by sora on Jul 13, 2020 16:28:15 GMT
I am trying to understand how GTM interrupt works. I copied the code from the following url into 1 file to run on Arduino IDE:
github.com/Infineon/AURIX_code_examples/tree/master/code_examples/GTM_TOM_Interrupt_1_KIT_TC297_TFT
Here is my file content:
When I check interruptGtmTom, there is nothing happened. What am I doing wrong here? How does GTM interact with interrupt?
github.com/Infineon/AURIX_code_examples/tree/master/code_examples/GTM_TOM_Interrupt_1_KIT_TC297_TFT
Here is my file content:
#define ISR_PRIORITY_TOM 1 /* Interrupt priority number */
#define TOM_FREQ 2.0f /* TOM frequency */
#define LED &MODULE_P13, 0 /* LED which will be toggled in Interrupt Service Routine (ISR) */
IfxGtm_Tom_Timer g_timerDriver; /* TOM driver */
/* Macro to define the Interrupt Service Routine. */
IFX_INTERRUPT(interruptGtmTom, 0, ISR_PRIORITY_TOM);
void interruptGtmTom(void)
{
IfxGtm_Tom_Timer_acknowledgeTimerIrq(&g_timerDriver); /* Clear the timer event */
IfxPort_togglePin(LED); /* Toggle the LED */
}
/* This function initializes the TOM */
void initGtmTom(void)
{
IfxGtm_enable(&MODULE_GTM); /* Enable GTM */
IfxGtm_Tom_Timer_Config timerConfig; /* Timer configuration */
IfxGtm_Tom_Timer_initConfig(&timerConfig, &MODULE_GTM); /* Initialize timer configuration */
timerConfig.base.frequency = TOM_FREQ; /* Set timer frequency */
timerConfig.base.isrPriority = ISR_PRIORITY_TOM; /* Set interrupt priority */
timerConfig.base.isrProvider = IfxSrc_Tos_cpu0; /* Set interrupt provider */
timerConfig.tom = IfxGtm_Tom_1; /* Define the timer used */
timerConfig.timerChannel = IfxGtm_Tom_Ch_0; /* Define the channel used */
timerConfig.clock = IfxGtm_Tom_Ch_ClkSrc_cmuFxclk3; /* Define the CMU clock used */
IfxGtm_Cmu_enableClocks(&MODULE_GTM, IFXGTM_CMU_CLKEN_FXCLK); /* Enable the CMU clock */
IfxGtm_Tom_Timer_init(&g_timerDriver, &timerConfig); /* Initialize the TOM */
IfxPort_setPinModeOutput(LED, IfxPort_OutputMode_pushPull, IfxPort_OutputIdx_general); /* Set pin mode */
IfxGtm_Tom_Timer_run(&g_timerDriver); /* Start the TOM */
}
void setup() {
// put your setup code for core 0 here, to run once:
initGtmTom();
}
void loop() {
// put your main code for core 0 here, to run repeatedly:
}
When I check interruptGtmTom, there is nothing happened. What am I doing wrong here? How does GTM interact with interrupt?