Delay.c 797 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include "stm32f10x.h"
  2. /**
  3. * @brief 微秒级延时
  4. * @param xus 延时时长,范围:0~233015
  5. * @retval 无
  6. */
  7. void delay_us(uint32_t xus)
  8. {
  9. SysTick->LOAD = 72 * xus; //设置定时器重装值
  10. SysTick->VAL = 0x00; //清空当前计数值
  11. SysTick->CTRL = 0x00000005; //设置时钟源为HCLK,启动定时器
  12. while(!(SysTick->CTRL & 0x00010000)); //等待计数到0
  13. SysTick->CTRL = 0x00000004; //关闭定时器
  14. }
  15. /**
  16. * @brief 毫秒级延时
  17. * @param xms 延时时长,范围:0~4294967295
  18. * @retval 无
  19. */
  20. void delay_ms(uint32_t xms)
  21. {
  22. while(xms--)
  23. {
  24. delay_us(1000);
  25. }
  26. }
  27. /**
  28. * @brief 秒级延时
  29. * @param xs 延时时长,范围:0~4294967295
  30. * @retval 无
  31. */
  32. void delay_s(uint32_t xs)
  33. {
  34. while(xs--)
  35. {
  36. delay_ms(1000);
  37. }
  38. }