以下是一个简单的示例代码框架,展示了如何使用 GD32 的 HAL 库配置和使用 I2C 总线进行基本的数据传输:
c#include "gd32f3xx_hal.h"
I2C_HandleTypeDef hi2c;
void I2C_Init(void)
{
hi2c.Instance = I2C0;
hi2c.Init.ClockSpeed = 400000; // 设置时钟速率为 400kHz
hi2c.Init.DutyCycle = I2C_DUTYCYCLE_2; // 设置占空比为 2
hi2c.Init.OwnAddress1 = 0;
hi2c.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
hi2c.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
hi2c.Init.OwnAddress2 = 0;
hi2c.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
hi2c.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
HAL_I2C_Init(&hi2c);
}
void I2C_Transfer(uint16_t dev_addr, uint8_t *data, uint16_t size)
{
HAL_I2C_Master_Transmit(&hi2c, dev_addr, data, size, HAL_MAX_DELAY);
}
int main(void)
{
uint8_t tx_data[] = {0x01, 0x02, 0x03};
uint8_t rx_data[3];
HAL_Init();
I2C_Init();
while (1)
{
// 发送数据
I2C_Transfer(0x50, tx_data, sizeof(tx_data));
// 接收数据
HAL_I2C_Master_Receive(&hi2c, 0x50, rx_data, sizeof(rx_data), HAL_MAX_DELAY);
}
}
|