2015-06-29 2 views
0

Я пытаюсь создать очень простую программу тестирования i2c для запуска на моем STM32L0 (набор для обнаружения). Я изменил программу miniblink в libopencm3-examples/examples/stm32/l0/stm32l0538-disco.Могу ли я использовать libopencm3 для написания программы i2c на моем STM32L0?

Но если я просто включить заголовочный файл i2c:

#include <libopencm3/stm32/i2c.h> 

И запустить сделать я получаю ошибку:

../../../../../libopencm3//include/libopencm3/stm32/i2c.h:36:9: error: #error "stm32 family not defined." 

При расследовании этого файла он появляется, что существуют правила, определенные для каждого из другие модели, но не для l0, почему это? Не поддерживает ли libopencm3 i2c в серии STM32L0?

#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/STM32/l1/i2c.h, и все это, кажется, делает это импортировать общий i2c библиотеку в любом случае. Есть ли способ, которым я могу просто использовать библиотеку i2c для l1?

Благодаря

+0

Возможно, он еще не реализован? – leppie

+0

Это то, что я подозреваю ... но я не был уверен – k212

+0

Документы, похоже, подразумевают, что это было, хотя ... http://libopencm3.github.io/docs/latest/stm32l0/html/group__i2c__defines.html – k212

ответ

0

STM32L0 конкретный заголовок должен быть добавлен.
хотя (общий файл заголовка i2c может быть использован).
общий заголовок не предназначен для непосредственного включения (для обеспечения безопасности и уменьшения головной боли). (Он имеет includer чек)

решение:
вы должны проверить "i2c_common_all.h", если она имеет правильную Defination регистров для l0 (probebly да), а затем скопировать STM32/l1/i2c.h для STM32/l0 /i2c.h и добавил (последние две строки) в STM32/i2c.h

#elif defined(STM32L1) 
#  include <libopencm3/stm32/l1/i2c.h> 
#elif defined(STM32L0) 
#  include <libopencm3/stm32/l0/i2c.h> 

и сделать модификацию Lib/STM32/l0/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 вручную.

Смежные вопросы