stm32f0: gpio: rcc: separate GPIO and RCC setup
This commit is contained in:
parent
eaa61e50af
commit
ea142b75fe
9 changed files with 54 additions and 19 deletions
2
Makefile
2
Makefile
|
@ -18,6 +18,8 @@ CFLAGS += -Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes
|
||||||
CFLAGS += -Os
|
CFLAGS += -Os
|
||||||
LDFLAGS += -Os
|
LDFLAGS += -Os
|
||||||
|
|
||||||
|
-include source/Makefile
|
||||||
|
|
||||||
obj-y += source/bitops.o
|
obj-y += source/bitops.o
|
||||||
obj-y += source/main.o
|
obj-y += source/main.o
|
||||||
|
|
||||||
|
|
1
source/Makefile
Normal file
1
source/Makefile
Normal file
|
@ -0,0 +1 @@
|
||||||
|
-include source/platform/Makefile
|
|
@ -2,7 +2,6 @@
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include <libopencm3/stm32/rcc.h>
|
|
||||||
#include <libopencm3/stm32/gpio.h>
|
#include <libopencm3/stm32/gpio.h>
|
||||||
#include <libopencm3/stm32/spi.h>
|
#include <libopencm3/stm32/spi.h>
|
||||||
#include <libopencm3/stm32/usart.h>
|
#include <libopencm3/stm32/usart.h>
|
||||||
|
@ -18,18 +17,6 @@ static struct spi_ops stm32f0_spi_ops = {
|
||||||
|
|
||||||
static void stm32f0_spi_init(void)
|
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_master_mode(SPI1);
|
||||||
spi_set_baudrate_prescaler(SPI1, SPI_CR1_BR_FPCLK_DIV_64);
|
spi_set_baudrate_prescaler(SPI1, SPI_CR1_BR_FPCLK_DIV_64);
|
||||||
spi_set_clock_polarity_0(SPI1);
|
spi_set_clock_polarity_0(SPI1);
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
#define _GNU_SOURCE
|
#define _GNU_SOURCE
|
||||||
#include <libopencm3/stm32/rcc.h>
|
|
||||||
#include <libopencm3/stm32/gpio.h>
|
|
||||||
#include <libopencm3/stm32/usart.h>
|
#include <libopencm3/stm32/usart.h>
|
||||||
#include <libopencm3/cm3/nvic.h>
|
#include <libopencm3/cm3/nvic.h>
|
||||||
#include <libopencm3/cm3/scb.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)
|
if (usart_get_irq_no(&irq_no, console->dev) < 0)
|
||||||
return -1;
|
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_baudrate(console->dev, 115200);
|
||||||
usart_set_databits(console->dev, 8);
|
usart_set_databits(console->dev, 8);
|
||||||
usart_set_parity(console->dev, USART_PARITY_NONE);
|
usart_set_parity(console->dev, USART_PARITY_NONE);
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include <console.h>
|
#include <console.h>
|
||||||
|
#include <gpio.h>
|
||||||
|
#include <rcc.h>
|
||||||
#include <shell.h>
|
#include <shell.h>
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
|
rcc_init();
|
||||||
|
gpio_init();
|
||||||
console_init();
|
console_init();
|
||||||
printf("TBM-dev (built on " __DATE__ ")\n");
|
printf("TBM-dev (built on " __DATE__ ")\n");
|
||||||
cmd_loop("tbm # ");
|
cmd_loop("tbm # ");
|
||||||
|
|
1
source/platform/Makefile
Normal file
1
source/platform/Makefile
Normal file
|
@ -0,0 +1 @@
|
||||||
|
-include source/platform/$(TARGET)/Makefile
|
2
source/platform/stm32f0/Makefile
Normal file
2
source/platform/stm32f0/Makefile
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
obj-y += source/platform/stm32f0/gpio.o
|
||||||
|
obj-y += source/platform/stm32f0/rcc.o
|
26
source/platform/stm32f0/gpio.c
Normal file
26
source/platform/stm32f0/gpio.c
Normal file
|
@ -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)
|
||||||
|
{
|
||||||
|
}
|
18
source/platform/stm32f0/rcc.c
Normal file
18
source/platform/stm32f0/rcc.c
Normal file
|
@ -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…
Add table
Reference in a new issue