aboutsummaryrefslogtreecommitdiff
path: root/lib/stm32/systick.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/stm32/systick.c')
-rw-r--r--lib/stm32/systick.c75
1 files changed, 75 insertions, 0 deletions
diff --git a/lib/stm32/systick.c b/lib/stm32/systick.c
index c49d11d..cfac213 100644
--- a/lib/stm32/systick.c
+++ b/lib/stm32/systick.c
@@ -1,3 +1,23 @@
+/** @defgroup STM32F-systick-file SysTick
+
+@ingroup STM32F-files
+
+@brief <b>libopencm3 STM32Fxx System Tick Timer</b>
+
+@version 1.0.0
+
+@author @htmlonly &copy; @endhtmlonly 2010 Thomas Otto <tommi@viadmin.org>
+
+@date 19 August 2012
+
+This library supports the System Tick timer in the
+STM32F series of ARM Cortex Microcontrollers by ST Microelectronics.
+
+The System Tick timer is part of the ARM Cortex core. It is a 24 bit
+down counter that can be configured with an automatical reload value.
+
+LGPL License Terms @ref lgpl_license
+ */
/*
* This file is part of the libopencm3 project.
*
@@ -17,44 +37,97 @@
* along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
+/**@{*/
#include <libopencm3/stm32/systick.h>
+/*-----------------------------------------------------------------------------*/
+/** @brief SysTick Set the Automatic Reload Value.
+
+The counter is set to the reload value when the counter starts and after it
+reaches zero.
+
+@param[in] value u32. 24 bit reload value.
+*/
+
void systick_set_reload(u32 value)
{
STK_LOAD = (value & 0x00FFFFFF);
}
+/*-----------------------------------------------------------------------------*/
+/** @brief SysTick Read the Automatic Reload Value.
+
+@returns 24 bit reload value as u32.
+*/
+
u32 systick_get_value(void)
{
return STK_VAL;
}
+/*-----------------------------------------------------------------------------*/
+/** @brief Set the SysTick Clock Source.
+
+The clock source can be either the AHB clock or the same clock divided by 8.
+
+@param[in] clocksource u8. Clock source from @ref systick_clksource.
+*/
+
void systick_set_clocksource(u8 clocksource)
{
if (clocksource < 2)
STK_CTRL |= (clocksource << STK_CTRL_CLKSOURCE_LSB);
}
+/*-----------------------------------------------------------------------------*/
+/** @brief Enable SysTick Interrupt.
+
+*/
+
void systick_interrupt_enable(void)
{
STK_CTRL |= STK_CTRL_TICKINT;
}
+/*-----------------------------------------------------------------------------*/
+/** @brief Disable SysTick Interrupt.
+
+*/
+
void systick_interrupt_disable(void)
{
STK_CTRL &= ~STK_CTRL_TICKINT;
}
+/*-----------------------------------------------------------------------------*/
+/** @brief Enable SysTick Counter.
+
+*/
+
void systick_counter_enable(void)
{
STK_CTRL |= STK_CTRL_ENABLE;
}
+/*-----------------------------------------------------------------------------*/
+/** @brief Disable SysTick Counter.
+
+*/
+
void systick_counter_disable(void)
{
STK_CTRL &= ~STK_CTRL_ENABLE;
}
+/*-----------------------------------------------------------------------------*/
+/** @brief SysTick Read the Counter Flag.
+
+The count flag is set when the timer count becomes zero, and is cleared when the
+flag is read.
+
+@returns Boolean if flag set.
+*/
+
u8 systick_get_countflag(void)
{
if (STK_CTRL & STK_CTRL_COUNTFLAG)
@@ -62,3 +135,5 @@ u8 systick_get_countflag(void)
else
return 0;
}
+/**@}*/
+