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.

45 lines
992 B

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. #include "delay.h"
  2. #include <stdint.h>
  3. static TIM_HandleTypeDef *m_dhtim;
  4. void chip_delay_init(TIM_HandleTypeDef *htim) { m_dhtim = htim; }
  5. void chip_delay_us(uint32_t n) {
  6. uint16_t counter = 0;
  7. __HAL_TIM_SET_COUNTER(m_dhtim, 0);
  8. HAL_TIM_Base_Start(m_dhtim);
  9. while (counter < n) {
  10. counter = __HAL_TIM_GET_COUNTER(m_dhtim);
  11. }
  12. HAL_TIM_Base_Stop(m_dhtim);
  13. }
  14. void chip_delay_ms(uint32_t n) {
  15. uint32_t i;
  16. for (i = 0; i < n; i++) {
  17. chip_delay_us(1000);
  18. }
  19. }
  20. void ifly_delay_ms(uint32_t n) { chip_delay_ms(n); }
  21. uint32_t chip_get_ticket() {
  22. uint32_t ticket = HAL_GetTick();
  23. return ticket;
  24. }
  25. uint32_t haspassedms(uint32_t ticket) {
  26. uint32_t nowticket = HAL_GetTick();
  27. if (nowticket >= ticket) {
  28. return nowticket - ticket;
  29. }
  30. return UINT32_MAX - ticket + nowticket;
  31. }
  32. uint32_t haspassedms2(uint32_t lastticket, uint32_t nowticket) {
  33. if (nowticket >= lastticket) {
  34. return nowticket - lastticket;
  35. }
  36. return UINT32_MAX - lastticket + nowticket;
  37. }