libxr  1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
ch32_can_def.hpp
1#pragma once
2
3#include <cstdint>
4
5#include "libxr.hpp"
6#include DEF2STR(LIBXR_CH32_CONFIG_FILE)
7
14typedef enum
15{
16#if defined(CAN1)
17 CH32_CAN1,
18#endif
19#if defined(CAN2)
20 CH32_CAN2,
21#endif
22 CH32_CAN_NUMBER,
23 CH32_CAN_ID_ERROR
24} ch32_can_id_t;
25
26static_assert(CH32_CAN_NUMBER >= 1, "No CAN instance detected for this MCU");
27
31ch32_can_id_t CH32_CAN_GetID(CAN_TypeDef* addr); // NOLINT
32
36CAN_TypeDef* CH32_CAN_GetInstanceID(ch32_can_id_t id); // NOLINT
37
44static constexpr uint8_t CH32_CAN_DEFAULT_SLAVE_START_BANK = 14;
45
46static constexpr uint32_t CH32_CAN_RCC_PERIPH_MAP[] = {
47#if defined(CAN1)
48 RCC_APB1Periph_CAN1,
49#endif
50#if defined(CAN2)
51 RCC_APB1Periph_CAN2,
52#endif
53};
54
55static constexpr IRQn_Type CH32_CAN_TX_IRQ_MAP[] = {
56#if defined(CAN1)
57 USB_HP_CAN1_TX_IRQn,
58#endif
59#if defined(CAN2)
60 CAN2_TX_IRQn,
61#endif
62};
63
64static constexpr IRQn_Type CH32_CAN_RX0_IRQ_MAP[] = {
65#if defined(CAN1)
66 USB_LP_CAN1_RX0_IRQn,
67#endif
68#if defined(CAN2)
69 CAN2_RX0_IRQn,
70#endif
71};
72
73static constexpr IRQn_Type CH32_CAN_RX1_IRQ_MAP[] = {
74#if defined(CAN1)
75 CAN1_RX1_IRQn,
76#endif
77#if defined(CAN2)
78 CAN2_RX1_IRQn,
79#endif
80};
81
82static constexpr IRQn_Type CH32_CAN_SCE_IRQ_MAP[] = {
83#if defined(CAN1)
84 CAN1_SCE_IRQn,
85#endif
86#if defined(CAN2)
87 CAN2_SCE_IRQn,
88#endif
89};