profile.c
上传用户:jankzhpno
上传日期:2022-08-03
资源大小:4763k
文件大小:2k
源码类别:

Windows CE

开发平台:

Visual C++

  1. /**************************************************************
  2.  NAME: profile.c
  3.  DESC: To measuure the USB download speed, the WDT is used.
  4.        To measure up to large time, The WDT interrupt is used.
  5.  HISTORY:
  6.  MAR.25.2002:purnnamu:  
  7.      S3C2400X profile.c is ported for S3C2410X.
  8.  **************************************************************/
  9. #include "def.h"
  10. #include "option.h"
  11. #include "2440addr.h"
  12. #include "2440lib.h"
  13. #include "2440slib.h" 
  14. #include <stdarg.h>
  15. #include <string.h>
  16. #include <stdlib.h>
  17. #include <stdio.h>
  18. #include <ctype.h>
  19. /************************* Timer ********************************/
  20. static int intCount;
  21. void __irq IsrWatchdog(void);
  22. void Timer_InitEx(void)
  23. {
  24. intCount=0;
  25. pISR_WDT_AC97=(U32)IsrWatchdog;
  26. ClearPending(BIT_WDT_AC97);
  27. rSUBSRCPND=BIT_SUB_WDT;
  28. rINTMSK&=~(BIT_WDT_AC97);
  29. rINTSUBMSK&=~(BIT_SUB_WDT);
  30. }
  31. void Timer_StartEx(void)
  32. {
  33. int divider=0;
  34. rWTCON=((PCLK/1000000-1)<<8)|(0<<3)|(1<<2); // 16us
  35. rWTDAT=0xffff;
  36. rWTCNT=0xffff;   
  37. // 1/16/(65+1),interrupt enable,reset disable,watchdog enable
  38. rWTCON=((PCLK/1000000-1)<<8)|(0<<3)|(1<<2)|(0<<0)|(1<<5);   
  39. }
  40. float Timer_StopEx(void)
  41. {
  42. int count;
  43. rWTCON=((PCLK/1000000-1)<<8);
  44. rINTMSK|=BIT_WDT_AC97;
  45. rINTSUBMSK|=BIT_SUB_WDT;
  46. count=(0xffff-rWTCNT)+(intCount*0xffff);
  47. return ((float)count*(16e-6));
  48. }
  49. void __irq IsrWatchdog(void)
  50. {
  51.  rINTSUBMSK|=BIT_SUB_WDT;
  52.  rSRCPND = BIT_WDT_AC97; //Clear pending bit
  53.  rINTPND = BIT_WDT_AC97;
  54.  rINTPND; //Prevent an double interrupt pending
  55.  rSUBSRCPND=BIT_SUB_WDT;
  56.  intCount++;   
  57.  rINTSUBMSK&=~BIT_SUB_WDT;
  58. }