summaryrefslogtreecommitdiff
path: root/bsp
diff options
context:
space:
mode:
authorself-confident neko <[email protected]>2023-06-14 19:34:37 +0800
committerGitHub <[email protected]>2023-06-14 19:34:37 +0800
commitbf4594870e9f8a533450d34a1ea2b4f035e89c96 (patch)
tree07872e4459463594e7acc83ac51fa0aa3c8d2b9c /bsp
parentd256d742d1766c84c881f02902858ece1315725e (diff)
向 wch-riscv-bsp 添加 drv_common.c/.h 文件 (#7671)
Diffstat (limited to 'bsp')
-rw-r--r--bsp/wch/risc-v/Libraries/ch32_drivers/drv_common.c28
-rw-r--r--bsp/wch/risc-v/Libraries/ch32_drivers/drv_common.h25
2 files changed, 53 insertions, 0 deletions
diff --git a/bsp/wch/risc-v/Libraries/ch32_drivers/drv_common.c b/bsp/wch/risc-v/Libraries/ch32_drivers/drv_common.c
new file mode 100644
index 0000000000..79145ea939
--- /dev/null
+++ b/bsp/wch/risc-v/Libraries/ch32_drivers/drv_common.c
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2006-2023, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2023-06-14 muaxiaohei first version
+ */
+
+#include <rtthread.h>
+#include "drv_common.h"
+
+void rt_hw_us_delay(rt_uint32_t us)
+{
+ uint64_t total_delay_ticks, us_ticks, start, now, delta, reload;
+
+ start = SysTick->CNT;
+ reload = SysTick->CMP;
+ us_ticks = SystemCoreClock / 8000000UL;
+ total_delay_ticks = (uint32_t)us * us_ticks;
+ RT_ASSERT(total_delay_ticks < reload);
+
+ do{
+ now = SysTick->CNT;
+ delta = start > now ? start - now : reload + start - now;
+ }while(delta < total_delay_ticks);
+}
diff --git a/bsp/wch/risc-v/Libraries/ch32_drivers/drv_common.h b/bsp/wch/risc-v/Libraries/ch32_drivers/drv_common.h
new file mode 100644
index 0000000000..df9bed2794
--- /dev/null
+++ b/bsp/wch/risc-v/Libraries/ch32_drivers/drv_common.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2006-2023, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2023-06-14 muaxiaohei first version
+ */
+
+#ifndef __DRV_COMMON_H__
+#define __DRV_COMMON_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void rt_hw_us_delay(rt_uint32_t us);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif