ตัวอย่างสมบูรณ์ — โพล RX FIFO ครั้งเดียวต่อรอบ
can_monitor_ui.c
static void can_poll_rx(void)
{
uint32_t irq = Cy_CANFD_GetInterruptStatus(CANBUS_HW, CANBUS_CHANNEL);
if (0U != (irq & CY_CANFD_RX_FIFO_0_NEW_MESSAGE)) {
if (CY_CANFD_SUCCESS ==
Cy_CANFD_GetFIFOTop(CANBUS_HW, CANBUS_CHANNEL, 0U, &g_rx_buf)) {
g_last_rx_id = g_r0.id;
g_last_rx_dlc = g_r1.dlc;
}
Cy_CANFD_AckRxFifo(CANBUS_HW, CANBUS_CHANNEL, 0U);
}
}