打印

GD32F310 iic HAL库 使用案例参考

[复制链接]
954|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
脚后跟|  楼主 | 2024-6-28 11:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
谁用过  GD32F310 iic HAL库 发个案例参考参考

使用特权

评论回复
沙发
工程师犹饿死| | 2024-6-30 12:10 | 只看该作者
#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) {
    // 系统时钟配置
    // 可根据具体需要配置系统时钟
}

使用特权

评论回复
板凳
wanduzi| | 2024-6-30 16:49 | 只看该作者
厂家没提供例子?

使用特权

评论回复
地板
wanduzi| | 2024-6-30 16:52 | 只看该作者
搜了一下,官方只有标准库啊,没看到有HAL库

使用特权

评论回复
5
大鹏2365| | 2024-6-30 23:22 | 只看该作者
GD32F310 使用 I2C 的基本步骤:
初始化 I2C 总线:

配置 I2C 的时钟速率、工作模式等参数。
初始化 GPIO 引脚作为 I2C 的 SDA 和 SCL。
配置 I2C 设备地址:

设置要通信的从设备的地址,包括读写权限位。
发送和接收数据:

使用 HAL 库提供的函数发送和接收数据。这些函数包括发送数据、接收数据、发送和接收数据的 DMA 版本等。
处理错误和中断:

实现错误处理机制,例如超时处理或错误状态处理。
配置和管理中断,以便及时响应和处理。

使用特权

评论回复
6
大鹏2365| | 2024-6-30 23:23 | 只看该作者
以下是一个简单的示例代码框架,展示了如何使用 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);
    }
}

使用特权

评论回复
7
脚后跟|  楼主 | 2024-7-3 13:49 | 只看该作者
wanduzi 发表于 2024-6-30 16:52
搜了一下,官方只有标准库啊,没看到有HAL库

D:\EmbeddedBuilder_v1.4.1.23782\examples  例子在 这个路径下面

使用特权

评论回复
8
脚后跟|  楼主 | 2024-7-3 13:51 | 只看该作者
大鹏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);   

使用特权

评论回复
9
脚后跟|  楼主 | 2024-7-3 13:53 | 只看该作者
大鹏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);   

使用特权

评论回复
10
chenjun89| | 2024-7-9 19:45 | 只看该作者
这个函数名称都和某T一样啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

16

帖子

0

粉丝