Browse Source
F2 and F4 have a common section to deal with the options register (TIM2 and TIM5 only) L1 has been made common with timer_common_all as its options register has very different settings to F2/F4. Code is in the L1/timer.c L1/timer.h files Note that F3 and F05 timers should fit into this scheme, with F3 having additional features. Bundled with this is L1/pwr.h to change a documentation setting Also all the Doxyfiles have added "ENABLE_PREPROCESSING = NO" to fix a problem introduced by commit 118.pull/120/head
Ken Sarkies
12 years ago
31 changed files with 1706 additions and 1253 deletions
File diff suppressed because it is too large
@ -0,0 +1,99 @@ |
|||
/** @addtogroup timer_defines
|
|||
|
|||
@author @htmlonly © @endhtmlonly 2011 Fergus Noble <fergusnoble@gmail.com> |
|||
|
|||
*/ |
|||
|
|||
/*
|
|||
* This file is part of the libopencm3 project. |
|||
* |
|||
* Copyright (C) 2011 Fergus Noble <fergusnoble@gmail.com> |
|||
* |
|||
* This library is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Lesser General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This library is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Lesser General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Lesser General Public License |
|||
* along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
|
|||
/* THIS FILE SHOULD NOT BE INCLUDED DIRECTLY, BUT ONLY VIA TIMER.H
|
|||
The order of header inclusion is important. timer.h includes the device |
|||
specific memorymap.h header before including this header file.*/ |
|||
|
|||
#ifdef LIBOPENCM3_TIMER_H |
|||
#ifndef LIBOPENCM3_TIMER_COMMON_F24_H |
|||
#define LIBOPENCM3_TIMER_COMMON_F24_H |
|||
|
|||
#include <libopencm3/stm32/common/timer_common_all.h> |
|||
|
|||
/*
|
|||
* TIM2 and TIM5 are now 32bit and the following registers are now 32-bit wide: |
|||
* CNT, ARR, CCR1, CCR2, CCR3, CCR4 |
|||
*/ |
|||
|
|||
/* Timer 2/5 option register (TIMx_OR) */ |
|||
#define TIM_OR(tim_base) MMIO32(tim_base + 0x50) |
|||
#define TIM2_OR TIM_OR(TIM2) |
|||
#define TIM5_OR TIM_OR(TIM5) |
|||
|
|||
/* --- TIM2_OR values ---------------------------------------------------- */ |
|||
|
|||
/* ITR1_RMP */ |
|||
/****************************************************************************/ |
|||
/** @defgroup tim2_opt_trigger_remap TIM2_OR Timer 2 Option Register Internal Trigger 1 Remap
|
|||
|
|||
Only available in F2 and F4 series. |
|||
@ingroup timer_defines |
|||
|
|||
@{*/ |
|||
/** Internal Trigger 1 remapped to timer 8 trigger out */ |
|||
#define TIM2_OR_ITR1_RMP_TIM8_TRGOU (0x0 << 10) |
|||
/** Internal Trigger 1 remapped to PTP trigger out */ |
|||
#define TIM2_OR_ITR1_RMP_PTP (0x1 << 10) |
|||
/** Internal Trigger 1 remapped to USB OTG FS SOF */ |
|||
#define TIM2_OR_ITR1_RMP_OTG_FS_SOF (0x2 << 10) |
|||
/** Internal Trigger 1 remapped to USB OTG HS SOF */ |
|||
#define TIM2_OR_ITR1_RMP_OTG_HS_SOF (0x3 << 10) |
|||
/**@}*/ |
|||
#define TIM2_OR_ITR1_RMP_MASK (0x3 << 10) |
|||
|
|||
/* --- TIM5_OR values ---------------------------------------------------- */ |
|||
|
|||
/* ITR4_RMP */ |
|||
/****************************************************************************/ |
|||
/** @defgroup tim5_opt_trigger_remap TIM5_OR Timer 5 Option Register Internal Trigger 4 Remap
|
|||
|
|||
Only available in F2 and F4 series. |
|||
@ingroup timer_defines |
|||
|
|||
@{*/ |
|||
/** Internal Trigger 4 remapped to GPIO (see reference manual) */ |
|||
#define TIM5_OR_TI4_RMP_GPIO (0x0 << 6) |
|||
/** Internal Trigger 4 remapped to LSI internal clock */ |
|||
#define TIM5_OR_TI4_RMP_LSI (0x1 << 6) |
|||
/** Internal Trigger 4 remapped to LSE internal clock */ |
|||
#define TIM5_OR_TI4_RMP_LSE (0x2 << 6) |
|||
/** Internal Trigger 4 remapped to RTC output event */ |
|||
#define TIM5_OR_TI4_RMP_RTC (0x3 << 6) |
|||
/**@}*/ |
|||
#define TIM5_OR_TI4_RMP_MASK (0x3 << 6) |
|||
|
|||
/* --- Function prototypes ------------------------------------------------- */ |
|||
|
|||
BEGIN_DECLS |
|||
|
|||
void timer_set_option(u32 timer_peripheral, u32 option); |
|||
|
|||
END_DECLS |
|||
|
|||
#endif |
|||
#else |
|||
#warning "timer_common_f24.h should not be included explicitly, only via timer.h" |
|||
#endif |
@ -0,0 +1,40 @@ |
|||
/** @defgroup timer_defines Timer Defines
|
|||
|
|||
@brief <b>libopencm3 Defined Constants and Types for the STM32F1xx Timers</b> |
|||
|
|||
@ingroup STM32F1xx_defines |
|||
|
|||
@version 1.0.0 |
|||
|
|||
@date 8 March 2013 |
|||
|
|||
@author @htmlonly © @endhtmlonly 2011 Fergus Noble <fergusnoble@gmail.com> |
|||
|
|||
LGPL License Terms @ref lgpl_license |
|||
*/ |
|||
|
|||
/*
|
|||
* This file is part of the libopencm3 project. |
|||
* |
|||
* Copyright (C) 2011 Fergus Noble <fergusnoble@gmail.com> |
|||
* |
|||
* This library is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Lesser General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This library is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Lesser General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Lesser General Public License |
|||
* along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
|
|||
#ifndef LIBOPENCM3_TIMER_H |
|||
#define LIBOPENCM3_TIMER_H |
|||
|
|||
#include <libopencm3/stm32/common/timer_common_all.h> |
|||
|
|||
#endif |
@ -0,0 +1,88 @@ |
|||
/** @defgroup timer_defines Timer Defines
|
|||
|
|||
@brief <b>libopencm3 Defined Constants and Types for the STM32L1xx Timers</b> |
|||
|
|||
@ingroup STM32L1xx_defines |
|||
|
|||
@version 1.0.0 |
|||
|
|||
@date 8 March 2013 |
|||
|
|||
@author @htmlonly © @endhtmlonly 2011 Fergus Noble <fergusnoble@gmail.com> |
|||
|
|||
LGPL License Terms @ref lgpl_license |
|||
*/ |
|||
|
|||
/*
|
|||
* This file is part of the libopencm3 project. |
|||
* |
|||
* Copyright (C) 2011 Fergus Noble <fergusnoble@gmail.com> |
|||
* |
|||
* This library is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Lesser General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This library is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Lesser General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Lesser General Public License |
|||
* along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
|
|||
#ifndef LIBOPENCM3_TIMER_H |
|||
#define LIBOPENCM3_TIMER_H |
|||
|
|||
#include <libopencm3/stm32/common/timer_common_all.h> |
|||
|
|||
/*
|
|||
* TIM2 and TIM5 are now 32bit and the following registers are now 32-bit wide: |
|||
* CNT, ARR, CCR1, CCR2, CCR3, CCR4 |
|||
*/ |
|||
|
|||
/* Timer 2/3 option register (TIMx_OR) */ |
|||
#define TIM_OR(tim_base) MMIO32(tim_base + 0x50) |
|||
#define TIM2_OR TIM_OR(TIM2) |
|||
#define TIM3_OR TIM_OR(TIM3) |
|||
|
|||
/* --- TIMx_OR values ---------------------------------------------------- */ |
|||
|
|||
/* ITR1_RMP */ |
|||
/****************************************************************************/ |
|||
/** @defgroup tim2_opt_trigger_remap TIM2_OR Timer 2 Option Register Internal Trigger 1 Remap
|
|||
@ingroup timer_defines |
|||
|
|||
@{*/ |
|||
/** Internal Trigger 1 remapped to timer 10 output compare */ |
|||
#define TIM2_OR_ITR1_RMP_TIM10_OC (0x0 << 0) |
|||
/** Internal Trigger 1 remapped to timer 5 TGO */ |
|||
#define TIM2_OR_ITR1_RMP_TIM5_TGO (0x1 << 0) |
|||
/**@}*/ |
|||
#define TIM3_OR_ITR1_RMP_MASK (0x1 << 0) |
|||
|
|||
/* --- TIMx_OR values ---------------------------------------------------- */ |
|||
|
|||
/* ITR2_RMP */ |
|||
/****************************************************************************/ |
|||
/** @defgroup tim3_opt_trigger_remap TIM3_OR Timer 3 Option Register Internal Trigger 2 Remap
|
|||
@ingroup timer_defines |
|||
|
|||
@{*/ |
|||
/** Internal Trigger 1 remapped to timer 11 output compare */ |
|||
#define TIM3_OR_ITR2_RMP_TIM8_TRGOU (0x0 << 0) |
|||
/** Internal Trigger 1 remapped to timer 5 TGO */ |
|||
#define TIM3_OR_ITR2_RMP_PTP (0x1 << 0) |
|||
/**@}*/ |
|||
#define TIM3_OR_ITR2_RMP_MASK (0x1 << 0) |
|||
|
|||
/* --- Function prototypes ------------------------------------------------- */ |
|||
|
|||
BEGIN_DECLS |
|||
|
|||
void timer_set_option(u32 timer_peripheral, u32 option); |
|||
|
|||
END_DECLS |
|||
|
|||
#endif |
File diff suppressed because it is too large
@ -0,0 +1,51 @@ |
|||
/** @addtogroup timer_file
|
|||
|
|||
*/ |
|||
|
|||
/*
|
|||
* This file is part of the libopencm3 project. |
|||
* |
|||
* Copyright (C) 2010 Edward Cheeseman <evbuilder@users.sourceforge.org> |
|||
* Copyright (C) 2011 Stephen Caudle <scaudle@doceme.com> |
|||
* |
|||
* This library is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Lesser General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This library is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Lesser General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Lesser General Public License |
|||
* along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
|
|||
/**@{*/ |
|||
|
|||
#include <libopencm3/stm32/timer.h> |
|||
|
|||
/*---------------------------------------------------------------------------*/ |
|||
/** @brief Set Timer Option
|
|||
|
|||
Set timer options register on TIM2 or TIM5, used for trigger remapping on TIM2, |
|||
and similarly for TIM5 for oscillator calibration purposes. |
|||
|
|||
@param[in] timer_peripheral Unsigned int32. Timer register address base |
|||
@returns Unsigned int32. Option flags TIM2: @ref tim2_opt_trigger_remap, TIM5: @ref tim5_opt_trigger_remap. |
|||
*/ |
|||
|
|||
void timer_set_option(u32 timer_peripheral, u32 option) |
|||
{ |
|||
if (timer_peripheral == TIM2) { |
|||
TIM_OR(timer_peripheral) &= ~TIM2_OR_ITR1_RMP_MASK; |
|||
TIM_OR(timer_peripheral) |= option; |
|||
} else if (timer_peripheral == TIM5) { |
|||
TIM_OR(timer_peripheral) &= ~TIM5_OR_TI4_RMP_MASK; |
|||
TIM_OR(timer_peripheral) |= option; |
|||
} |
|||
} |
|||
/**@}*/ |
|||
|
|||
|
@ -0,0 +1,40 @@ |
|||
/* This file is used for documentation purposes. It does not need
|
|||
to be compiled. All source code is in the common area. |
|||
If there is any device specific code required it can be included here, |
|||
in which case this file must be added to the compile list. */ |
|||
|
|||
/** @defgroup timer_file Timers
|
|||
|
|||
@ingroup STM32F1xx |
|||
|
|||
@brief <b>libopencm3 STM32F1xx Timers</b> |
|||
|
|||
@version 1.0.0 |
|||
|
|||
@date 18 August 2012 |
|||
|
|||
*/ |
|||
|
|||
/*
|
|||
* This file is part of the libopencm3 project. |
|||
* |
|||
* Copyright (C) 2010 Edward Cheeseman <evbuilder@users.sourceforge.org> |
|||
* Copyright (C) 2011 Stephen Caudle <scaudle@doceme.com> |
|||
* |
|||
* This library is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Lesser General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This library is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Lesser General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Lesser General Public License |
|||
* along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
|
|||
#include <libopencm3/stm32/timer.h> |
|||
#include <libopencm3/stm32/common/timer_common_all.h> |
|||
|
@ -0,0 +1,40 @@ |
|||
/* This file is used for documentation purposes. It does not need
|
|||
to be compiled. All source code is in the common area. |
|||
If there is any device specific code required it can be included here, |
|||
in which case this file must be added to the compile list. */ |
|||
|
|||
/** @defgroup timer_file Timers
|
|||
|
|||
@ingroup STM32F2xx |
|||
|
|||
@brief <b>libopencm3 STM32F2xx Timers</b> |
|||
|
|||
@version 1.0.0 |
|||
|
|||
@date 18 August 2012 |
|||
|
|||
*/ |
|||
|
|||
/*
|
|||
* This file is part of the libopencm3 project. |
|||
* |
|||
* Copyright (C) 2010 Edward Cheeseman <evbuilder@users.sourceforge.org> |
|||
* Copyright (C) 2011 Stephen Caudle <scaudle@doceme.com> |
|||
* |
|||
* This library is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Lesser General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This library is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Lesser General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Lesser General Public License |
|||
* along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
|
|||
#include <libopencm3/stm32/timer.h> |
|||
#include <libopencm3/stm32/common/timer_common_f24.h> |
|||
|
@ -0,0 +1,40 @@ |
|||
/* This file is used for documentation purposes. It does not need
|
|||
to be compiled. All source code is in the common area. |
|||
If there is any device specific code required it can be included here, |
|||
in which case this file must be added to the compile list. */ |
|||
|
|||
/** @defgroup timer_file Timers
|
|||
|
|||
@ingroup STM32F4xx |
|||
|
|||
@brief <b>libopencm3 STM32F4xx Timers</b> |
|||
|
|||
@version 1.0.0 |
|||
|
|||
@date 18 August 2012 |
|||
|
|||
*/ |
|||
|
|||
/*
|
|||
* This file is part of the libopencm3 project. |
|||
* |
|||
* Copyright (C) 2010 Edward Cheeseman <evbuilder@users.sourceforge.org> |
|||
* Copyright (C) 2011 Stephen Caudle <scaudle@doceme.com> |
|||
* |
|||
* This library is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Lesser General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This library is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Lesser General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Lesser General Public License |
|||
* along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
|
|||
#include <libopencm3/stm32/timer.h> |
|||
#include <libopencm3/stm32/common/timer_common_f24.h> |
|||
|
@ -0,0 +1,59 @@ |
|||
/** @defgroup timer_file Timers
|
|||
|
|||
@ingroup STM32L1xx |
|||
|
|||
@brief <b>libopencm3 STM32L1xx Timers</b> |
|||
|
|||
@version 1.0.0 |
|||
|
|||
@date 18 August 2012 |
|||
|
|||
*/ |
|||
|
|||
/*
|
|||
* This file is part of the libopencm3 project. |
|||
* |
|||
* Copyright (C) 2010 Edward Cheeseman <evbuilder@users.sourceforge.org> |
|||
* Copyright (C) 2011 Stephen Caudle <scaudle@doceme.com> |
|||
* |
|||
* This library is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU Lesser General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This library is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU Lesser General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU Lesser General Public License |
|||
* along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
|
|||
/**@{*/ |
|||
|
|||
#include <libopencm3/stm32/timer.h> |
|||
#include <libopencm3/stm32/common/timer_common_all.h> |
|||
|
|||
/*---------------------------------------------------------------------------*/ |
|||
/** @brief Set Timer Option
|
|||
|
|||
Set timer options register on TIM2 or TIM3, used for trigger remapping. |
|||
|
|||
@param[in] timer_peripheral Unsigned int32. Timer register address base |
|||
@returns Unsigned int32. Option flags TIM2: @ref tim2_opt_trigger_remap, TIM3: @ref tim3_opt_trigger_remap. |
|||
*/ |
|||
|
|||
void timer_set_option(u32 timer_peripheral, u32 option) |
|||
{ |
|||
if (timer_peripheral == TIM2) { |
|||
TIM_OR(timer_peripheral) &= ~TIM2_OR_ITR1_RMP_MASK; |
|||
TIM_OR(timer_peripheral) |= option; |
|||
} else if (timer_peripheral == TIM3) { |
|||
TIM_OR(timer_peripheral) &= ~TIM3_OR_ITR2_RMP_MASK; |
|||
TIM_OR(timer_peripheral) |= option; |
|||
} |
|||
} |
|||
|
|||
/**@}*/ |
|||
|
Loading…
Reference in new issue