stm32f0: gpio: rcc: separate GPIO and RCC setup

tags/0.1.0
S.J.R. van Schaik 7 years ago
parent eaa61e50af
commit ea142b75fe
  1. 2
      Makefile
  2. 1
      source/Makefile
  3. 13
      source/drivers/stm32f0_spi.c
  4. 6
      source/drivers/usart_console.c
  5. 4
      source/main.c
  6. 1
      source/platform/Makefile
  7. 2
      source/platform/stm32f0/Makefile
  8. 26
      source/platform/stm32f0/gpio.c
  9. 18
      source/platform/stm32f0/rcc.c

@ -18,6 +18,8 @@ CFLAGS += -Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes
CFLAGS += -Os
LDFLAGS += -Os
-include source/Makefile
obj-y += source/bitops.o
obj-y += source/main.o

@ -0,0 +1 @@
-include source/platform/Makefile

@ -2,7 +2,6 @@
#include <stdint.h>
#include <stdlib.h>
#include <libopencm3/stm32/rcc.h>
#include <libopencm3/stm32/gpio.h>
#include <libopencm3/stm32/spi.h>
#include <libopencm3/stm32/usart.h>
@ -18,18 +17,6 @@ static struct spi_ops stm32f0_spi_ops = {
static void stm32f0_spi_init(void)
{
/* Set up clocks for SPI 1 */
//rcc_clock_setup_in_hsi_out_48mhz();
//rcc_periph_clock_enable(RCC_GPIOA);
rcc_periph_clock_enable(RCC_GPIOB);
rcc_periph_clock_enable(RCC_SPI1);
/* Set up GPIOs for SPI 1 */
gpio_mode_setup(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO4);
gpio_set(GPIOA, GPIO4);
gpio_mode_setup(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO3 | GPIO4 | GPIO5);
gpio_set_af(GPIOB, GPIO_AF0, GPIO3 | GPIO4 | GPIO5);
spi_set_master_mode(SPI1);
spi_set_baudrate_prescaler(SPI1, SPI_CR1_BR_FPCLK_DIV_64);
spi_set_clock_polarity_0(SPI1);

@ -1,6 +1,4 @@
#define _GNU_SOURCE
#include <libopencm3/stm32/rcc.h>
#include <libopencm3/stm32/gpio.h>
#include <libopencm3/stm32/usart.h>
#include <libopencm3/cm3/nvic.h>
#include <libopencm3/cm3/scb.h>
@ -151,10 +149,6 @@ static int usart_init(struct usart_console *console)
if (usart_get_irq_no(&irq_no, console->dev) < 0)
return -1;
/* Set up clocks for USART 1 */
rcc_periph_clock_enable(RCC_GPIOA);
rcc_periph_clock_enable(RCC_USART1);
usart_set_baudrate(console->dev, 115200);
usart_set_databits(console->dev, 8);
usart_set_parity(console->dev, USART_PARITY_NONE);

@ -1,10 +1,14 @@
#include <stdio.h>
#include <console.h>
#include <gpio.h>
#include <rcc.h>
#include <shell.h>
int main(void)
{
rcc_init();
gpio_init();
console_init();
printf("TBM-dev (built on " __DATE__ ")\n");
cmd_loop("tbm # ");

@ -0,0 +1 @@
-include source/platform/$(TARGET)/Makefile

@ -0,0 +1,2 @@
obj-y += source/platform/stm32f0/gpio.o
obj-y += source/platform/stm32f0/rcc.o

@ -0,0 +1,26 @@
#include <libopencm3/stm32/gpio.h>
#include <gpio.h>
int gpio_init(void)
{
/* Set up GPIOs for SPI 1 */
gpio_mode_setup(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO4);
gpio_set(GPIOA, GPIO4);
gpio_mode_setup(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO3 | GPIO4 | GPIO5);
gpio_set_af(GPIOB, GPIO_AF0, GPIO3 | GPIO4 | GPIO5);
/* Set up GPIOs for user console (USART 1) */
gpio_mode_setup(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO9 | GPIO10);
gpio_set_af(GPIOA, GPIO_AF1, GPIO9 | GPIO10);
/* Set up GPIOs for admin console (USART 2) */
gpio_mode_setup(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO2 | GPIO3);
gpio_set_af(GPIOA, GPIO_AF1, GPIO2 | GPIO3);
return 0;
}
void gpio_cleanup(void)
{
}

@ -0,0 +1,18 @@
#include <libopencm3/stm32/rcc.h>
#include <rcc.h>
int rcc_init(void)
{
rcc_periph_clock_enable(RCC_GPIOA);
rcc_periph_clock_enable(RCC_GPIOB);
rcc_periph_clock_enable(RCC_SPI1);
rcc_periph_clock_enable(RCC_USART1);
rcc_periph_clock_enable(RCC_USART2);
return 0;
}
void rcc_cleanup(void)
{
}
Loading…
Cancel
Save