summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Palsson <karlp@tweak.net.au>2015-10-17 02:55:13 +0000
committerKarl Palsson <karlp@tweak.net.au>2015-10-17 02:55:13 +0000
commitcca0635bcdb18be5bde5c645b9733faf62da3fff (patch)
tree0bb1c1bd8eaa33978e7cf26c36a154d568143b5b
parentb76fbc06360440e414e01343cf5d79abf6c5fd5d (diff)
downloadolsndot-cca0635bcdb18be5bde5c645b9733faf62da3fff.tar.gz
olsndot-cca0635bcdb18be5bde5c645b9733faf62da3fff.tar.bz2
olsndot-cca0635bcdb18be5bde5c645b9733faf62da3fff.zip
WIP: adc-power f3
needs rcc fixups
-rw-r--r--openocd/openocd.stm32f3-disco.cfg13
-rw-r--r--tests/adc-power/Makefile.stm32f3-disco28
-rw-r--r--tests/adc-power/main-stm32f3-disco.c52
3 files changed, 93 insertions, 0 deletions
diff --git a/openocd/openocd.stm32f3-disco.cfg b/openocd/openocd.stm32f3-disco.cfg
new file mode 100644
index 0000000..066c12a
--- /dev/null
+++ b/openocd/openocd.stm32f3-disco.cfg
@@ -0,0 +1,13 @@
+source [find interface/stlink-v2.cfg]
+set WORKAREASIZE 0x4000
+source [find target/stm32f3x.cfg]
+
+# serial of my f3 disco board.
+hla_serial "S?n\x06gePQ6G\x10?"
+
+tpiu config internal swodump.stm32f3-disco.log uart off 72000000
+
+# Uncomment to reset on connect, for grabbing under WFI et al
+reset_config srst_only srst_nogate
+# reset_config srst_only srst_nogate connect_assert_srst
+
diff --git a/tests/adc-power/Makefile.stm32f3-disco b/tests/adc-power/Makefile.stm32f3-disco
new file mode 100644
index 0000000..98e06be
--- /dev/null
+++ b/tests/adc-power/Makefile.stm32f3-disco
@@ -0,0 +1,28 @@
+
+BOARD = stm32f3-disco
+PROJECT = adc-power-$(BOARD)
+BUILD_DIR = bin-$(BOARD)
+
+SHARED_DIR = ../../shared
+
+CFILES = main-$(BOARD).c
+CFILES += adc-power.c
+CFILES += trace.c trace_stdio.c
+
+VPATH += $(SHARED_DIR)
+
+INCLUDES += $(patsubst %,-I%, . $(SHARED_DIR))
+
+OPENCM3_DIR=../../libopencm3/
+
+### This section can go to an arch shared rules eventually...
+LDSCRIPT = $(OPENCM3_DIR)/lib/stm32/f3/stm32f303xc.ld
+OPENCM3_LIB = opencm3_stm32f3
+OPENCM3_DEFS = -DSTM32F3
+FP_FLAGS ?= -mfloat-abi=hard -mfpu=fpv4-sp-d16
+ARCH_FLAGS = -mthumb -mcpu=cortex-m4 $(FP_FLAGS)
+#OOCD_INTERFACE = stlink-v2
+#OOCD_TARGET = stm32f3x
+OOCD_FILE = ../../openocd/openocd.stm32f3-disco.cfg
+
+include ../../rules.mk
diff --git a/tests/adc-power/main-stm32f3-disco.c b/tests/adc-power/main-stm32f3-disco.c
new file mode 100644
index 0000000..f02e610
--- /dev/null
+++ b/tests/adc-power/main-stm32f3-disco.c
@@ -0,0 +1,52 @@
+/*
+ * Oct 2015 Karl Palsson <karlp@tweak.net.au>
+ */
+
+#include <errno.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <libopencm3/cm3/nvic.h>
+#include <libopencm3/stm32/adc.h>
+#include <libopencm3/stm32/dac.h>
+#include <libopencm3/stm32/gpio.h>
+#include <libopencm3/stm32/rcc.h>
+#include <libopencm3/stm32/usart.h>
+
+#include "trace.h"
+#include "adc-power.h"
+
+#define LED_DISCO_GREEN_PORT GPIOD
+#define LED_DISCO_GREEN_PIN GPIO12
+
+int main(void)
+{
+ int i;
+ int j = 0;
+ rcc_clock_setup_hse_3v3(&hse_8mhz_3v3[CLOCK_3V3_168MHZ]);
+ rcc_periph_clock_enable(RCC_GPIOD);
+ printf("hi guys!\n");
+ /* green led for ticking */
+ gpio_mode_setup(LED_DISCO_GREEN_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,
+ LED_DISCO_GREEN_PIN);
+
+ rcc_periph_clock_enable(RCC_GPIOA);
+ gpio_mode_setup(GPIOA, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, GPIO0);
+ gpio_mode_setup(GPIOA, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, GPIO1);
+
+ adc_power_init();
+ while (1) {
+ adc_power_task_up();
+ gpio_toggle(LED_DISCO_GREEN_PORT, LED_DISCO_GREEN_PIN);
+
+ for (i = 0; i < 0x1000000; i++) { /* Wait a bit. */
+ __asm__("NOP");
+ }
+ adc_power_task_down();
+ gpio_toggle(LED_DISCO_GREEN_PORT, LED_DISCO_GREEN_PIN);
+ for (i = 0; i < 0x1000000; i++) { /* Wait a bit. */
+ __asm__("NOP");
+ }
+ }
+
+ return 0;
+}