summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2009-10-17 21:45:39 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2009-10-17 21:45:39 +0000
commit3ddce5ca43a251208fcbfc4039d90c7822e6d157 (patch)
tree2236dd557580a088311336fea2f7add221580e60
parentbb13faa2c0639b81b425d71c6b7f6d3958cc9898 (diff)
downloadnuttx-3ddce5ca43a251208fcbfc4039d90c7822e6d157.tar.gz
nuttx-3ddce5ca43a251208fcbfc4039d90c7822e6d157.tar.bz2
nuttx-3ddce5ca43a251208fcbfc4039d90c7822e6d157.zip
Boots with SYSTICK source = HCLK, not HCLK/8
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2151 42af7a65-404d-4744-a932-0658087f49c3
-rw-r--r--nuttx/arch/arm/src/stm32/stm32_timerisr.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/nuttx/arch/arm/src/stm32/stm32_timerisr.c b/nuttx/arch/arm/src/stm32/stm32_timerisr.c
index 32c51de59..b784fd2ab 100644
--- a/nuttx/arch/arm/src/stm32/stm32_timerisr.c
+++ b/nuttx/arch/arm/src/stm32/stm32_timerisr.c
@@ -67,7 +67,14 @@
* register.
*/
-#define SYSTICK_RELOAD ((STM32_HCLK_FREQUENCY / 8 / CLK_TCK) - 1)
+#undef CONFIG_STM32_SYSTICK_HCLKd8 /* Power up default is HCLK, not HCLK/8 */
+ /* And I don't know now to re-configure it yet */
+
+#if CONFIG_STM32_SYSTICK_HCLKd8
+# define SYSTICK_RELOAD ((STM32_HCLK_FREQUENCY / 8 / CLK_TCK) - 1)
+#else
+# define SYSTICK_RELOAD ((STM32_HCLK_FREQUENCY / CLK_TCK) - 1)
+#endif
/* The size of the reload field is 24 bits. Verify taht the reload value
* will fit in the reload register.
@@ -126,6 +133,18 @@ void up_timerinit(void)
regval |= (NVIC_SYSH_PRIORITY_DEFAULT << NVIC_SYSH_PRIORITY_PR15_SHIFT);
putreg32(regval, NVIC_SYSH12_15_PRIORITY);
+ /* Make sure that the SYSTICK clock source is set correctly */
+
+#if 0 /* Does not work. Comes up with HCLK source and I can't change it */
+ regval = getreg32(NVIC_SYSTICK_CTRL);
+#if CONFIG_STM32_SYSTICK_HCLKd8
+ regval &= ~NVIC_SYSTICK_CTRL_CLKSOURCE;
+#else
+ regval |= NVIC_SYSTICK_CTRL_CLKSOURCE;
+#endif
+ putreg32(regval, NVIC_SYSTICK_CTRL);
+#endif
+
/* Configure SysTick to interrupt at the requested rate */
putreg32(SYSTICK_RELOAD, NVIC_SYSTICK_RELOAD);