From fdc0555892c21c6aa6b582c468dfa31d05005273 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sat, 23 Jun 2012 15:21:44 +0000 Subject: [PATCH] PWM and ICU working on the STM32F0. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@4329 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- readme.txt | 2 +- testhal/STM32F0xx/PWM-ICU/main.c | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/readme.txt b/readme.txt index f49a68be8..ce6a5bc86 100644 --- a/readme.txt +++ b/readme.txt @@ -175,7 +175,7 @@ support several new devices. - NEW: Demo for STM32F0-Discovery board. - NEW: Initial support for STM32F0xx devices, added a specific ADC driver. - Validated EXT, PAL, Serial, SPI drivers. + Validated EXT, GPT, ICU, PAL, PWM, Serial, SPI drivers. - NEW: Added a common ancestor class to the SDC and MMC_SPI drivers. This allows to share code and definitions. - NEW: Modified the SDC driver to implement the new block devices abstract diff --git a/testhal/STM32F0xx/PWM-ICU/main.c b/testhal/STM32F0xx/PWM-ICU/main.c index 8d771299a..2cabd2844 100644 --- a/testhal/STM32F0xx/PWM-ICU/main.c +++ b/testhal/STM32F0xx/PWM-ICU/main.c @@ -60,12 +60,17 @@ static void icuperiodcb(ICUDriver *icup) { last_period = icuGetPeriod(icup); } +static void icuoverflowcb(ICUDriver *icup) { + + (void)icup; +} + static ICUConfig icucfg = { ICU_INPUT_ACTIVE_HIGH, 10000, /* 10kHz ICU clock frequency. */ icuwidthcb, icuperiodcb, - NULL, + icuoverflowcb, ICU_CHANNEL_1 }; @@ -86,14 +91,14 @@ int main(void) { /* * Initializes the PWM driver 2 and ICU driver 3. - * GPIOA15 is the PWM output. - * GPIOC6 is the ICU input. + * GPIOA6 is the ICU input (CH1). + * GPIOA15 is the PWM output (CH1). * The two pins have to be externally connected together. */ pwmStart(&PWMD2, &pwmcfg); - palSetPadMode(GPIOA, 15, PAL_MODE_ALTERNATE(1)); + palSetPadMode(GPIOA, 15, PAL_MODE_ALTERNATE(2)); icuStart(&ICUD3, &icucfg); - palSetPadMode(GPIOC, 6, PAL_MODE_ALTERNATE(2)); + palSetPadMode(GPIOA, 6, PAL_MODE_ALTERNATE(1)); icuEnable(&ICUD3); chThdSleepMilliseconds(2000);