Guest User

Untitled

a guest
Oct 31st, 2020
1,489
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.98 KB | None | 0 0
  1. #include "main.h"
  2.  
  3. I2C_HandleTypeDef hi2c1;
  4.  
  5. void SystemClock_Config(void);
  6. static void MX_GPIO_Init(void);
  7. static void MX_I2C1_Init(void);
  8.  
  9.  
  10. int main(void)
  11. {
  12.  
  13. HAL_Init();
  14. SystemClock_Config();
  15.  
  16. MX_GPIO_Init();
  17. MX_I2C1_Init();
  18.  
  19. // Set pins PCA9534 in output mode (ALL pins)
  20. HAL_I2C_Mem_Write(&hi2c1, 0x20<<1, 0x03, I2C_MEMADD_SIZE_8BIT, 0x00, 1, 15000);
  21.  
  22. while (1)
  23. {
  24.  
  25. }
  26. }
  27.  
  28.  
  29. void SystemClock_Config(void)
  30. {
  31. RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  32. RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  33. RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
  34.  
  35. /** Initializes the CPU, AHB and APB busses clocks
  36. */
  37. RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
  38. RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  39. RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
  40. RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
  41. if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  42. {
  43. Error_Handler();
  44. }
  45. /** Initializes the CPU, AHB and APB busses clocks
  46. */
  47. RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  48. |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  49. RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
  50. RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  51. RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  52. RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
  53.  
  54. if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
  55. {
  56. Error_Handler();
  57. }
  58. PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_I2C1;
  59. PeriphClkInit.I2c1ClockSelection = RCC_I2C1CLKSOURCE_HSI;
  60. if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
  61. {
  62. Error_Handler();
  63. }
  64. }
  65.  
  66. static void MX_I2C1_Init(void)
  67. {
  68. hi2c1.Instance = I2C1;
  69. hi2c1.Init.Timing = 0x2000090E;
  70. hi2c1.Init.OwnAddress1 = 0;
  71. hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
  72. hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
  73. hi2c1.Init.OwnAddress2 = 0;
  74. hi2c1.Init.OwnAddress2Masks = I2C_OA2_NOMASK;
  75. hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
  76. hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
  77. if (HAL_I2C_Init(&hi2c1) != HAL_OK)
  78. {
  79. Error_Handler();
  80. }
  81.  
  82. if (HAL_I2CEx_ConfigAnalogFilter(&hi2c1, I2C_ANALOGFILTER_ENABLE) != HAL_OK)
  83. {
  84. Error_Handler();
  85. }
  86.  
  87. if (HAL_I2CEx_ConfigDigitalFilter(&hi2c1, 0) != HAL_OK)
  88. {
  89. Error_Handler();
  90. }
  91.  
  92. }
  93.  
  94. static void MX_GPIO_Init(void)
  95. {
  96. GPIO_InitTypeDef GPIO_InitStruct = {0};
  97.  
  98. /* GPIO Ports Clock Enable */
  99. __HAL_RCC_GPIOB_CLK_ENABLE();
  100.  
  101. /*Configure GPIO pin Output Level */
  102. HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET);
  103.  
  104. /*Configure GPIO pin : PB5 */
  105. GPIO_InitStruct.Pin = GPIO_PIN_5;
  106. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  107. GPIO_InitStruct.Pull = GPIO_NOPULL;
  108. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  109. HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  110.  
  111. }
  112.  
  113. void Error_Handler(void)
  114. {
  115. }
  116.  
  117. #ifdef USE_FULL_ASSERT
  118. void assert_failed(char *file, uint32_t line) {}
  119. #endif
Advertisement
Add Comment
Please, Sign In to add comment