aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--buttons.c16
-rw-r--r--cfg/mcuconf.h8
-rw-r--r--main.c12
4 files changed, 23 insertions, 15 deletions
diff --git a/Makefile b/Makefile
index 128703d..4eb5c40 100644
--- a/Makefile
+++ b/Makefile
@@ -139,7 +139,7 @@ ASMXSRC = $(ALLXASMSRC)
INCDIR = $(CONFDIR) $(ALLINC) $(TESTINC)
# Define C warning options here.
-CWARN = -Wall -Wextra -Wundef -pedantic #-Wstrict-prototypes
+CWARN = -Wall -Wextra -Wundef -Wno-cpp #-Wstrict-prototypes
# Define C++ warning options here.
CPPWARN = -Wall -Wextra -Wundef
diff --git a/buttons.c b/buttons.c
index c792494..5605e69 100644
--- a/buttons.c
+++ b/buttons.c
@@ -47,13 +47,13 @@ void buttons_init()
palEnablePadEvent(GPIOA, 7, PAL_EVENT_MODE_BOTH_EDGES);
palEnablePadEvent(GPIOA, 9, PAL_EVENT_MODE_BOTH_EDGES);
palEnablePadEvent(GPIOA, 10, PAL_EVENT_MODE_BOTH_EDGES);
- palSetPadCallback(GPIOA, 0, buttonStateHandler, 0x0700);
- palSetPadCallback(GPIOA, 1, buttonStateHandler, 0x0601);
- palSetPadCallback(GPIOA, 2, buttonStateHandler, 0x0502);
- palSetPadCallback(GPIOA, 3, buttonStateHandler, 0x0403);
- palSetPadCallback(GPIOA, 6, buttonStateHandler, 0x0306);
- palSetPadCallback(GPIOA, 7, buttonStateHandler, 0x0207);
- palSetPadCallback(GPIOA, 9, buttonStateHandler, 0x0109);
- palSetPadCallback(GPIOA, 10, buttonStateHandler, 0x000A);
+ palSetPadCallback(GPIOA, 0, buttonStateHandler, (void *)0x0700);
+ palSetPadCallback(GPIOA, 1, buttonStateHandler, (void *)0x0601);
+ palSetPadCallback(GPIOA, 2, buttonStateHandler, (void *)0x0502);
+ palSetPadCallback(GPIOA, 3, buttonStateHandler, (void *)0x0403);
+ palSetPadCallback(GPIOA, 6, buttonStateHandler, (void *)0x0306);
+ palSetPadCallback(GPIOA, 7, buttonStateHandler, (void *)0x0207);
+ palSetPadCallback(GPIOA, 9, buttonStateHandler, (void *)0x0109);
+ palSetPadCallback(GPIOA, 10, buttonStateHandler, (void *)0x000A);
}
diff --git a/cfg/mcuconf.h b/cfg/mcuconf.h
index 19caa57..a580925 100644
--- a/cfg/mcuconf.h
+++ b/cfg/mcuconf.h
@@ -47,13 +47,13 @@
#define STM32_LSI_ENABLED TRUE
#define STM32_HSE_ENABLED FALSE
#define STM32_LSE_ENABLED FALSE
-//#define STM32_ADC_CLOCK_ENABLED FALSE
-#define STM32_MSIRANGE STM32_MSIRANGE_4M
-#define STM32_SW STM32_SW_HSI16
+#define STM32_ADC_CLOCK_ENABLED TRUE
+#define STM32_MSIRANGE STM32_MSIRANGE_512K
+#define STM32_SW STM32_SW_MSI
#define STM32_PLLSRC STM32_PLLSRC_HSI16
#define STM32_PLLMUL_VALUE 4
#define STM32_PLLDIV_VALUE 2
-#define STM32_HPRE STM32_HPRE_DIV4
+#define STM32_HPRE STM32_HPRE_DIV1
#define STM32_PPRE1 STM32_PPRE1_DIV1
#define STM32_PPRE2 STM32_PPRE2_DIV1
#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK
diff --git a/main.c b/main.c
index 9d70010..ffd5d3f 100644
--- a/main.c
+++ b/main.c
@@ -21,11 +21,13 @@
* - Can read buttons through PAL (through interrupts now)
* - Use ADC to read Vintref, print to screen in mV
* - Sleep mode via WFI, saves ~0.5mA (we're running around 1.1mA)
+ * - Run at 512kHz, only use HSI for ADC: 360uA
*/
static volatile bool adc_is_complete = false;
-static void adc_callback(ADCDriver *adcp)
+static void adc_callback(ADCDriver *adcd)
{
+ (void)adcd;
adc_is_complete = true;
}
@@ -49,6 +51,9 @@ static int readVddmv()
{
adcsample_t reading = 0;
+ RCC->CR |= RCC_CR_HSION;
+ while (!(RCC->CR & RCC_CR_HSIRDY));
+
adcStart(&ADCD1, &adccfg);
adcSTM32EnableVREF(&ADCD1);
adcStartConversion(&ADCD1, &adcgrpcfg, &reading, 1);
@@ -57,6 +62,8 @@ static int readVddmv()
adcSTM32DisableVREF(&ADCD1);
adcStop(&ADCD1);
+ RCC->CR &= ~RCC_CR_HSION;
+
return 3000 * /* CAL */ *((adcsample_t *)0x1FF80078) / reading;
}
@@ -116,7 +123,8 @@ int main(void)
{
halInit();
chSysInit();
- RCC->CFGR |= RCC_CFGR_STOPWUCK;
+
+ RCC->CR &= ~RCC_CR_HSION;
buttons_init();