You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by ma...@apache.org on 2016/04/11 23:25:52 UTC

[22/28] incubator-mynewt-core git commit: Cut over to using 'hal_os_tick.c' APIs for periodic OS timer.

Cut over to using 'hal_os_tick.c' APIs for periodic OS timer.


Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/b51a0ee2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/b51a0ee2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/b51a0ee2

Branch: refs/heads/develop
Commit: b51a0ee289cc8a4d7c54507e4a43f48a35337b21
Parents: b0c6fbf
Author: Neel Natu <ne...@nahannisys.com>
Authored: Wed Apr 6 17:41:47 2016 -0700
Committer: Neel Natu <ne...@nahannisys.com>
Committed: Wed Apr 6 17:41:47 2016 -0700

----------------------------------------------------------------------
 hw/mcu/stm/stm32f4xx/include/mcu/cortex_m4.h |  2 +
 hw/mcu/stm/stm32f4xx/src/hal_os_tick.c       | 49 +++++++++++++++++++++++
 2 files changed, 51 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b51a0ee2/hw/mcu/stm/stm32f4xx/include/mcu/cortex_m4.h
----------------------------------------------------------------------
diff --git a/hw/mcu/stm/stm32f4xx/include/mcu/cortex_m4.h b/hw/mcu/stm/stm32f4xx/include/mcu/cortex_m4.h
index 674f749..f9c2109 100644
--- a/hw/mcu/stm/stm32f4xx/include/mcu/cortex_m4.h
+++ b/hw/mcu/stm/stm32f4xx/include/mcu/cortex_m4.h
@@ -22,4 +22,6 @@
 
 #include "mcu/stm32f4xx.h"
 
+#define OS_TICKS_PER_SEC    (1000)
+
 #endif /* __MCU_CORTEX_M4_H__ */

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b51a0ee2/hw/mcu/stm/stm32f4xx/src/hal_os_tick.c
----------------------------------------------------------------------
diff --git a/hw/mcu/stm/stm32f4xx/src/hal_os_tick.c b/hw/mcu/stm/stm32f4xx/src/hal_os_tick.c
new file mode 100644
index 0000000..0f0ce77
--- /dev/null
+++ b/hw/mcu/stm/stm32f4xx/src/hal_os_tick.c
@@ -0,0 +1,49 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#include <assert.h>
+#include <os/os.h>
+#include <hal/hal_os_tick.h>
+
+/*
+ * XXX implement tickless mode.
+ */
+void
+os_tick_idle(os_time_t ticks)
+{
+    OS_ASSERT_CRITICAL();
+    __DSB();
+    __WFI();
+}
+
+void
+os_tick_init(uint32_t os_ticks_per_sec, int prio)
+{
+    uint32_t reload_val;
+
+    reload_val = ((uint64_t)SystemCoreClock / os_ticks_per_sec) - 1;
+
+    /* Set the system time ticker up */
+    SysTick->LOAD = reload_val;
+    SysTick->VAL = 0;
+    SysTick->CTRL = 0x0007;
+
+    /* Set the system tick priority */
+    NVIC_SetPriority(SysTick_IRQn, prio);
+}