2226|0

2057

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

[TI首届低功耗设计大赛]+FR5969内部RTC测试 [复制链接]

本帖最后由 IC爬虫 于 2014-12-24 13:52 编辑

本实验是通过寄存器的方式对MSP430FR5969的内部RTC时钟的读写测试,将时间显示在NOKIA1202LCD LaunchpadBoost上。本实验使用的时钟数字的字体比较普通,在设计成手表显示的时候改变一下字体将会好很多。实验代码参考了zidantou网友提供的例程。表示感谢

完整的代码工程:
13-NOKIA1202LCD RTC UART-test.rar (334.46 KB, 下载次数: 29, 售价: 1 分芯积分)


  1. //******************************************************************************
  2. //  描述: RTC 驱动库
  3. //
  4. //               MSP430FR5969
  5. //             -----------------
  6. //            |              XIN|-
  7. //            |                 |  32KHz Crystal
  8. //            |             XOUT|-
  9. //         /|\|                 |

  10. //  IC爬虫   QQ:1394024051
  11. //   
  12. //   Dec 2014
  13. //   Built with IAR Embedded Workbench V6.1
  14. //******************************************************************************
  15. #include "rtc.h"

  16. char Time[40]={"The Time is 0000年00月00号00时00分00秒"};  //用于串口打样
  17. char Time_LCD1[11]={"0000-00-00"};                        //用于LCD显示日期
  18. char Time_LCD2[9]={"00:00:00"};                           //用于LCD显示时钟
  19. /**********************************************************/
  20. //函数名称:RTC_Init
  21. //入口参数:无
  22. //出口参数:无
  23. //函数功能:初始化RTC,配置寄存器和设定初始时间
  24. /**********************************************************/
  25. void RTC_Init(void)
  26. {
  27.   // Configure RTC_B
  28.   RTCCTL01 = RTCBCD | RTCHOLD | RTCTEV__MIN | RTCTEVIE;  // BCD mode, RTC hold, enable RTC
  29.                                              // event interrupt for each minute
  30.   RTCYEAR = 0x2014;                          // Year = 0x2014
  31.   RTCMON  = 0x12;                            // Month = 0x10 = October
  32.   RTCDAY  = 0x23;                            // Day = 0x07 = 7th
  33.   RTCDOW  = 0x01;                            // Day of week = 0x05 = Friday
  34.   RTCHOUR = 0x15;                            // Hour = 0x11
  35.   RTCMIN  = 0x13;                            // Minute = 0x59
  36.   RTCSEC  = 0x01;                            // Seconds = 0x30

  37.   RTCCTL01 &= ~RTCHOLD;                      // Start RTC calendar mode
  38. }
  39. /**********************************************************/
  40. //函数名称:RTC_Start
  41. //入口参数:无
  42. //出口参数:无
  43. //函数功能:启动RTC
  44. /**********************************************************/
  45. void RTC_Start(void)
  46. {
  47.         RTCCTL01 &= ~RTCHOLD;
  48. }
  49. /**********************************************************/
  50. //函数名称:RTC_Hold
  51. //入口参数:无
  52. //出口参数:无
  53. //函数功能:暂停RTC
  54. /**********************************************************/
  55. void RTC_Hold(void)
  56. {
  57.         RTCCTL01 |= RTCHOLD;
  58. }
  59. /**********************************************************/
  60. //函数名称:RTC_TimeSet
  61. //入口参数:无
  62. //出口参数:无
  63. //函数功能:设置RTC的日期,指的是年、月、日
  64. /**********************************************************/
  65. void RTC_TimeSet(void)
  66. {

  67. }
  68. /**********************************************************/
  69. //函数名称:RTC_ClockSet
  70. //入口参数:无
  71. //出口参数:无
  72. //函数功能:设置RTC的时钟,指的是时、分、秒
  73. /**********************************************************/
  74. void RTC_ClockSet(void)
  75. {

  76. }
  77. /**********************************************************/
  78. //函数名称:RTC_Read
  79. //入口参数:无
  80. //出口参数:无
  81. //函数功能:读取RTC的值,通过串口打印出时间和NOKIA1202LCD显示时间
  82. /**********************************************************/
  83. void RTC_Read(void)
  84. {
  85.         Time[12]= RTCYEAR/0x1000+'0';
  86.         Time[13]= RTCYEAR%0x1000/0x100+'0';
  87.         Time[14]= RTCYEAR%0x100/0x10+'0';
  88.         Time[15]= RTCYEAR%0x10+'0';
  89.         Time[18]= RTCMON/16+'0';
  90.         Time[19]= RTCMON%16+'0';
  91.         Time[22]= RTCDAY/16+'0';
  92.         Time[23]= RTCDAY%16+'0';
  93.         Time[26]= RTCHOUR/16+'0';
  94.         Time[27]= RTCHOUR%16+'0';
  95.         Time[30]= RTCMIN/16+'0';
  96.         Time[31]= RTCMIN%16+'0';
  97.         Time[34]= RTCSEC/16+'0';
  98.         Time[35]= RTCSEC%16+'0';
  99.         Time[38]='\r';
  100.         Time[39]='\0';
  101.         
  102.         Time_LCD1[0]=Time[12];
  103.         Time_LCD1[1]=Time[13];
  104.         Time_LCD1[2]=Time[14];
  105.         Time_LCD1[3]=Time[15];
  106.         Time_LCD1[5]=Time[18];
  107.         Time_LCD1[6]=Time[19];
  108.         Time_LCD1[8]=Time[22];
  109.         Time_LCD1[9]=Time[23];
  110.         Time_LCD1[10]='\0';
  111.         
  112.         Time_LCD2[0]=Time[26];
  113.         Time_LCD2[1]=Time[27];
  114.         Time_LCD2[3]=Time[30];
  115.         Time_LCD2[4]=Time[31];
  116.         Time_LCD2[6]=Time[34];
  117.         Time_LCD2[7]=Time[35];
  118.         Time_LCD2[8]='\0';
  119.         printf(Time);
  120.         
  121.         LCD_Print(Time_LCD2, 25, 2);
  122.         LCD_Print(Time_LCD1, 20, 3);
  123. }

  124. #pragma vector=RTC_VECTOR
  125. __interrupt void RTCISR(void)
  126. {
  127.   switch (__even_in_range(RTCIV, RTCIV_RTCOFIFG)){
  128.     case RTCIV_NONE: break;
  129.     case RTCIV_RTCRDYIFG: break;
  130.     case RTCIV_RTCTEVIFG:
  131. //      P1OUT |= BIT0;                        // Turn on LED
  132.       break;
  133.     case RTCIV_RTCAIFG: break;
  134.     case RTCIV_RT0PSIFG: break;
  135.     case RTCIV_RT1PSIFG: break;
  136.     case RTCIV_RTCOFIFG: break;
  137.   }
  138. }
复制代码


 
点赞 关注(1)

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表