From 5e76fe66b7cd08ac8de3dc1f297da023b4749284 Mon Sep 17 00:00:00 2001 From: Piotr Esden-Tempski Date: Fri, 17 Dec 2010 23:23:10 +0100 Subject: [PATCH] Added obldc board led test program. --- examples/Makefile | 10 ++++-- examples/obldc/Makefile | 38 ++++++++++++++++++++ examples/obldc/led/Makefile | 22 ++++++++++++ examples/obldc/led/led.c | 70 +++++++++++++++++++++++++++++++++++++ examples/obldc/led/led.ld | 31 ++++++++++++++++ 5 files changed, 169 insertions(+), 2 deletions(-) create mode 100644 examples/obldc/Makefile create mode 100644 examples/obldc/led/Makefile create mode 100644 examples/obldc/led/led.c create mode 100644 examples/obldc/led/led.ld diff --git a/examples/Makefile b/examples/Makefile index 9e4a3963..8e3cd605 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -24,7 +24,7 @@ Q := @ MAKEFLAGS += --no-print-directory endif -all: stm32-h103 mb525 other +all: stm32-h103 mb525 obldc other stm32-h103: @printf " BUILD examples/stm32-h103\n" @@ -38,6 +38,10 @@ other: @printf " BUILD examples/other\n" $(Q)$(MAKE) -C other +obldc: + @printf " BUILD examples/obldc\n" + $(Q)$(MAKE) -C obldc + clean: @printf " CLEAN examples/stm32-h103\n" $(Q)$(MAKE) -C stm32-h103 clean @@ -45,6 +49,8 @@ clean: $(Q)$(MAKE) -C mb525 clean @printf " CLEAN examples/other\n" $(Q)$(MAKE) -C other clean + @printf " CLEAN examples/obldc\n" + $(Q)$(MAKE) -C obldc clean -.PHONY: stm32-h103 mb525 other clean +.PHONY: stm32-h103 mb525 other obldc clean diff --git a/examples/obldc/Makefile b/examples/obldc/Makefile new file mode 100644 index 00000000..3c25b443 --- /dev/null +++ b/examples/obldc/Makefile @@ -0,0 +1,38 @@ +## +## This file is part of the libopenstm32 project. +## +## Copyright (C) 2010 Piotr Esden-Tempski +## +## This program is free software: you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see . +## + +# Be silent per default, but 'make V=1' will show all compiler calls. +ifneq ($(V),1) +Q := @ +# Do not print "Entering directory ...". +MAKEFLAGS += --no-print-directory +endif + +all: led + +led: + @printf " BUILD examples/obldc/led\n" + $(Q)$(MAKE) -C led + +clean: + @printf " CLEAN examples/obldc/led\n" + $(Q)$(MAKE) -C led clean + +.PHONY: led + diff --git a/examples/obldc/led/Makefile b/examples/obldc/led/Makefile new file mode 100644 index 00000000..3add5b9c --- /dev/null +++ b/examples/obldc/led/Makefile @@ -0,0 +1,22 @@ +## +## This file is part of the libopenstm32 project. +## +## Copyright (C) 2009 Uwe Hermann +## +## This program is free software: you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see . +## + +BINARY = led + +include ../../Makefile.include diff --git a/examples/obldc/led/led.c b/examples/obldc/led/led.c new file mode 100644 index 00000000..5fe30137 --- /dev/null +++ b/examples/obldc/led/led.c @@ -0,0 +1,70 @@ +/* + * This file is part of the libopenstm32 project. + * + * Copyright (C) 2009 Uwe Hermann + * Copyright (C) 2010 Piotr Esden-Tempski + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include + +/* Set STM32 to 72 MHz. */ +void clock_setup(void) +{ + rcc_clock_setup_in_hse_8mhz_out_72mhz(); + + /* Enable GPIOA clock. */ + rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPAEN); + + /* Enable GPIOB clock. */ + rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPBEN); + +} + +void gpio_setup(void) +{ + /* Set GPIO6 and 7 (in GPIO port A) to 'output push-pull'. */ + gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, + GPIO_CNF_OUTPUT_PUSHPULL, + GPIO6 | GPIO7); + + /* Set GPIO0 and 1 (in GPIO port B) to 'output push-pull'. */ + gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_50_MHZ, + GPIO_CNF_OUTPUT_PUSHPULL, + GPIO0 | GPIO1); +} + +int main(void) +{ + int i; + + clock_setup(); + gpio_setup(); + + /* Blink the LED (PC12) on the board. */ + while (1) { + gpio_toggle(GPIOA, GPIO6); /* LED on/off */ + for (i = 0; i < 800000; i++); /* Wait (needs -O0 CFLAGS). */ + gpio_toggle(GPIOA, GPIO7); /* LED on/off */ + for (i = 0; i < 800000; i++); /* Wait (needs -O0 CFLAGS). */ + gpio_toggle(GPIOB, GPIO0); /* LED on/off */ + for (i = 0; i < 800000; i++); /* Wait (needs -O0 CFLAGS). */ + gpio_toggle(GPIOB, GPIO1); /* LED on/off */ + for (i = 0; i < 800000; i++); /* Wait (needs -O0 CFLAGS). */ + } + + return 0; +} diff --git a/examples/obldc/led/led.ld b/examples/obldc/led/led.ld new file mode 100644 index 00000000..b3bb9a44 --- /dev/null +++ b/examples/obldc/led/led.ld @@ -0,0 +1,31 @@ +/* + * This file is part of the libopenstm32 project. + * + * Copyright (C) 2009 Uwe Hermann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* Linker script for Olimex STM32-H103 (STM32F103RBT6, 128K flash, 20K RAM). */ + +/* Define memory regions. */ +MEMORY +{ + rom (rx) : ORIGIN = 0x08000000, LENGTH = 128K + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K +} + +/* Include the common ld script from libopenstm32. */ +INCLUDE libopenstm32.ld +