STATIC void can_deinit(pyb_can_obj_t *can_obj) { can_obj->is_enabled = false; CAN_HandleTypeDef *can = &can_obj->can; HAL_CAN_DeInit(can); if (can->Instance == CAN1) { __CAN1_FORCE_RESET(); __CAN1_RELEASE_RESET(); __CAN1_CLK_DISABLE(); } else if (can->Instance == CAN2) { __CAN2_FORCE_RESET(); __CAN2_RELEASE_RESET(); __CAN2_CLK_DISABLE(); } }
void HAL_CAN_MspDeInit(CAN_HandleTypeDef* hcan) { if(hcan->Instance==CAN1) { /* USER CODE BEGIN CAN1_MspDeInit 0 */ /* USER CODE END CAN1_MspDeInit 0 */ /* Peripheral clock disable */ CAN1_CLK_ENABLED--; if(CAN1_CLK_ENABLED==0){ __CAN1_CLK_DISABLE(); } /**CAN1 GPIO Configuration PB8 ------> CAN1_RX PB9 ------> CAN1_TX */ HAL_GPIO_DeInit(GPIOB, CANRX1_Pin|CANTX1_Pin); /* USER CODE BEGIN CAN1_MspDeInit 1 */ /* USER CODE END CAN1_MspDeInit 1 */ } else if(hcan->Instance==CAN2) { /* USER CODE BEGIN CAN2_MspDeInit 0 */ /* USER CODE END CAN2_MspDeInit 0 */ /* Peripheral clock disable */ __CAN2_CLK_DISABLE(); CAN1_CLK_ENABLED--; if(CAN1_CLK_ENABLED==0){ __CAN1_CLK_DISABLE(); } /**CAN2 GPIO Configuration PB5 ------> CAN2_RX PB6 ------> CAN2_TX */ HAL_GPIO_DeInit(GPIOB, CANRX2_Pin|CANTX2_Pin); /* USER CODE BEGIN CAN2_MspDeInit 1 */ /* USER CODE END CAN2_MspDeInit 1 */ } }
/** * @brief This function disable the CAN by disabling the peripheral clock * @param hcan select can handle * @arg hcan_bsp1 * @arg hcan_bsp2 */ void BSP_CAN_MspDeInit(CAN_HandleTypeDef* hcan) { if (hcan == &hcan_bsp1) { /* Peripheral clock disable */ __CAN1_CLK_DISABLE(); /**CAN1 GPIO Configuration PD0 ------> CAN1_RX PD1 ------> CAN1_TX */ HAL_GPIO_DeInit(GPIOD, GPIO_PIN_0|GPIO_PIN_1); /* Peripheral interrupt Deinit*/ HAL_NVIC_DisableIRQ(CAN1_RX1_IRQn); HAL_NVIC_DisableIRQ(CAN1_RX0_IRQn); HAL_NVIC_DisableIRQ(CAN1_TX_IRQn); HAL_NVIC_DisableIRQ(CAN1_SCE_IRQn); } else if (hcan == &hcan_bsp2) { /* Peripheral clock disable */ __CAN2_CLK_DISABLE(); /**CAN2 GPIO Configuration PB12 ------> CAN2_RX PB13 ------> CAN2_TX */ HAL_GPIO_DeInit(GPIOB, GPIO_PIN_12|GPIO_PIN_13); /* Peripheral interrupt Deinit*/ HAL_NVIC_DisableIRQ(CAN2_RX1_IRQn); HAL_NVIC_DisableIRQ(CAN2_RX0_IRQn); HAL_NVIC_DisableIRQ(CAN2_TX_IRQn); HAL_NVIC_DisableIRQ(CAN2_SCE_IRQn); } }
void HAL_CAN_MspDeInit(CAN_HandleTypeDef* hcan) { if(hcan->Instance==CAN2) { /* USER CODE BEGIN CAN2_MspDeInit 0 */ /* USER CODE END CAN2_MspDeInit 0 */ /* Peripheral clock disable */ __CAN2_CLK_DISABLE(); __CAN1_CLK_DISABLE(); /**CAN2 GPIO Configuration PB5 ------> CAN2_RX PB6 ------> CAN2_TX */ HAL_GPIO_DeInit(GPIOB, GPIO_PIN_5|GPIO_PIN_6); /* USER CODE BEGIN CAN2_MspDeInit 1 */ /* USER CODE END CAN2_MspDeInit 1 */ } }