i2c.c 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #include "i2c.h"
  2. I2C_HandleTypeDef hi2c2;
  3. void MX_I2C1_Init(void)
  4. {
  5. hi2c2.Instance = I2C2;
  6. hi2c2.Init.ClockSpeed = 100000;
  7. hi2c2.Init.DutyCycle = I2C_DUTYCYCLE_2;
  8. hi2c2.Init.OwnAddress1 = 0;
  9. hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
  10. hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
  11. hi2c2.Init.OwnAddress2 = 0;
  12. hi2c2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
  13. hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
  14. HAL_I2C_Init(&hi2c2);
  15. }
  16. //
  17. void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)
  18. {
  19. GPIO_InitTypeDef GPIO_InitStruct = {0};
  20. if(i2cHandle->Instance==I2C2)
  21. {
  22. __HAL_RCC_GPIOA_CLK_ENABLE();
  23. __HAL_RCC_GPIOC_CLK_ENABLE();
  24. GPIO_InitStruct.Pin = GPIO_PIN_8;
  25. GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
  26. GPIO_InitStruct.Pull = GPIO_PULLUP;
  27. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  28. GPIO_InitStruct.Alternate = GPIO_AF4_I2C2;
  29. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  30. GPIO_InitStruct.Pin = GPIO_PIN_4;
  31. GPIO_InitStruct.Alternate = GPIO_AF4_I2C2;
  32. HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
  33. __HAL_RCC_I2C2_CLK_ENABLE();
  34. }
  35. }
  36. void HAL_I2C_MspDeInit(I2C_HandleTypeDef* i2cHandle)
  37. {
  38. if(i2cHandle->Instance==I2C1)
  39. {
  40. __HAL_RCC_I2C2_CLK_DISABLE();
  41. HAL_GPIO_DeInit(GPIOA, GPIO_PIN_8);
  42. HAL_GPIO_DeInit(GPIOC, GPIO_PIN_4);
  43. }
  44. }