user_test1.c
上传用户:zbk8730
上传日期:2017-08-10
资源大小:12168k
文件大小:3k
源码类别:

uCOS

开发平台:

C/C++

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include "def.h"
  4. #include "option.h"
  5. #include "2440addr.h"
  6. #include "2440lib.h"
  7. #include "userlib.h"
  8. #include "user_test1.h"
  9. #include "dvstest.h"
  10. // Clock calculation. Current clock information calc.
  11. // Register value : MPLLCON(Mdiv, Pdiv, Sdiv), CLKDIVN(Hdivn, Pdivn).
  12. // Hclk = Fclk/Hclk_Ratio, Pclk = Fclk/Hclk_Ratio/Pclk_Ratio.
  13. // Refresh count(Ref_Cnt) = 2048+1-(Hclk*7.8)
  14. extern void Calc_Clock(int pring_msg);
  15. extern U32 Mdiv, Pdiv, Sdiv, Fclk, Hclk, Pclk, Hdivn, Pdivn, Hclk_Ratio, Pclk_Ratio, Ref_Cnt;
  16. void test1(void);
  17. void Test_IO_Strength(void);
  18. #define Tacs 0
  19. #define Tcos 0
  20. #define Tacc 2
  21. #define Tcoh 0
  22. #define Tcah 0
  23. void Sram_timing(void)
  24. {
  25. volatile U16 i, k;
  26. U32 bk_bankcon5;
  27. Uart_Printf("Sram test...n");
  28. bk_bankcon5 = rBANKCON5;
  29. // Setting bankcon 5.
  30. rBWSCON = (rBWSCON&~(0xf<<20)) | (1<<23) | (1<<22) |(1<<20);
  31. rBANKCON5 = (rBANKCON5&~(0x7ff<<4)) | (Tacs<<13) | (Tcos<<11) | (Tacc<<8) | (Tcoh<<6) | (Tcah<<4) ;
  32. Uart_Printf("rBANKCON5:%xn", rBANKCON5);
  33. for(i=0; ; i++) {
  34. *(U16 *) 0x28000002 = 1;
  35. k=*(U16 *) 0x28000002;
  36. if(Uart_GetKey()) break;
  37. }
  38. rBANKCON5 = bk_bankcon5;
  39. while(1)if(Uart_GetKey()) break;;
  40. }
  41. void Dclk_test(void)
  42. {
  43. U32 bk_dclkcon, bk_gphcon, bk_misccr;
  44. bk_dclkcon = rDCLKCON;
  45. bk_gphcon = rGPHCON;
  46. bk_misccr = rMISCCR;
  47. Uart_Printf("DCLK test.n");
  48. //rDCLKCON = (1<<24) | (3<<20) | (1<<17) | (1<<16); // Dclk1=Uclk/4 50% duty.
  49. rDCLKCON = (0<<24) | (1<<20) | (1<<17) | (1<<16); // Dclk1=Uclk/4 50% duty.
  50. rGPHCON = (rGPHCON&~(0x3<<20)) | (0x2<<20);
  51. rMISCCR = (rMISCCR & ~(0x7<<8)) | (0x1<<8);
  52. Uart_Printf("Press any key to stop.n");
  53. Uart_Getch();
  54. rDCLKCON=bk_dclkcon;
  55. rGPHCON=bk_gphcon;
  56. rMISCCR=bk_misccr;
  57. }
  58. ////////////////////////////// User_test1() end ///////////////////////////////
  59. void test1(void)
  60. {
  61. int i;
  62. Uart_Printf("nUser_Test1 program...n");
  63. Uart_Printf("Current Clock information...n");
  64. Calc_Clock(1);
  65. Uart_Printf("Register setting valuen");
  66. Uart_Printf("MDIV:PDIV:SDIV = %x:%x:%xn", Mdiv, Pdiv, Sdiv);
  67. Uart_Printf("HDIVN:PDIVN = %x:%xn", Hdivn, Pdivn);
  68. Uart_Printf("FCLK:HCLK:PCLK = %d:%d:%d kHzn", Fclk/1000, Hclk/1000, Pclk/1000);
  69. Uart_Printf("Refresh count :%d(Must be %d)n", rREFRESH&0x7ff, Ref_Cnt);
  70. }
  71. ////////////////////////////// User_Test1() start ///////////////////////////////
  72. void User_Test1(void)
  73. {
  74. Uart_Printf("User test 1.n");
  75. while(1) {
  76. rMISCCR;
  77. rDCLKCON;
  78. rEXTINT0;
  79. rEXTINT1;
  80. }
  81. }
  82. void ticker_test(void);
  83. ////////////////////////// ticker test /////////////////////////////////////
  84. void ticker_test(void)
  85. {
  86. int divider=3, i;
  87. U32 unit_us, Time;
  88. Uart_Printf("nTicker.n");
  89. Calc_Clock(0);
  90. divider=0;
  91. unit_us = Init_Ticker(divider); //0:16, 1:32, 2: 64, 3:128us divider
  92. Ticker_Start();
  93. Delay(1000);//for(i=0; i<100000; i++);
  94. Time=Ticker_Stop();
  95. Uart_Printf("time(%x)=%f[sec]n",Time, (float)Time*(float)unit_us*0.000001);
  96. Uart_Printf("(Max ticker time: %fsec)n", (float)unit_us*0.000001*65536);
  97. }