delay.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #ifndef _delay_h
  2. #define _delay_h
  3. /* 外部调用:
  4. delay_init(72); //系统主频, 单位为MHZ, 仅对 SYSTICK_DELAY 有效
  5. delay_ms(1000);
  6. */
  7. //#include "stm32f10x.h"
  8. #include "sys.h"
  9. #define SOFT_DELAY //纯软件延时
  10. //#define SYSTICK_DELAY //系统定时器延时
  11. //#define TIMER_DELAY //定时器延时
  12. #ifdef TIMER_DELAY
  13. #define TIMER_DELAY TIM4
  14. #define TIMER_DELAY_PERIOD 1000
  15. #define TIMER_DELAY_PRESCALER 72
  16. #define TIMER_DELAY_CLOCK RCC_APB1Periph_TIM4
  17. #define TIMER_DELAY_IRQ_HANDLER TIM4_IRQHandler
  18. #define TIMER_DELAY_PREEMPTION_PRIORITY 2
  19. #define TIMER_DELAY_SUB_PRIORITY 2
  20. #define TIMER_DELAY_IRQ_CHANNEL TIM4_IRQn
  21. static __IO u16 counter_delay_ms;
  22. #endif
  23. #if 0
  24. void Dly1us ( unsigned int DelayVal );
  25. void Dly10us ( unsigned int DelayVal );
  26. void Dly100us ( unsigned int DelayVal );
  27. extern unsigned int SystemClockFreq;
  28. #define DLY_PARA_COMST (SystemClockFreq/8500000) //延时参数
  29. #define DLY_CALL_COMST (6) //调用耗时,自定义
  30. #define delayUs(x) { unsigned int _dcnt; \
  31. _dcnt=(x*DLY_PARA_COMST-DLY_CALL_COMST); \
  32. while(_dcnt-- > 0) \
  33. { continue; }\
  34. }
  35. #define delay_us(us) delayUs(us)
  36. #define delay_ms(ms) delay_us(ms*1000)
  37. #else
  38. void delay_init ( u8 SYSCLK );
  39. void delay_us ( u32 Number );
  40. void delay_ms ( u16 Number );
  41. #endif
  42. #endif /* end delay.h */