SysTick.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /*********************************************************************************************************
  2. * Module : SysTick.c
  3. * Abstract : SysTick modules,systick be used to delay of Milliseconds or Nanoseconds !
  4. * Version : 1.0.0
  5. * Author : Leopul(COPYRIGHT 2025 - 2027 Leopul. All rights reserved.)
  6. * Complete : 2025-02-16
  7. * Content : None
  8. * Note : None
  9. *********************************************************************************************************/
  10. #include "SysTick.h"
  11. #include "gd32e230x_conf.h"
  12. static __IO unsigned int s_iTimDelayCnt = 0;
  13. static void TimDelayDec(void);
  14. static void TimDelayDec(void)
  15. {
  16. if(s_iTimDelayCnt != 0)
  17. {
  18. s_iTimDelayCnt--;
  19. }
  20. }
  21. void SysTick_Handler(void)
  22. {
  23. TimDelayDec();
  24. }
  25. void InitSysTick( void )
  26. {
  27. if (SysTick_Config(SystemCoreClock / 1000))
  28. {
  29. while(1)
  30. {
  31. }
  32. }
  33. }
  34. void DelayNms(__IO unsigned int nms)
  35. {
  36. s_iTimDelayCnt = nms;
  37. while(s_iTimDelayCnt != 0)
  38. {
  39. }
  40. }
  41. void DelayNus(__IO unsigned int nus)
  42. {
  43. unsigned int s_iTimCnt = nus;
  44. unsigned short i;
  45. while(s_iTimCnt != 0)
  46. {
  47. for(i = 0; i < 3; i++)
  48. {
  49. }
  50. s_iTimCnt--;
  51. }
  52. }