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.

33 lines
749 B

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. uint32_t chip_get_ticket() {
  21. uint32_t ticket = HAL_GetTick();
  22. return ticket;
  23. }
  24. uint32_t haspassedms(uint32_t ticket) {
  25. uint32_t nowticket = HAL_GetTick();
  26. if (nowticket >= ticket) {
  27. return nowticket - ticket;
  28. }
  29. return UINT32_MAX - ticket + nowticket;
  30. }