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("WCH-Interrupt-fast"))) void
7USB_LP_CAN1_RX0_IRQHandler(void)
8{
9 using namespace LibXR::CH32UsbCanShared;
10
11 if (auto fn = usb_irq_cb.load(std::memory_order_acquire))
12 {
13 fn();
14 }
15 if (auto fn = can1_rx0_cb.load(std::memory_order_acquire))
16 {
17 fn();
18 }
19}
20
21// NOLINTNEXTLINE(readability-identifier-naming)
22extern "C" __attribute__((interrupt("WCH-Interrupt-fast"))) void
23USB_HP_CAN1_TX_IRQHandler(void)
24{
25 using namespace LibXR::CH32UsbCanShared;
26
27 if (auto fn = usb_irq_cb.load(std::memory_order_acquire))
28 {
29 fn();
30 }
31 if (auto fn = can1_tx_cb.load(std::memory_order_acquire))
32 {
33 fn();
34 }
35}
36
37#endif