WIP: adc-power f3

needs rcc fixups
This commit is contained in:
Karl Palsson 2015-10-17 02:55:13 +00:00
parent b76fbc0636
commit cca0635bcd
3 changed files with 93 additions and 0 deletions

View file

@ -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

View file

@ -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

View file

@ -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;
}