微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > GNU ARM汇编--(十)s3c2440的RTC

GNU ARM汇编--(十)s3c2440的RTC

时间:11-26 来源:互联网 点击:

  1. iduart_SendString(char*pt)
  2. {
  3. while(*pt)
  4. uart_SendByte(*pt++);
  5. }
  6. voiduart_Printf(char*fmt,...)
  7. {
  8. va_listap;
  9. charstring[256];
  10. va_start(ap,fmt);
  11. //vsprintf(string,fmt,ap);
  12. uart_SendString(string);
  13. va_end(ap);
  14. }
  15. voiduart_test(void)
  16. {
  17. charstr[20]="helloworld";
  18. inta=97;
  19. //while(1)
  20. //uart_SendByte(a);
  21. uart_SendString(str);
  22. chars=uart_GetByte();
  23. //if(s==a)
  24. if(s==97)
  25. rGPBDAT=0x1c0;
  26. //uart_SendByte(a);
  27. //uart_SendByte(97);
  28. //uart_SendByte(a);
  29. uart_SendByte((int)s);
  30. uart_SendByte((int)s);
  31. }
  32. voidrtc_uart_test(void)
  33. {
  34. rRTCCON=0x1;
  35. rTICNT=0x0;
  36. rRTCALM=0x42;
  37. rBCDYEAR=0x10;
  38. rBCDMON=0x11;
  39. rBCDDATE=0x07;
  40. rBCDDAY=0x05;
  41. rBCDHOUR=0x12;
  42. rBCDMIN=0x03;
  43. rBCDSEC=0x00;
  44. rALMMIN=0x04;
  45. uart_SendString("begin");
  46. //uart_Printf("year:%d",rBCDYEAR);
  47. }
  48. voidpwm_uart_test(void)
  49. {
  50. intfreq=10;
  51. inti;
  52. for(i=0;i<100;i++)
  53. uart_SendString("app");
  54. //Buzzer_Freq_Set(freq);
  55. //Buzzer_Freq_Set();
  56. //uart_test();
  57. uart_SendString("start");
  58. /*
  59. inti;
  60. for(i=0;i<1000;i++)
  61. uart_SendString("wait");
  62. while(1)
  63. {
  64. charkey=uart_GetByte();
  65. uart_SendByte(key);
  66. if(key==a||key==A)
  67. {
  68. if(freq<2000)//lci20000
  69. freq+=10;
  70. uart_SendByte(a);
  71. Buzzer_Freq_Set(freq);
  72. }
  73. if(key==b||key==B)
  74. {
  75. if(freq>11)
  76. freq-=10;
  77. uart_SendByte(b);
  78. Buzzer_Freq_Set(freq);
  79. }
  80. //uart_SendString(" Freq=%d",freq);
  81. //if(key==ESC_KEY)
  82. //{
  83. //Buzzer_Stop();
  84. //return;
  85. //}
  86. }
  87. */
  88. }


在调这个过程中,因为RTCCON中的CLKRST最初被我置为1,导致时间根本不走,为了查这个问题,专门通过led显示来判断这个时间是不是不走:

ldr r2, =BCDSEC @BCDMIN
ldr r1,[r2]
cmp r1, #0x06
bleq ledon

通过这里的判断,可以明确时间有被设进去,可是时间不走.经过google,才确定是寄存器的设置问题.

到此,rtc的闹钟也实现了功能.明天就用这个做闹钟吧~~

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top