/** * @brief CAN MSP Initialization * This function configures the hardware resources used in this example: * - Peripheral's clock enable * - Peripheral's GPIO Configuration * @param hcan: CAN handle pointer * @retval None */ void HAL_CAN_MspInit(CAN_HandleTypeDef* hcan) { GPIO_InitTypeDef GPIO_InitStruct; /*##-1- Enable peripherals and GPIO Clocks #################################*/ /* CAN1 Periph clock enable */ CANx_CLK_ENABLE(); /* Enable GPIO clock ****************************************/ CANx_GPIO_CLK_ENABLE(); /*##-2- Configure peripheral GPIO ##########################################*/ /* CAN1 TX GPIO pin configuration */ GPIO_InitStruct.Pin = CANx_TX_PIN; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FAST; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Alternate = CANx_TX_AF; HAL_GPIO_Init(CANx_TX_GPIO_PORT, &GPIO_InitStruct); /* CAN1 RX GPIO pin configuration */ GPIO_InitStruct.Pin = CANx_RX_PIN; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FAST; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Alternate = CANx_RX_AF; HAL_GPIO_Init(CANx_TX_GPIO_PORT, &GPIO_InitStruct); }
/** * @brief Initializes the hardware * @param None * @retval None */ static void prvHardwareInit() { /* Init relays */ RELAY_Init(&switchRelay); RELAY_Init(&terminationRelay); /* Configure peripheral GPIO */ CANx_GPIO_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct; /* CAN2 TX GPIO pin configuration */ GPIO_InitStruct.Pin = CANx_TX_PIN; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FAST; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Alternate = CANx_TX_AF; HAL_GPIO_Init(CANx_TX_GPIO_PORT, &GPIO_InitStruct); /* CAN2 RX GPIO pin configuration */ GPIO_InitStruct.Pin = CANx_RX_PIN; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FAST; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Alternate = CANx_RX_AF; HAL_GPIO_Init(CANx_RX_GPIO_PORT, &GPIO_InitStruct); }
/** * @brief CAN MSP Initialization * This function configures the hardware resources used in this example: * - Peripheral's clock enable * - Peripheral's GPIO Configuration * - NVIC configuration for DMA interrupt request enable * @param hcan: CAN handle pointer * @retval None */ void HAL_CAN_MspInit(CAN_HandleTypeDef* hcan) { GPIO_InitTypeDef GPIO_InitStruct; /*##-1- Enable peripherals and GPIO Clocks #################################*/ /* CAN1 Periph clock enable */ CANx_CLK_ENABLE(); /* Enable GPIO clock ****************************************/ CANx_GPIO_CLK_ENABLE(); /*##-2- Configure peripheral GPIO ##########################################*/ /* CAN1 TX GPIO pin configuration */ GPIO_InitStruct.Pin = CANx_TX_PIN; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FAST; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Alternate = CANx_TX_AF; HAL_GPIO_Init(CANx_TX_GPIO_PORT, &GPIO_InitStruct); /* CAN1 RX GPIO pin configuration */ GPIO_InitStruct.Pin = CANx_RX_PIN; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FAST; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Alternate = CANx_RX_AF; HAL_GPIO_Init(CANx_TX_GPIO_PORT, &GPIO_InitStruct); /*##-3- Configure the NVIC #################################################*/ /* NVIC configuration for CAN1 Reception complete interrupt */ HAL_NVIC_SetPriority(CANx_RX_IRQn, 1, 0); HAL_NVIC_EnableIRQ(CANx_RX_IRQn); }
void HAL_CAN_MspInit(CAN_HandleTypeDef* hcan) { (void)hcan; __HAL_RCC_CAN1_CLK_ENABLE(); // Must always enable CAN1 clk even if we only use CAN2 { __HAL_RCC_CAN1_CLK_ENABLE(); __HAL_RCC_CAN2_CLK_ENABLE(); } CANx_CLK_ENABLE(); CANx_GPIO_CLK_ENABLE(); HAL_GPIO_Init(CANx_TX_GPIO_PORT, &(GPIO_InitTypeDef){ .Pin = CANx_TX_PIN, .Mode = GPIO_MODE_AF_PP, .Speed = GPIO_SPEED_FAST, .Pull = GPIO_NOPULL, //GPIO_PULLUP, .Alternate = CANx_TX_AF, });