首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我能用libopencm3在我的STM32L0上写一个i2c程序吗?

我能用libopencm3在我的STM32L0上写一个i2c程序吗?
EN

Stack Overflow用户
提问于 2015-06-29 06:10:39
回答 1查看 1.4K关注 0票数 0

我正在尝试创建一个非常简单的i2c测试程序,以便在我的STM32L0 (发现工具包)上运行。我在libopencm3-examples/examples/stm32/l0/stm32l0538-disco.中修改了微型眨眼程序

但是,如果我只包含i2c头文件:

代码语言:javascript
复制
#include <libopencm3/stm32/i2c.h>

然后运行make得到错误:

代码语言:javascript
复制
 ../../../../../libopencm3//include/libopencm3/stm32/i2c.h:36:9: error: #error "stm32 family not defined."

在调查这个文件时,似乎为其他模型都定义了规则,但没有为l0定义规则,为什么会这样?libopencm3不支持STM32L0系列的i2c吗?

代码语言:javascript
复制
#if defined(STM32F0)
#       include <libopencm3/stm32/f0/i2c.h>
#elif defined(STM32F1)
#       include <libopencm3/stm32/f1/i2c.h>
#elif defined(STM32F2)
#       include <libopencm3/stm32/f2/i2c.h>
#elif defined(STM32F3)
#       include <libopencm3/stm32/f3/i2c.h>
#elif defined(STM32F4)
#       include <libopencm3/stm32/f4/i2c.h>
#elif defined(STM32L1)
#       include <libopencm3/stm32/l1/i2c.h>
#else
#       error "stm32 family not defined."
#endif

我看了一下libopencm3 3/stm32 32/l1/i2c.h,它似乎只是导入了通用的i2c库。有什么办法我可以只使用i2c库l1吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-04 22:44:47

需要添加STM32L0特定的标头。

不过(可以明显地使用i2c公共头文件)。

一般的标题不打算直接包括在内(为了安全和减少头痛)。(它有更多的支票)

解决办法:

您应该检查"i2c_common_all.h“是否对l0有正确的寄存器定义(可以),然后将stm32 32/L1/i2c.h复制到stm32 32/l0/i2c.h,并将(最后两行)添加到stm32 32/i2c.h。

代码语言:javascript
复制
#elif defined(STM32L1)
#       include <libopencm3/stm32/l1/i2c.h>
#elif defined(STM32L0)
#       include <libopencm3/stm32/l0/i2c.h>

并对lib/stm32 32/10/Makefile OBJS += i2c_common_all.o进行修改

如果你想要,发送一个拉请求。

黑客:(不推荐)

代码语言:javascript
复制
#include <libopencm3/cm3/common.h>
#include <libopencm3/stm32/memorymap.h>
#define LIBOPENCM3_I2C_H
#include <libopencm3/stm32/i2c_common_all.h>

并手动包含源文件lib/stm32/common/i2c_common_all.c

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31108869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档