aboutsummaryrefslogtreecommitdiffstats
path: root/wirish/boards.cpp
diff options
context:
space:
mode:
authorMarti Bolivar <mbolivar@leaflabs.com>2012-03-26 22:17:47 -0400
committerMarti Bolivar <mbolivar@leaflabs.com>2012-04-11 16:56:56 -0400
commit28825b6a2f66b0329229185eb9cbd9004fae4b1b (patch)
treee9714efb41196c4492b68ff878974d01981708cd /wirish/boards.cpp
parent7a400b065167beda0a1a9c642954e08581bc0c29 (diff)
downloadlibrambutan-28825b6a2f66b0329229185eb9cbd9004fae4b1b.tar.gz
librambutan-28825b6a2f66b0329229185eb9cbd9004fae4b1b.zip
Resurrect ADC support.
Standard refactoring: add series headers for F1 and F2, along with series adc.c files. There are some issues relating to adc_extsel_event to hammer out later, but this will do for now. We also add some new portability interfaces to libmaple/adc.h in order for Wirish to use the same code to initialize the ADCs at init() time. As usual, F1 is untested. Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
Diffstat (limited to 'wirish/boards.cpp')
-rw-r--r--wirish/boards.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/wirish/boards.cpp b/wirish/boards.cpp
index 04b359f..54807d3 100644
--- a/wirish/boards.cpp
+++ b/wirish/boards.cpp
@@ -54,6 +54,7 @@
static void setup_flash(void);
static void setup_clocks(void);
static void setup_nvic(void);
+static void setup_adcs(void);
/*
* Exported functions
@@ -65,7 +66,7 @@ void init(void) {
setup_nvic();
systick_init(SYSTICK_RELOAD_VAL);
wirish::priv::board_setup_gpio();
- wirish::priv::board_setup_adc();
+ setup_adcs();
wirish::priv::board_setup_timers();
wirish::priv::board_setup_usb();
boardInit();
@@ -124,7 +125,7 @@ static void setup_clocks(void) {
// Configure AHBx, APBx, etc. prescalers and the main PLL.
wirish::priv::board_setup_clock_prescalers();
- rcc_configure_pll(&wirish::priv::board_pll_cfg);
+ rcc_configure_pll(&wirish::priv::w_board_pll_cfg);
// Enable the PLL, and wait until it's ready.
rcc_turn_on_clk(RCC_CLK_PLL);
@@ -146,3 +147,13 @@ static void setup_nvic(void) {
#error "You must select a base address for the vector table."
#endif
}
+
+static void adc_default_config(const adc_dev *dev) {
+ adc_enable_single_swstart(dev);
+ adc_set_sample_rate(dev, wirish::priv::w_adc_smp);
+}
+
+static void setup_adcs(void) {
+ adc_set_prescaler(wirish::priv::w_adc_pre);
+ adc_foreach(adc_default_config);
+}