1#include "stm32_can.hpp"
3#ifdef HAL_CAN_MODULE_ENABLED
7STM32CAN* STM32CAN::map[STM32_CAN_NUMBER] = {
nullptr};
15stm32_can_id_t STM32_CAN_GetID(CAN_TypeDef* addr)
19 return stm32_can_id_t::STM32_CAN_ID_ERROR;
22 else if (addr == CAN1)
24 return stm32_can_id_t::STM32_CAN1;
28 else if (addr == CAN2)
30 return stm32_can_id_t::STM32_CAN2;
34 else if (addr == CAN3)
36 return stm32_can_id_t::STM32_CAN3;
41 return stm32_can_id_t::STM32_CAN_ID_ERROR;
45extern "C" void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef* hcan)
47 STM32CAN* can = STM32CAN::map[STM32_CAN_GetID(hcan->Instance)];
54extern "C" void HAL_CAN_RxFifo1MsgPendingCallback(CAN_HandleTypeDef* hcan)
56 STM32CAN* can = STM32CAN::map[STM32_CAN_GetID(hcan->Instance)];
63extern "C" void HAL_CAN_ErrorCallback(CAN_HandleTypeDef* hcan)
65 HAL_CAN_ResetError(hcan);
68extern "C" void HAL_CAN_TxMailbox0CompleteCallback(CAN_HandleTypeDef* hcan)
70 STM32CAN* can = STM32CAN::map[STM32_CAN_GetID(hcan->Instance)];
77extern "C" void HAL_CAN_TxMailbox1CompleteCallback(CAN_HandleTypeDef* hcan)
79 STM32CAN* can = STM32CAN::map[STM32_CAN_GetID(hcan->Instance)];
86extern "C" void HAL_CAN_TxMailbox2CompleteCallback(CAN_HandleTypeDef* hcan)
88 STM32CAN* can = STM32CAN::map[STM32_CAN_GetID(hcan->Instance)];
STM32CAN 类,用于处理 STM32 系统的 CAN 通道。 Provides handling for STM32 CAN channels.
void ProcessRxInterrupt()
处理接收中断
void ProcessTxInterrupt()
处理发送中断
LibXR Color Control Library / LibXR终端颜色控制库