【问题标题】:STM32 F334R8 I2C GPIO problem - not workingSTM32 F334R8 I2C GPIO问题 - 不工作
【发布时间】:2020-07-06 12:50:20
【问题描述】:

我有一个 Nucleo-F334R8 并且正在使用 STM32Cube IDE 版本:1.3.0 构建:5720_20200220_1053 (UTC)。 UART2 已经正常工作并且可以正确打印内容,现在我想通过 I2C 控制显示器,但 Nucleo 似乎无法为 I2C 接口初始化 GPIO。

我配置了 IOC 文件以启用 I2C 和 UART2 接口。我没有更改 I2C 接口的属性,只是启用了它。它编译成功,但是当我尝试让它运行时,它在调试控制台中说它不再响应。我对其进行了调试以查看它停止工作的位置。它在其中初始化 I2C 接口(PA14、PA15)的 GPIO。

 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

在这个方法中它停在这里:

/* Configure Alternate function mapped with the current IO */
    temp = GPIOx->AFR[position >> 3u];
    temp &= ~(0xFu << ((position & 0x07u) * 4u));
    temp |= ((GPIO_Init->Alternate) << ((position & 0x07u) * 4u));
    GPIOx->AFR[position >> 3u] = temp;

设置这些变量后:

我不知道该怎么做才能让它发挥作用。有人知道怎么做吗?

我注意到一件奇怪的事情: 当程序不再响应并且我尝试再次调试它时,它在设备上找不到目标。即使我再次禁用 I2C,它也无法在设备上找到目标。所以我创建了一个新项目,我只启用了 UART2,并让它调试。这次它调试成功,没有错误消息。然后我尝试再次上传另一个项目,其中我禁用了 I2C,这次它运行成功。当我尝试让它在启用 I2C 的情况下运行时,它仍然无法工作并且不再响应。

【问题讨论】:

    标签: stm32 stm32cubeide


    【解决方案1】:

    嗯,解决方案相当简单。您只需将 I2C SDA 和 SCL 数据线连接到不同的引脚(PA14 用于 JTAG 时钟)。根据手册应该使用PB9(sda)和PB8(scl)。

    【讨论】:

    • 这不是答案。问题不在于编程。这是一个微不足道的事实 - 您需要阅读文档。 “MAGIC 函数和库不会让您免于了解您的硬件
    猜你喜欢
    • 2020-12-19
    • 2021-12-23
    • 2022-12-15
    • 1970-01-01
    • 2021-02-11
    • 2018-08-26
    • 2021-04-02
    • 2022-01-13
    • 2021-12-27
    相关资源
    最近更新 更多