<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>MPC5xxxのトピックCAN Interrupt error when using FreeRtos</title>
    <link>https://community.nxp.com/t5/MPC5xxx/CAN-Interrupt-error-when-using-FreeRtos/m-p/769761#M11054</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; I am using CAN COM API provided by the official, I demonstrated the "callback" demo, it's no problem. However when I combined that with FreeRtos project, there is always an error at Callback function. I just learn FreeRtos for several days, so is there anyone can help me check the code, and give some suggestion.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;this is my code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* FreeRTOS kernel includes. */&lt;BR /&gt;#include "FreeRTOS.h"&lt;BR /&gt;#include "task.h"&lt;BR /&gt;#include "queue.h"&lt;BR /&gt;#include "timers.h"&lt;BR /&gt;#include "event_groups.h"&lt;/P&gt;&lt;P&gt;/* Freescale includes. */&lt;BR /&gt;#include "fsl_device_registers.h"&lt;BR /&gt;#include "fsl_debug_console.h"&lt;BR /&gt;#include "board.h"&lt;/P&gt;&lt;P&gt;/* User include. */&lt;BR /&gt;#include "can.h"&lt;BR /&gt;#include "pin_mux.h"&lt;BR /&gt;#include &amp;lt;stdbool.h&amp;gt;&lt;BR /&gt;/*******************************************************************************&lt;BR /&gt; * Definitions&lt;BR /&gt; ******************************************************************************/&lt;/P&gt;&lt;P&gt;#define B0 (1 &amp;lt;&amp;lt; 0)&lt;BR /&gt;#define B1 (1 &amp;lt;&amp;lt; 1)&lt;BR /&gt;#define TICKRATE_HZ (1000) /* 1000 ticks per second */&lt;BR /&gt;#define TRANSMIT_PERIOD (100) /* milliseconds between transmission */&lt;/P&gt;&lt;P&gt;#define ECHO_BUFFER_LENGTH 20&lt;/P&gt;&lt;P&gt;#define CAN0_IRQ CAN0_IRQ0_IRQn&lt;BR /&gt;#define CAN1_IRQ CAN1_IRQ0_IRQn&lt;/P&gt;&lt;P&gt;#define CAN0_NVIC_PRIO 0&lt;BR /&gt;/* The software timer period. */&lt;BR /&gt;#define SW_TIMER_PERIOD_MS (1000 / portTICK_PERIOD_MS)&lt;BR /&gt;/*******************************************************************************&lt;BR /&gt; * Variables&lt;BR /&gt; ******************************************************************************/&lt;BR /&gt;can_handle_t g_canHandle0;&lt;BR /&gt;can_handle_t g_canHandle1;&lt;/P&gt;&lt;P&gt;volatile bool CAN0rxBufferEmpty = true;&lt;BR /&gt;volatile bool CAN0rxOnGoing = false;&lt;/P&gt;&lt;P&gt;/* handle for non-blocking receive for message buffer 0 */&lt;BR /&gt;static can_mb_transfer_t mb0rxfer;&lt;BR /&gt;/*******************************************************************************&lt;BR /&gt; * Prototypes&lt;BR /&gt; ******************************************************************************/&lt;BR /&gt;static void write_task_1(void *pvParameters);&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/* USART user callback */&lt;BR /&gt;void CAN0_Callback(CAN_Type *base, can_handle_t *handle, status_t status, uint32_t result, void *userData);&lt;BR /&gt;void SwTimerCallback(TimerHandle_t xTimer);&lt;BR /&gt;/*******************************************************************************&lt;BR /&gt; * Globals&lt;BR /&gt; ******************************************************************************/&lt;/P&gt;&lt;P&gt;/*******************************************************************************&lt;BR /&gt; * Code&lt;BR /&gt; ******************************************************************************/&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/*!&lt;BR /&gt; * @brief Main function&lt;BR /&gt; */&lt;BR /&gt;int main(void)&lt;BR /&gt;{&lt;BR /&gt; can_config_t config;&lt;BR /&gt; can_frame_t rxmb0msg;&lt;BR /&gt; TimerHandle_t SwTimerHandle = NULL;&lt;BR /&gt; /* Define the init structure for the output LED pin*/&lt;BR /&gt; gpio_pin_config_t led_config = {&lt;BR /&gt; kGPIO_DigitalOutput, 0,&lt;BR /&gt; };&lt;/P&gt;&lt;P&gt;/* Board pin, clock, debug console init */&lt;BR /&gt; /* attach 12 MHz clock to FLEXCOMM0 (debug console) */&lt;BR /&gt; CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);&lt;BR /&gt; CLOCK_EnableClock(kCLOCK_Gpio0);&lt;BR /&gt; CLOCK_EnableClock(kCLOCK_Gpio1);&lt;BR /&gt; CLOCK_EnableClock(kCLOCK_Gpio2);&lt;BR /&gt; CLOCK_EnableClock(kCLOCK_Gpio3);&lt;/P&gt;&lt;P&gt;/* attach 12 MHz clock to FLEXCOMM0 (debug console) */&lt;BR /&gt; CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);&lt;/P&gt;&lt;P&gt;BOARD_InitPins();&lt;BR /&gt; BOARD_BootClockFROHF96M();&lt;BR /&gt; BOARD_InitDebugConsole();&lt;/P&gt;&lt;P&gt;/* Init output LED GPIO. */&lt;BR /&gt; GPIO_PinInit(GPIO, BOARD_LED1_GPIO_PORT, BOARD_LED1_GPIO_PIN, &amp;amp;led_config);&lt;BR /&gt; GPIO_WritePinOutput(GPIO, BOARD_LED1_GPIO_PORT, BOARD_LED1_GPIO_PIN, 1);&lt;BR /&gt; GPIO_PinInit(GPIO, BOARD_LED2_GPIO_PORT, BOARD_LED2_GPIO_PIN, &amp;amp;led_config);&lt;BR /&gt; GPIO_WritePinOutput(GPIO, BOARD_LED2_GPIO_PORT, BOARD_LED2_GPIO_PIN, 1);&lt;BR /&gt; GPIO_PinInit(GPIO, BOARD_LED3_GPIO_PORT, BOARD_LED3_GPIO_PIN, &amp;amp;led_config);&lt;BR /&gt; GPIO_WritePinOutput(GPIO, BOARD_LED3_GPIO_PORT, BOARD_LED3_GPIO_PIN, 1);&lt;/P&gt;&lt;P&gt;/* configure for 4Mbps data 1Mbps nominal, CAN-FD */&lt;BR /&gt; CAN_GetDefaultConfig(&amp;amp;config);&lt;BR /&gt; config.baseAddress = 0x20010000;&lt;BR /&gt; config.nominalBaudRate = 1000000;&lt;BR /&gt; config.dataBaudRate = 4000000;&lt;BR /&gt; config.timestampClock_Hz = 100000;&lt;/P&gt;&lt;P&gt;/* Set CAN0 interrupt priority higher. */&lt;BR /&gt; NVIC_SetPriority(CAN0_IRQ, CAN0_NVIC_PRIO+1);&lt;BR /&gt; EnableIRQ(CAN0_IRQ);&lt;/P&gt;&lt;P&gt;CAN_Init(CAN0, &amp;amp;config, SystemCoreClock);&lt;/P&gt;&lt;P&gt;/* receive 0x100 in CAN0 rx message buffer 0 by setting mask 0 */&lt;BR /&gt; CAN_SetRxIndividualMask(CAN0, 0, CAN_RX_MB_STD(0x52, 0));&lt;BR /&gt; /* receive 0x100 in CAN0 rx message buffer 0 by setting mask 1 */&lt;BR /&gt; CAN_SetRxIndividualMask(CAN0, 1, CAN_RX_MB_STD(0x57, 0));&lt;BR /&gt; /* receive 0x00000200 (29-bit id) in CAN1 rx message buffer 1 by setting mask 3 */&lt;BR /&gt; CAN_SetRxExtIndividualMask(CAN0, 3, CAN_RX_MB_EXT_LOW(0x200, 1), CAN_RX_MB_EXT_HIGH(0x200, 1));&lt;/P&gt;&lt;P&gt;//Creat a handler to get Interrupt&lt;BR /&gt; CAN_TransferCreateHandle(CAN0, &amp;amp;g_canHandle0, CAN0_Callback, NULL);&lt;/P&gt;&lt;P&gt;/* enable CAN 0 */&lt;BR /&gt; CAN_Enable(CAN0, true);&lt;/P&gt;&lt;P&gt;mb0rxfer.frame = &amp;amp;rxmb0msg;&lt;BR /&gt; mb0rxfer.mbIdx = 0;&lt;BR /&gt; CAN_TransferReceiveNonBlocking(CAN0, &amp;amp;g_canHandle0, &amp;amp;mb0rxfer);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;xTaskCreate(write_task_1, "WRITE_TASK_1", configMINIMAL_STACK_SIZE + 38, NULL, tskIDLE_PRIORITY + 2, NULL);&lt;/P&gt;&lt;P&gt;/* Start scheduling. */&lt;BR /&gt; vTaskStartScheduler();&lt;BR /&gt; for (;;)&lt;BR /&gt; ;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;void SwTimerCallback(TimerHandle_t xTimer){&lt;BR /&gt; GPIO_TogglePinsOutput(GPIO, BOARD_LED2_GPIO_PORT, 1u &amp;lt;&amp;lt; BOARD_LED2_GPIO_PIN);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;/* CAN user callback */&lt;BR /&gt;void CAN0_Callback(CAN_Type *base, can_handle_t *handle, status_t status, uint32_t result, void *userData)&lt;BR /&gt;{&lt;BR /&gt; can_frame_t *rxmsg;&lt;BR /&gt; BaseType_t reschedule;&lt;BR /&gt; //if handle from CAN0&lt;BR /&gt; if(handle == &amp;amp;g_canHandle0)&lt;BR /&gt; {&lt;BR /&gt; /* message received into message buffer */&lt;BR /&gt; if (status == (status_t)kStatus_CAN_RxIdle)&lt;BR /&gt; {&lt;BR /&gt; /* get received message */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;rxmsg = handle-&amp;gt;mbFrameBuf[result];&lt;BR /&gt; /* toggle LED3 */&lt;BR /&gt; GPIO_TogglePinsOutput(GPIO, BOARD_LED3_GPIO_PORT, 1u &amp;lt;&amp;lt; BOARD_LED3_GPIO_PIN);&lt;BR /&gt; /* receive next message using this callback */&lt;BR /&gt; CAN_TransferReceiveNonBlocking(CAN0, &amp;amp;g_canHandle0, &amp;amp;mb0rxfer);&lt;BR /&gt; }&lt;BR /&gt; else if (status == (status_t)kStatus_CAN_RxFifoIdle)&lt;BR /&gt; {&lt;BR /&gt; /* result holds the fifo number */&lt;BR /&gt; /* get the message from handle-&amp;gt;rxFifoFrameBuf[result] */&lt;BR /&gt; }&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;// xSemaphoreGiveFromISR(handle-&amp;gt;semaphore, &amp;amp;reschedule);&lt;BR /&gt;// portYIELD_FROM_ISR(1);&lt;BR /&gt; xTaskResumeFromISR(write_task_1);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*!&lt;BR /&gt; * @brief write_task_1 function work_task mean the&lt;BR /&gt; */&lt;BR /&gt;static void write_task_1(void *pvParameters)&lt;BR /&gt;{&lt;BR /&gt; while (1)&lt;BR /&gt; {&lt;BR /&gt; GPIO_TogglePinsOutput(GPIO, BOARD_LED1_GPIO_PORT, 1u &amp;lt;&amp;lt; BOARD_LED1_GPIO_PIN);&lt;BR /&gt; vTaskDelay(1000);&lt;BR /&gt; }&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 20 May 2018 04:54:38 GMT</pubDate>
    <dc:creator>huangtianxiang</dc:creator>
    <dc:date>2018-05-20T04:54:38Z</dc:date>
    <item>
      <title>CAN Interrupt error when using FreeRtos</title>
      <link>https://community.nxp.com/t5/MPC5xxx/CAN-Interrupt-error-when-using-FreeRtos/m-p/769761#M11054</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; I am using CAN COM API provided by the official, I demonstrated the "callback" demo, it's no problem. However when I combined that with FreeRtos project, there is always an error at Callback function. I just learn FreeRtos for several days, so is there anyone can help me check the code, and give some suggestion.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;this is my code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* FreeRTOS kernel includes. */&lt;BR /&gt;#include "FreeRTOS.h"&lt;BR /&gt;#include "task.h"&lt;BR /&gt;#include "queue.h"&lt;BR /&gt;#include "timers.h"&lt;BR /&gt;#include "event_groups.h"&lt;/P&gt;&lt;P&gt;/* Freescale includes. */&lt;BR /&gt;#include "fsl_device_registers.h"&lt;BR /&gt;#include "fsl_debug_console.h"&lt;BR /&gt;#include "board.h"&lt;/P&gt;&lt;P&gt;/* User include. */&lt;BR /&gt;#include "can.h"&lt;BR /&gt;#include "pin_mux.h"&lt;BR /&gt;#include &amp;lt;stdbool.h&amp;gt;&lt;BR /&gt;/*******************************************************************************&lt;BR /&gt; * Definitions&lt;BR /&gt; ******************************************************************************/&lt;/P&gt;&lt;P&gt;#define B0 (1 &amp;lt;&amp;lt; 0)&lt;BR /&gt;#define B1 (1 &amp;lt;&amp;lt; 1)&lt;BR /&gt;#define TICKRATE_HZ (1000) /* 1000 ticks per second */&lt;BR /&gt;#define TRANSMIT_PERIOD (100) /* milliseconds between transmission */&lt;/P&gt;&lt;P&gt;#define ECHO_BUFFER_LENGTH 20&lt;/P&gt;&lt;P&gt;#define CAN0_IRQ CAN0_IRQ0_IRQn&lt;BR /&gt;#define CAN1_IRQ CAN1_IRQ0_IRQn&lt;/P&gt;&lt;P&gt;#define CAN0_NVIC_PRIO 0&lt;BR /&gt;/* The software timer period. */&lt;BR /&gt;#define SW_TIMER_PERIOD_MS (1000 / portTICK_PERIOD_MS)&lt;BR /&gt;/*******************************************************************************&lt;BR /&gt; * Variables&lt;BR /&gt; ******************************************************************************/&lt;BR /&gt;can_handle_t g_canHandle0;&lt;BR /&gt;can_handle_t g_canHandle1;&lt;/P&gt;&lt;P&gt;volatile bool CAN0rxBufferEmpty = true;&lt;BR /&gt;volatile bool CAN0rxOnGoing = false;&lt;/P&gt;&lt;P&gt;/* handle for non-blocking receive for message buffer 0 */&lt;BR /&gt;static can_mb_transfer_t mb0rxfer;&lt;BR /&gt;/*******************************************************************************&lt;BR /&gt; * Prototypes&lt;BR /&gt; ******************************************************************************/&lt;BR /&gt;static void write_task_1(void *pvParameters);&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/* USART user callback */&lt;BR /&gt;void CAN0_Callback(CAN_Type *base, can_handle_t *handle, status_t status, uint32_t result, void *userData);&lt;BR /&gt;void SwTimerCallback(TimerHandle_t xTimer);&lt;BR /&gt;/*******************************************************************************&lt;BR /&gt; * Globals&lt;BR /&gt; ******************************************************************************/&lt;/P&gt;&lt;P&gt;/*******************************************************************************&lt;BR /&gt; * Code&lt;BR /&gt; ******************************************************************************/&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/*!&lt;BR /&gt; * @brief Main function&lt;BR /&gt; */&lt;BR /&gt;int main(void)&lt;BR /&gt;{&lt;BR /&gt; can_config_t config;&lt;BR /&gt; can_frame_t rxmb0msg;&lt;BR /&gt; TimerHandle_t SwTimerHandle = NULL;&lt;BR /&gt; /* Define the init structure for the output LED pin*/&lt;BR /&gt; gpio_pin_config_t led_config = {&lt;BR /&gt; kGPIO_DigitalOutput, 0,&lt;BR /&gt; };&lt;/P&gt;&lt;P&gt;/* Board pin, clock, debug console init */&lt;BR /&gt; /* attach 12 MHz clock to FLEXCOMM0 (debug console) */&lt;BR /&gt; CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);&lt;BR /&gt; CLOCK_EnableClock(kCLOCK_Gpio0);&lt;BR /&gt; CLOCK_EnableClock(kCLOCK_Gpio1);&lt;BR /&gt; CLOCK_EnableClock(kCLOCK_Gpio2);&lt;BR /&gt; CLOCK_EnableClock(kCLOCK_Gpio3);&lt;/P&gt;&lt;P&gt;/* attach 12 MHz clock to FLEXCOMM0 (debug console) */&lt;BR /&gt; CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);&lt;/P&gt;&lt;P&gt;BOARD_InitPins();&lt;BR /&gt; BOARD_BootClockFROHF96M();&lt;BR /&gt; BOARD_InitDebugConsole();&lt;/P&gt;&lt;P&gt;/* Init output LED GPIO. */&lt;BR /&gt; GPIO_PinInit(GPIO, BOARD_LED1_GPIO_PORT, BOARD_LED1_GPIO_PIN, &amp;amp;led_config);&lt;BR /&gt; GPIO_WritePinOutput(GPIO, BOARD_LED1_GPIO_PORT, BOARD_LED1_GPIO_PIN, 1);&lt;BR /&gt; GPIO_PinInit(GPIO, BOARD_LED2_GPIO_PORT, BOARD_LED2_GPIO_PIN, &amp;amp;led_config);&lt;BR /&gt; GPIO_WritePinOutput(GPIO, BOARD_LED2_GPIO_PORT, BOARD_LED2_GPIO_PIN, 1);&lt;BR /&gt; GPIO_PinInit(GPIO, BOARD_LED3_GPIO_PORT, BOARD_LED3_GPIO_PIN, &amp;amp;led_config);&lt;BR /&gt; GPIO_WritePinOutput(GPIO, BOARD_LED3_GPIO_PORT, BOARD_LED3_GPIO_PIN, 1);&lt;/P&gt;&lt;P&gt;/* configure for 4Mbps data 1Mbps nominal, CAN-FD */&lt;BR /&gt; CAN_GetDefaultConfig(&amp;amp;config);&lt;BR /&gt; config.baseAddress = 0x20010000;&lt;BR /&gt; config.nominalBaudRate = 1000000;&lt;BR /&gt; config.dataBaudRate = 4000000;&lt;BR /&gt; config.timestampClock_Hz = 100000;&lt;/P&gt;&lt;P&gt;/* Set CAN0 interrupt priority higher. */&lt;BR /&gt; NVIC_SetPriority(CAN0_IRQ, CAN0_NVIC_PRIO+1);&lt;BR /&gt; EnableIRQ(CAN0_IRQ);&lt;/P&gt;&lt;P&gt;CAN_Init(CAN0, &amp;amp;config, SystemCoreClock);&lt;/P&gt;&lt;P&gt;/* receive 0x100 in CAN0 rx message buffer 0 by setting mask 0 */&lt;BR /&gt; CAN_SetRxIndividualMask(CAN0, 0, CAN_RX_MB_STD(0x52, 0));&lt;BR /&gt; /* receive 0x100 in CAN0 rx message buffer 0 by setting mask 1 */&lt;BR /&gt; CAN_SetRxIndividualMask(CAN0, 1, CAN_RX_MB_STD(0x57, 0));&lt;BR /&gt; /* receive 0x00000200 (29-bit id) in CAN1 rx message buffer 1 by setting mask 3 */&lt;BR /&gt; CAN_SetRxExtIndividualMask(CAN0, 3, CAN_RX_MB_EXT_LOW(0x200, 1), CAN_RX_MB_EXT_HIGH(0x200, 1));&lt;/P&gt;&lt;P&gt;//Creat a handler to get Interrupt&lt;BR /&gt; CAN_TransferCreateHandle(CAN0, &amp;amp;g_canHandle0, CAN0_Callback, NULL);&lt;/P&gt;&lt;P&gt;/* enable CAN 0 */&lt;BR /&gt; CAN_Enable(CAN0, true);&lt;/P&gt;&lt;P&gt;mb0rxfer.frame = &amp;amp;rxmb0msg;&lt;BR /&gt; mb0rxfer.mbIdx = 0;&lt;BR /&gt; CAN_TransferReceiveNonBlocking(CAN0, &amp;amp;g_canHandle0, &amp;amp;mb0rxfer);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;xTaskCreate(write_task_1, "WRITE_TASK_1", configMINIMAL_STACK_SIZE + 38, NULL, tskIDLE_PRIORITY + 2, NULL);&lt;/P&gt;&lt;P&gt;/* Start scheduling. */&lt;BR /&gt; vTaskStartScheduler();&lt;BR /&gt; for (;;)&lt;BR /&gt; ;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;void SwTimerCallback(TimerHandle_t xTimer){&lt;BR /&gt; GPIO_TogglePinsOutput(GPIO, BOARD_LED2_GPIO_PORT, 1u &amp;lt;&amp;lt; BOARD_LED2_GPIO_PIN);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;/* CAN user callback */&lt;BR /&gt;void CAN0_Callback(CAN_Type *base, can_handle_t *handle, status_t status, uint32_t result, void *userData)&lt;BR /&gt;{&lt;BR /&gt; can_frame_t *rxmsg;&lt;BR /&gt; BaseType_t reschedule;&lt;BR /&gt; //if handle from CAN0&lt;BR /&gt; if(handle == &amp;amp;g_canHandle0)&lt;BR /&gt; {&lt;BR /&gt; /* message received into message buffer */&lt;BR /&gt; if (status == (status_t)kStatus_CAN_RxIdle)&lt;BR /&gt; {&lt;BR /&gt; /* get received message */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;rxmsg = handle-&amp;gt;mbFrameBuf[result];&lt;BR /&gt; /* toggle LED3 */&lt;BR /&gt; GPIO_TogglePinsOutput(GPIO, BOARD_LED3_GPIO_PORT, 1u &amp;lt;&amp;lt; BOARD_LED3_GPIO_PIN);&lt;BR /&gt; /* receive next message using this callback */&lt;BR /&gt; CAN_TransferReceiveNonBlocking(CAN0, &amp;amp;g_canHandle0, &amp;amp;mb0rxfer);&lt;BR /&gt; }&lt;BR /&gt; else if (status == (status_t)kStatus_CAN_RxFifoIdle)&lt;BR /&gt; {&lt;BR /&gt; /* result holds the fifo number */&lt;BR /&gt; /* get the message from handle-&amp;gt;rxFifoFrameBuf[result] */&lt;BR /&gt; }&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;// xSemaphoreGiveFromISR(handle-&amp;gt;semaphore, &amp;amp;reschedule);&lt;BR /&gt;// portYIELD_FROM_ISR(1);&lt;BR /&gt; xTaskResumeFromISR(write_task_1);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*!&lt;BR /&gt; * @brief write_task_1 function work_task mean the&lt;BR /&gt; */&lt;BR /&gt;static void write_task_1(void *pvParameters)&lt;BR /&gt;{&lt;BR /&gt; while (1)&lt;BR /&gt; {&lt;BR /&gt; GPIO_TogglePinsOutput(GPIO, BOARD_LED1_GPIO_PORT, 1u &amp;lt;&amp;lt; BOARD_LED1_GPIO_PIN);&lt;BR /&gt; vTaskDelay(1000);&lt;BR /&gt; }&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 20 May 2018 04:54:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MPC5xxx/CAN-Interrupt-error-when-using-FreeRtos/m-p/769761#M11054</guid>
      <dc:creator>huangtianxiang</dc:creator>
      <dc:date>2018-05-20T04:54:38Z</dc:date>
    </item>
  </channel>
</rss>

