aboutsummaryrefslogtreecommitdiffstats
path: root/wirish/stm32f1
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/stm32f1
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/stm32f1')
-rw-r--r--wirish/stm32f1/boards_setup.cpp39
1 files changed, 11 insertions, 28 deletions
diff --git a/wirish/stm32f1/boards_setup.cpp b/wirish/stm32f1/boards_setup.cpp
index 4ee292a..8e16009 100644
--- a/wirish/stm32f1/boards_setup.cpp
+++ b/wirish/stm32f1/boards_setup.cpp
@@ -28,11 +28,15 @@
* @file wirish/stm32f1/boards_setup.cpp
* @author Marti Bolivar <mbolivar@leaflabs.com>
* @brief STM32F1 chip setup.
+ *
+ * This file controls how init() behaves on the STM32F1. Be very
+ * careful when changing anything here. Many of these values depend
+ * upon each other.
*/
-#include <libmaple/rcc.h>
+#include "boards_private.h"
+
#include <libmaple/gpio.h>
-#include <libmaple/adc.h>
#include <libmaple/timer.h>
#include <libmaple/usb_cdcacm.h>
@@ -45,12 +49,11 @@ namespace wirish {
namespace priv {
static stm32f1_rcc_pll_data pll_data = {RCC_PLLMUL_9};
- rcc_pll_cfg board_pll_cfg = {RCC_PLLSRC_HSE, &pll_data};
+ rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSE, &pll_data};
+ adc_prescaler w_adc_pre = ADC_PRE_PCLK2_DIV_6;
+ adc_smp_rate w_adc_smp = ADC_SMPR_55_5;
-#if 0
- static void config_adc(const adc_dev* dev);
static void config_timer(timer_dev*);
-#endif
void board_reset_pll(void) {
// TODO
@@ -69,17 +72,8 @@ namespace wirish {
afio_init();
}
- void board_setup_adc(void) {
-#if 0
- rcc_set_prescaler(RCC_PRESCALER_ADC, RCC_ADCPRE_PCLK_DIV_6);
- adc_foreach(config_adc);
-#endif
- }
-
void board_setup_timers(void) {
-#if 0
timer_foreach(config_timer);
-#endif
}
void board_setup_usb(void) {
@@ -92,19 +86,8 @@ namespace wirish {
* Auxiliary routines
*/
-#if 0
- static void config_adc(const adc_dev *dev) {
- adc_init(dev);
-
- adc_set_extsel(dev, ADC_SWSTART);
- adc_set_exttrig(dev, true);
-
- adc_enable(dev);
- adc_calibrate(dev);
- adc_set_sample_rate(dev, ADC_SMPR_55_5);
- }
-
static void config_timer(timer_dev *dev) {
+#if 0
timer_adv_reg_map *regs = (dev->regs).adv;
const uint16 full_overflow = 0xFFFF;
const uint16 half_duty = 0x8FFF;
@@ -135,7 +118,7 @@ namespace wirish {
}
timer_resume(dev);
- }
#endif
+ }
}
}