Initial support for stm32f3. Changes in makefiles, gpio.

- Makefiles now include building f3 src directory.
- Gpio support added. gpio_common_f24 changed to support also f3.
- f3 still not compiling, but f2 compile not broken (probably also f4).
This commit is contained in:
Federico Ruiz Ugalde 2013-06-25 20:10:37 -06:00 committed by Piotr Esden-Tempski
parent d7fdcefbd7
commit 3af5833b83
6 changed files with 66 additions and 8 deletions

View File

@ -35,7 +35,10 @@ SHAREDIR := $(DESTDIR)/$(PREFIX)/share/libopencm3/scripts
INSTALL := install INSTALL := install
SRCLIBDIR:= $(realpath lib) SRCLIBDIR:= $(realpath lib)
TARGETS:= stm32/f1 stm32/f2 stm32/f4 stm32/l1 lpc13xx lpc17xx lpc43xx/m4 lpc43xx/m0 lm3s lm4f efm32/efm32tg efm32/efm32g efm32/efm32lg efm32/efm32gg sam/3x sam/3n
TARGETS:= stm32/f1 stm32/f2 stm32/f3 stm32/f4 stm32/l1 lpc13xx lpc17xx \
lpc43xx/m4 lpc43xx/m0 lm3s lm4f \
efm32/efm32tg efm32/efm32g efm32/efm32lg efm32/efm32gg sam/3x sam/3n
# Be silent per default, but 'make V=1' will show all compiler calls. # Be silent per default, but 'make V=1' will show all compiler calls.
ifneq ($(V),1) ifneq ($(V),1)

View File

@ -33,8 +33,8 @@ specific memorymap.h header before including this header file.*/
/** @cond */ /** @cond */
#ifdef LIBOPENCM3_GPIO_H #ifdef LIBOPENCM3_GPIO_H
/** @endcond */ /** @endcond */
#ifndef LIBOPENCM3_GPIO_COMMON_F24_H #ifndef LIBOPENCM3_GPIO_COMMON_F234_H
#define LIBOPENCM3_GPIO_COMMON_F24_H #define LIBOPENCM3_GPIO_COMMON_F234_H
/**@{*/ /**@{*/
@ -50,13 +50,18 @@ specific memorymap.h header before including this header file.*/
#define GPIOC GPIO_PORT_C_BASE #define GPIOC GPIO_PORT_C_BASE
#define GPIOD GPIO_PORT_D_BASE #define GPIOD GPIO_PORT_D_BASE
#define GPIOE GPIO_PORT_E_BASE #define GPIOE GPIO_PORT_E_BASE
#if !defined (STM32F3)
#define GPIOF GPIO_PORT_F_BASE #define GPIOF GPIO_PORT_F_BASE
#define GPIOG GPIO_PORT_G_BASE #define GPIOG GPIO_PORT_G_BASE
#define GPIOH GPIO_PORT_H_BASE #define GPIOH GPIO_PORT_H_BASE
#define GPIOI GPIO_PORT_I_BASE #define GPIOI GPIO_PORT_I_BASE
#endif
/**@}*/ /**@}*/
/* --- GPIO registers for STM32F2 and STM32F4 --------------------------- */ /* --- GPIO registers for STM32F2, STM32F3 and STM32F4 --------------------------- */
/* Port mode register (GPIOx_MODER) */ /* Port mode register (GPIOx_MODER) */
#define GPIO_MODER(port) MMIO32(port + 0x00) #define GPIO_MODER(port) MMIO32(port + 0x00)
@ -66,10 +71,15 @@ specific memorymap.h header before including this header file.*/
#define GPIOD_MODER GPIO_MODER(GPIOD) #define GPIOD_MODER GPIO_MODER(GPIOD)
#define GPIOE_MODER GPIO_MODER(GPIOE) #define GPIOE_MODER GPIO_MODER(GPIOE)
#define GPIOF_MODER GPIO_MODER(GPIOF) #define GPIOF_MODER GPIO_MODER(GPIOF)
#if !defined (STM32F3)
#define GPIOG_MODER GPIO_MODER(GPIOG) #define GPIOG_MODER GPIO_MODER(GPIOG)
#define GPIOH_MODER GPIO_MODER(GPIOH) #define GPIOH_MODER GPIO_MODER(GPIOH)
#define GPIOI_MODER GPIO_MODER(GPIOI) #define GPIOI_MODER GPIO_MODER(GPIOI)
#endif
/* Port output type register (GPIOx_OTYPER) */ /* Port output type register (GPIOx_OTYPER) */
#define GPIO_OTYPER(port) MMIO32(port + 0x04) #define GPIO_OTYPER(port) MMIO32(port + 0x04)
#define GPIOA_OTYPER GPIO_OTYPER(GPIOA) #define GPIOA_OTYPER GPIO_OTYPER(GPIOA)
@ -78,10 +88,15 @@ specific memorymap.h header before including this header file.*/
#define GPIOD_OTYPER GPIO_OTYPER(GPIOD) #define GPIOD_OTYPER GPIO_OTYPER(GPIOD)
#define GPIOE_OTYPER GPIO_OTYPER(GPIOE) #define GPIOE_OTYPER GPIO_OTYPER(GPIOE)
#define GPIOF_OTYPER GPIO_OTYPER(GPIOF) #define GPIOF_OTYPER GPIO_OTYPER(GPIOF)
#if !defined (STM32F3)
#define GPIOG_OTYPER GPIO_OTYPER(GPIOG) #define GPIOG_OTYPER GPIO_OTYPER(GPIOG)
#define GPIOH_OTYPER GPIO_OTYPER(GPIOH) #define GPIOH_OTYPER GPIO_OTYPER(GPIOH)
#define GPIOI_OTYPER GPIO_OTYPER(GPIOI) #define GPIOI_OTYPER GPIO_OTYPER(GPIOI)
#endif
/* Port output speed register (GPIOx_OSPEEDR) */ /* Port output speed register (GPIOx_OSPEEDR) */
#define GPIO_OSPEEDR(port) MMIO32(port + 0x08) #define GPIO_OSPEEDR(port) MMIO32(port + 0x08)
#define GPIOA_OSPEEDR GPIO_OSPEEDR(GPIOA) #define GPIOA_OSPEEDR GPIO_OSPEEDR(GPIOA)
@ -90,10 +105,15 @@ specific memorymap.h header before including this header file.*/
#define GPIOD_OSPEEDR GPIO_OSPEEDR(GPIOD) #define GPIOD_OSPEEDR GPIO_OSPEEDR(GPIOD)
#define GPIOE_OSPEEDR GPIO_OSPEEDR(GPIOE) #define GPIOE_OSPEEDR GPIO_OSPEEDR(GPIOE)
#define GPIOF_OSPEEDR GPIO_OSPEEDR(GPIOF) #define GPIOF_OSPEEDR GPIO_OSPEEDR(GPIOF)
#if !defined (STM32F3)
#define GPIOG_OSPEEDR GPIO_OSPEEDR(GPIOG) #define GPIOG_OSPEEDR GPIO_OSPEEDR(GPIOG)
#define GPIOH_OSPEEDR GPIO_OSPEEDR(GPIOH) #define GPIOH_OSPEEDR GPIO_OSPEEDR(GPIOH)
#define GPIOI_OSPEEDR GPIO_OSPEEDR(GPIOI) #define GPIOI_OSPEEDR GPIO_OSPEEDR(GPIOI)
#endif
/* Port pull-up/pull-down register (GPIOx_PUPDR) */ /* Port pull-up/pull-down register (GPIOx_PUPDR) */
#define GPIO_PUPDR(port) MMIO32(port + 0x0c) #define GPIO_PUPDR(port) MMIO32(port + 0x0c)
#define GPIOA_PUPDR GPIO_PUPDR(GPIOA) #define GPIOA_PUPDR GPIO_PUPDR(GPIOA)
@ -102,10 +122,15 @@ specific memorymap.h header before including this header file.*/
#define GPIOD_PUPDR GPIO_PUPDR(GPIOD) #define GPIOD_PUPDR GPIO_PUPDR(GPIOD)
#define GPIOE_PUPDR GPIO_PUPDR(GPIOE) #define GPIOE_PUPDR GPIO_PUPDR(GPIOE)
#define GPIOF_PUPDR GPIO_PUPDR(GPIOF) #define GPIOF_PUPDR GPIO_PUPDR(GPIOF)
#if !defined (STM32F3)
#define GPIOG_PUPDR GPIO_PUPDR(GPIOG) #define GPIOG_PUPDR GPIO_PUPDR(GPIOG)
#define GPIOH_PUPDR GPIO_PUPDR(GPIOH) #define GPIOH_PUPDR GPIO_PUPDR(GPIOH)
#define GPIOI_PUPDR GPIO_PUPDR(GPIOI) #define GPIOI_PUPDR GPIO_PUPDR(GPIOI)
#endif
/* Port input data register (GPIOx_IDR) */ /* Port input data register (GPIOx_IDR) */
#define GPIO_IDR(port) MMIO32(port + 0x10) #define GPIO_IDR(port) MMIO32(port + 0x10)
#define GPIOA_IDR GPIO_IDR(GPIOA) #define GPIOA_IDR GPIO_IDR(GPIOA)
@ -114,10 +139,15 @@ specific memorymap.h header before including this header file.*/
#define GPIOD_IDR GPIO_IDR(GPIOD) #define GPIOD_IDR GPIO_IDR(GPIOD)
#define GPIOE_IDR GPIO_IDR(GPIOE) #define GPIOE_IDR GPIO_IDR(GPIOE)
#define GPIOF_IDR GPIO_IDR(GPIOF) #define GPIOF_IDR GPIO_IDR(GPIOF)
#if !defined (STM32F3)
#define GPIOG_IDR GPIO_IDR(GPIOG) #define GPIOG_IDR GPIO_IDR(GPIOG)
#define GPIOH_IDR GPIO_IDR(GPIOH) #define GPIOH_IDR GPIO_IDR(GPIOH)
#define GPIOI_IDR GPIO_IDR(GPIOI) #define GPIOI_IDR GPIO_IDR(GPIOI)
#endif
/* Port output data register (GPIOx_ODR) */ /* Port output data register (GPIOx_ODR) */
#define GPIO_ODR(port) MMIO32(port + 0x14) #define GPIO_ODR(port) MMIO32(port + 0x14)
#define GPIOA_ODR GPIO_ODR(GPIOA) #define GPIOA_ODR GPIO_ODR(GPIOA)
@ -126,10 +156,15 @@ specific memorymap.h header before including this header file.*/
#define GPIOD_ODR GPIO_ODR(GPIOD) #define GPIOD_ODR GPIO_ODR(GPIOD)
#define GPIOE_ODR GPIO_ODR(GPIOE) #define GPIOE_ODR GPIO_ODR(GPIOE)
#define GPIOF_ODR GPIO_ODR(GPIOF) #define GPIOF_ODR GPIO_ODR(GPIOF)
#if !defined (STM32F3)
#define GPIOG_ODR GPIO_ODR(GPIOG) #define GPIOG_ODR GPIO_ODR(GPIOG)
#define GPIOH_ODR GPIO_ODR(GPIOH) #define GPIOH_ODR GPIO_ODR(GPIOH)
#define GPIOI_ODR GPIO_ODR(GPIOI) #define GPIOI_ODR GPIO_ODR(GPIOI)
#endif
/* Port bit set/reset register (GPIOx_BSRR) */ /* Port bit set/reset register (GPIOx_BSRR) */
#define GPIO_BSRR(port) MMIO32(port + 0x18) #define GPIO_BSRR(port) MMIO32(port + 0x18)
#define GPIOA_BSRR GPIO_BSRR(GPIOA) #define GPIOA_BSRR GPIO_BSRR(GPIOA)
@ -138,10 +173,15 @@ specific memorymap.h header before including this header file.*/
#define GPIOD_BSRR GPIO_BSRR(GPIOD) #define GPIOD_BSRR GPIO_BSRR(GPIOD)
#define GPIOE_BSRR GPIO_BSRR(GPIOE) #define GPIOE_BSRR GPIO_BSRR(GPIOE)
#define GPIOF_BSRR GPIO_BSRR(GPIOF) #define GPIOF_BSRR GPIO_BSRR(GPIOF)
#if !defined (STM32F3)
#define GPIOG_BSRR GPIO_BSRR(GPIOG) #define GPIOG_BSRR GPIO_BSRR(GPIOG)
#define GPIOH_BSRR GPIO_BSRR(GPIOH) #define GPIOH_BSRR GPIO_BSRR(GPIOH)
#define GPIOI_BSRR GPIO_BSRR(GPIOI) #define GPIOI_BSRR GPIO_BSRR(GPIOI)
#endif
/* Port configuration lock register (GPIOx_LCKR) */ /* Port configuration lock register (GPIOx_LCKR) */
#define GPIO_LCKR(port) MMIO32(port + 0x1c) #define GPIO_LCKR(port) MMIO32(port + 0x1c)
#define GPIOA_LCKR GPIO_LCKR(GPIOA) #define GPIOA_LCKR GPIO_LCKR(GPIOA)
@ -150,10 +190,15 @@ specific memorymap.h header before including this header file.*/
#define GPIOD_LCKR GPIO_LCKR(GPIOD) #define GPIOD_LCKR GPIO_LCKR(GPIOD)
#define GPIOE_LCKR GPIO_LCKR(GPIOE) #define GPIOE_LCKR GPIO_LCKR(GPIOE)
#define GPIOF_LCKR GPIO_LCKR(GPIOF) #define GPIOF_LCKR GPIO_LCKR(GPIOF)
#if !defined (STM32F3)
#define GPIOG_LCKR GPIO_LCKR(GPIOG) #define GPIOG_LCKR GPIO_LCKR(GPIOG)
#define GPIOH_LCKR GPIO_LCKR(GPIOH) #define GPIOH_LCKR GPIO_LCKR(GPIOH)
#define GPIOI_LCKR GPIO_LCKR(GPIOI) #define GPIOI_LCKR GPIO_LCKR(GPIOI)
#endif
/* Alternate function low register (GPIOx_AFRL) */ /* Alternate function low register (GPIOx_AFRL) */
#define GPIO_AFRL(port) MMIO32(port + 0x20) #define GPIO_AFRL(port) MMIO32(port + 0x20)
#define GPIOA_AFRL GPIO_AFRL(GPIOA) #define GPIOA_AFRL GPIO_AFRL(GPIOA)
@ -162,10 +207,15 @@ specific memorymap.h header before including this header file.*/
#define GPIOD_AFRL GPIO_AFRL(GPIOD) #define GPIOD_AFRL GPIO_AFRL(GPIOD)
#define GPIOE_AFRL GPIO_AFRL(GPIOE) #define GPIOE_AFRL GPIO_AFRL(GPIOE)
#define GPIOF_AFRL GPIO_AFRL(GPIOF) #define GPIOF_AFRL GPIO_AFRL(GPIOF)
#if !defined (STM32F3)
#define GPIOG_AFRL GPIO_AFRL(GPIOG) #define GPIOG_AFRL GPIO_AFRL(GPIOG)
#define GPIOH_AFRL GPIO_AFRL(GPIOH) #define GPIOH_AFRL GPIO_AFRL(GPIOH)
#define GPIOI_AFRL GPIO_AFRL(GPIOI) #define GPIOI_AFRL GPIO_AFRL(GPIOI)
#endif
/* Alternate function high register (GPIOx_AFRH) */ /* Alternate function high register (GPIOx_AFRH) */
#define GPIO_AFRH(port) MMIO32(port + 0x24) #define GPIO_AFRH(port) MMIO32(port + 0x24)
#define GPIOA_AFRH GPIO_AFRH(GPIOA) #define GPIOA_AFRH GPIO_AFRH(GPIOA)
@ -174,10 +224,15 @@ specific memorymap.h header before including this header file.*/
#define GPIOD_AFRH GPIO_AFRH(GPIOD) #define GPIOD_AFRH GPIO_AFRH(GPIOD)
#define GPIOE_AFRH GPIO_AFRH(GPIOE) #define GPIOE_AFRH GPIO_AFRH(GPIOE)
#define GPIOF_AFRH GPIO_AFRH(GPIOF) #define GPIOF_AFRH GPIO_AFRH(GPIOF)
#if !defined (STM32F3)
#define GPIOG_AFRH GPIO_AFRH(GPIOG) #define GPIOG_AFRH GPIO_AFRH(GPIOG)
#define GPIOH_AFRH GPIO_AFRH(GPIOH) #define GPIOH_AFRH GPIO_AFRH(GPIOH)
#define GPIOI_AFRH GPIO_AFRH(GPIOI) #define GPIOI_AFRH GPIO_AFRH(GPIOI)
#endif
/* --- GPIOx_MODER values -------------------------------------------------- */ /* --- GPIOx_MODER values -------------------------------------------------- */
#define GPIO_MODE(n, mode) (mode << (2 * (n))) #define GPIO_MODE(n, mode) (mode << (2 * (n)))
@ -298,7 +353,7 @@ END_DECLS
#endif #endif
/** @cond */ /** @cond */
#else #else
#warning "gpio_common_f24.h should not be included explicitly, only via gpio.h" #warning "gpio_common_f234.h should not be included explicitly, only via gpio.h"
#endif #endif
/** @endcond */ /** @endcond */

View File

@ -32,7 +32,7 @@ LGPL License Terms @ref lgpl_license
#define LIBOPENCM3_GPIO_H #define LIBOPENCM3_GPIO_H
#include <libopencm3/stm32/memorymap.h> #include <libopencm3/stm32/memorymap.h>
#include <libopencm3/stm32/common/gpio_common_f24.h> #include <libopencm3/stm32/common/gpio_common_f234.h>
#endif #endif

View File

@ -32,7 +32,7 @@ LGPL License Terms @ref lgpl_license
#define LIBOPENCM3_GPIO_H #define LIBOPENCM3_GPIO_H
#include <libopencm3/stm32/memorymap.h> #include <libopencm3/stm32/memorymap.h>
#include <libopencm3/stm32/common/gpio_common_f24.h> #include <libopencm3/stm32/common/gpio_common_f234.h>
#endif #endif

View File

@ -36,7 +36,7 @@ ARFLAGS = rcs
OBJS = gpio.o exti2.o rcc.o OBJS = gpio.o exti2.o rcc.o
OBJS += crc_common_all.o dac_common_all.o dma_common_f24.o \ OBJS += crc_common_all.o dac_common_all.o dma_common_f24.o \
gpio_common_all.o gpio_common_f24.o i2c_common_all.o \ gpio_common_all.o gpio_common_f234.o i2c_common_all.o \
iwdg_common_all.o rtc_common_bcd.o spi_common_all.o \ iwdg_common_all.o rtc_common_bcd.o spi_common_all.o \
timer_common_all.o timer_common_f24.o usart_common_all.o \ timer_common_all.o timer_common_f24.o usart_common_all.o \
flash_common_f24.o hash_common_f24.o crypto_common_f24.o flash_common_f24.o hash_common_f24.o crypto_common_f24.o