GD32F310 iic HAL库 使用案例参考
谁用过GD32F310 iic HAL库 发个案例参考参考 #include "gd32f3xx_hal.h"void SystemClock_Config(void);
int main(void) {
HAL_Init();
SystemClock_Config();
// 初始化I2C总线
HAL_I2C_Init(&hi2c1); // 假设使用的是I2C1,具体根据实际情况选择
// 其他初始化过程
// ...
while (1) {
// 应用程序主循环
}
}
void SystemClock_Config(void) {
// 系统时钟配置
// 可根据具体需要配置系统时钟
}
厂家没提供例子? 搜了一下,官方只有标准库啊,没看到有HAL库 GD32F310 使用 I2C 的基本步骤:
初始化 I2C 总线:
配置 I2C 的时钟速率、工作模式等参数。
初始化 GPIO 引脚作为 I2C 的 SDA 和 SCL。
配置 I2C 设备地址:
设置要通信的从设备的地址,包括读写权限位。
发送和接收数据:
使用 HAL 库提供的函数发送和接收数据。这些函数包括发送数据、接收数据、发送和接收数据的 DMA 版本等。
处理错误和中断:
实现错误处理机制,例如超时处理或错误状态处理。
配置和管理中断,以便及时响应和处理。
以下是一个简单的示例代码框架,展示了如何使用 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;
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);
}
}
wanduzi 发表于 2024-6-30 16:52
搜了一下,官方只有标准库啊,没看到有HAL库
D:\EmbeddedBuilder_v1.4.1.23782\examples例子在 这个路径下面 大鹏2365 发表于 2024-6-30 23:23
以下是一个简单的示例代码框架,展示了如何使用 GD32 的 HAL 库配置和使用 I2C 总线进行基本的数据传输:
...
您用的是 STM32 的HAL库吗?我的GD32HAL 库函数原型设这样的呢 int32_t hal_i2c_master_transmit_poll(hal_i2c_dev_struct *i2c_dev, uint8_t* p_buffer,uint32_t length, uint32_t timeout_ms); 大鹏2365 发表于 2024-6-30 23:23
以下是一个简单的示例代码框架,展示了如何使用 GD32 的 HAL 库配置和使用 I2C 总线进行基本的数据传输:
...
您用的是 STM32 的HAL库吗?我的GD32HAL 库函数原型设这样的呢 int32_t hal_i2c_master_transmit_poll(hal_i2c_dev_struct *i2c_dev, uint8_t* p_buffer,uint32_t length, uint32_t timeout_ms); 这个函数名称都和某T一样啊
页:
[1]