libxr  1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
ch32_usbcan_shared.cpp
1#include "ch32_usbcan_shared.hpp"
2
3#if defined(RCC_APB1Periph_USB) && defined(CAN1) && !defined(CAN2)
4
5// NOLINTNEXTLINE(readability-identifier-naming)
6extern "C" __attribute__((interrupt)) void USB_LP_CAN1_RX0_IRQHandler(void)
7{
8 using namespace LibXR::CH32UsbCanShared;
9
10 if (auto fn = usb_irq_cb.load(std::memory_order_acquire))
11 {
12 fn();
13 }
14 if (auto fn = can1_rx0_cb.load(std::memory_order_acquire))
15 {
16 fn();
17 }
18}
19
20// NOLINTNEXTLINE(readability-identifier-naming)
21extern "C" __attribute__((interrupt)) void USB_HP_CAN1_TX_IRQHandler(void)
22{
23 using namespace LibXR::CH32UsbCanShared;
24
25 if (auto fn = usb_irq_cb.load(std::memory_order_acquire))
26 {
27 fn();
28 }
29 if (auto fn = can1_tx_cb.load(std::memory_order_acquire))
30 {
31 fn();
32 }
33}
34
35#endif