我正在尝试创建一个非常简单的i2c测试程序,以便在我的STM32L0 (发现工具包)上运行。我在libopencm3-examples/examples/stm32/l0/stm32l0538-disco.中修改了微型眨眼程序
但是,如果我只包含i2c头文件:
#include <libopencm3/stm32/i2c.h>然后运行make得到错误:
../../../../../libopencm3//include/libopencm3/stm32/i2c.h:36:9: error: #error "stm32 family not defined."在调查这个文件时,似乎为其他模型都定义了规则,但没有为l0定义规则,为什么会这样?libopencm3不支持STM32L0系列的i2c吗?
#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吗?
谢谢
发布于 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。
#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进行修改
如果你想要,发送一个拉请求。
黑客:(不推荐)
#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。
https://stackoverflow.com/questions/31108869
复制相似问题