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);
+}