You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
2.2 KiB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
  1. /*********************************************************
  2. *Copyright (C), 2017, Shanghai Eastsoft Microelectronics Co., Ltd.
  3. *: systick.c
  4. * : AE Team
  5. * : V1.00
  6. * : 2021/05/13
  7. * :
  8. * : 使
  9. **********************************************************/
  10. #include "systick.h"
  11. extern uint32_t g_sys_sick;
  12. /*********************************************************
  13. : void User_SysTickInit(void)
  14. : 100us
  15. :
  16. :
  17. :
  18. 1ms(48000)
  19. **********************************************************/
  20. void User_SysTickInit(void)
  21. {
  22. SYSTICK_InitStruType x;
  23. // x.SysTick_Value = SystemCoreClock / 10000;//重装载值4800(SystemCoreClock=48M)
  24. // x.SysTick_ClkSource = SysTick_ClkS_Cpu;//时钟48M
  25. // x.SysTick_ITEnable = Enable;
  26. // SysTick_Init(&x);//现在滴答定时器时钟用的48M,重装载值4800 t=1s/f(f=48M/4800)
  27. x.SysTick_Value = SystemCoreClock / 1000;
  28. x.SysTick_ClkSource = SysTick_ClkS_Cpu;//时钟48M
  29. x.SysTick_ITEnable = Enable;
  30. SysTick_Init(&x);//现在滴答定时器时钟用的48M,重装载值4800 t=1s/f(f=48M/48000)
  31. SysTick_Disable();
  32. }
  33. //采用滴答定时器的时钟源,滴答定时器配置的是100us
  34. // extern uint32_t g_sys_sick;
  35. /**
  36. * @brief ticket辅助方法
  37. */
  38. uint32_t get_sys_ticket(void) { return g_sys_sick; }
  39. uint32_t port_haspassedms(uint32_t ticket) {
  40. uint32_t nowticket = get_sys_ticket();
  41. if (nowticket >= ticket) {
  42. return nowticket - ticket;
  43. }
  44. return UINT32_MAX - ticket + nowticket;
  45. }
  46. void port_do_debug_light_state(void) {
  47. static uint32_t lastprocess = 0;
  48. static uint8_t debug_led_state = 1;
  49. if (port_haspassedms(lastprocess) > 1000) {
  50. lastprocess = get_sys_ticket();
  51. debug_led_state = !debug_led_state;
  52. port_debug_set(debug_led_state);
  53. }
  54. }
  55. void Delayms(__IO uint32_t nTime)
  56. {
  57. uint32_t TimingDelay = 0;
  58. TimingDelay = get_sys_ticket();
  59. // printf("nTime%d\r\n",nTime);
  60. while (port_haspassedms(TimingDelay) <= nTime);
  61. }