diff options
| -rw-r--r-- | bsp/wch/risc-v/Libraries/ch32_drivers/drv_common.c | 28 | ||||
| -rw-r--r-- | bsp/wch/risc-v/Libraries/ch32_drivers/drv_common.h | 25 |
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
|
