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.

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