1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- /*
- * Copyright (c) 2006-2023, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2021-08-20 breo.com first version
- */
- #include "drv_common.h"
- #include "board.h"
- #ifdef RT_USING_SERIAL
- #ifdef RT_USING_SERIAL_V2
- #include "drv_usart_v2.h"
- #else
- #include "drv_usart.h"
- #endif
- #endif
- #ifdef RT_USING_FINSH
- #include <finsh.h>
- static void reboot(uint8_t argc, char **argv)
- {
- rt_hw_cpu_reset();
- }
- MSH_CMD_EXPORT(reboot, Reboot System);
- #endif /* RT_USING_FINSH */
- /**
- * This function will delay for some us.
- *
- * @param us the delay time of us
- */
- void rt_hw_us_delay(rt_uint32_t us)
- {
- rt_uint32_t ticks;
- rt_uint32_t told, tnow, tcnt = 0;
- rt_uint32_t reload = SysTick->LOAD;
- ticks = us * reload / (1000000 / RT_TICK_PER_SECOND);
- told = SysTick->VAL;
- while (1)
- {
- tnow = SysTick->VAL;
- if (tnow != told)
- {
- if (tnow < told)
- {
- tcnt += told - tnow;
- }
- else
- {
- tcnt += reload - tnow + told;
- }
- told = tnow;
- if (tcnt >= ticks)
- {
- break;
- }
- }
- }
- }
|