12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #include "systick.h"
- #include "yc_timer.h"
- #include "ycdef.h"
- #include "system.h"
- uint32_t tick_count = 0;
- void systick_init(void)
- {
- SysTick_Config(SystemCoreClock/TICK_PER_SECOND);
- }
- // Return system uptime in microseconds (rollover in 70minutes)
- uint32_t systick_get_us(void)
- {
- register uint32_t ms, cycle_cnt;
- do {
- ms = tick_count;
- cycle_cnt = SysTick->VAL;
- } while (ms != tick_count);
- return ms * TICK_US + (SysTick->LOAD - cycle_cnt) * TICK_US / SysTick->LOAD;
- }
- uint32_t systick_get_ms(void)
- {
- return tick_count;
- }
- void delay_us(uint32_t us)
- {
- //SysTick_Config(SystemCoreClock/100000);
- uint32_t now = systick_get_us();
- while (systick_get_us() - now < us);
- }
- void delay_ms(uint32_t ms)
- {
- uint32_t now = tick_count;
- while (tick_count - now < ms);
- }
- void SysTick_Handler(void)
- {
- #ifdef DEBUG_SYS
- MyPrintf("SYSTICK Interrupt trigger a success!\n");
- #endif
- tick_count++;
- SYStick_handle();
- }
|