text: /**
    ******************************************************************************
    * File Name          : CAN.c
    * Description        : This file provides code for the configuration
    *                      of the CAN instances.
    ******************************************************************************
    * @attention
    *
    * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
    * All rights reserved.</center></h2>
    *
    * This software component is licensed by ST under Ultimate Liberty license
    * SLA0044, the "License"; You may not use this file except in compliance with
    * the License. You may obtain a copy of the License at:
    *                             www.st.com/SLA0044
    *
    ******************************************************************************
    */
  
  /* Includes ------------------------------------------------------------------*/
  #include "can.h"
  
  /* USER CODE BEGIN 0 */
  
  /* USER CODE END 0 */
  
  CAN_HandleTypeDef hcan;
  
  /* CAN init function */
  void MX_CAN_Init(void)
  {
  
    hcan.Instance = CAN1;
    hcan.Init.Prescaler = 16;
    hcan.Init.Mode = CAN_MODE_NORMAL;
    hcan.Init.SyncJumpWidth = CAN_SJW_1TQ;
    hcan.Init.TimeSeg1 = CAN_BS1_1TQ;
    hcan.Init.TimeSeg2 = CAN_BS2_1TQ;
    hcan.Init.TimeTriggeredMode = DISABLE;
    hcan.Init.AutoBusOff = DISABLE;
    hcan.Init.AutoWakeUp = DISABLE;
    hcan.Init.AutoRetransmission = DISABLE;
    hcan.Init.ReceiveFifoLocked = DISABLE;
    hcan.Init.TransmitFifoPriority = DISABLE;
    if (HAL_CAN_Init(&hcan) != HAL_OK)
    {
      Error_Handler();
    }
  
  }
  
  void HAL_CAN_MspInit(CAN_HandleTypeDef* canHandle)
  {
  
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    if(canHandle->Instance==CAN1)
    {
    /* USER CODE BEGIN CAN1_MspInit 0 */
  
    /* USER CODE END CAN1_MspInit 0 */
      /* CAN1 clock enable */
      __HAL_RCC_CAN1_CLK_ENABLE();
  
      __HAL_RCC_GPIOA_CLK_ENABLE();
      /**CAN GPIO Configuration
      PA11     ------> CAN_RX
      PA12     ------> CAN_TX
      */
      GPIO_InitStruct.Pin = GPIO_PIN_11;
      GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
      GPIO_InitStruct.Pull = GPIO_NOPULL;
      HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  
      GPIO_InitStruct.Pin = GPIO_PIN_12;
      GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
      GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
      HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  
    /* USER CODE BEGIN CAN1_MspInit 1 */
  
    /* USER CODE END CAN1_MspInit 1 */
    }
  }
  
  void HAL_CAN_MspDeInit(CAN_HandleTypeDef* canHandle)
  {
  
    if(canHandle->Instance==CAN1)
    {
    /* USER CODE BEGIN CAN1_MspDeInit 0 */
  
    /* USER CODE END CAN1_MspDeInit 0 */
      /* Peripheral clock disable */
      __HAL_RCC_CAN1_CLK_DISABLE();
  
      /**CAN GPIO Configuration
      PA11     ------> CAN_RX
      PA12     ------> CAN_TX
      */
      HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11|GPIO_PIN_12);
  
    /* USER CODE BEGIN CAN1_MspDeInit 1 */
  
    /* USER CODE END CAN1_MspDeInit 1 */
    }
  }
  
  /* USER CODE BEGIN 1 */
  
  /* USER CODE END 1 */
  
  /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
  