找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2980|回复: 0
打印 上一主题 下一主题
收起左侧

STM32mini RTC时钟日历源代码

[复制链接]
跳转到指定楼层
楼主
ID:327902 发表于 2018-5-11 21:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32mini RTC时钟单片机源程序如下:
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  fire
  5.   * @version V1.0
  6.   * @date    2013-xx-xx
  7.   * @brief   rtc 测试,显示时间格式为: xx:xx:xx
  8.   */
  9.        
  10. #include "stm32f10x.h"
  11. #include "./usart/bsp_usart.h"
  12. #include "./rtc/bsp_rtc.h"
  13. #include "./key/bsp_key.h"  
  14. #include "./beep/bsp_beep.h"   


  15. // N = 2^32/365/24/60/60 = 136 年

  16. /*时间结构体,默认时间2000-01-01 00:00:00*/
  17. struct rtc_time systmtime=
  18. {
  19. 0,0,0,1,1,2000,0
  20. };

  21. /*时间结构体,闹钟时间2000-01-01 00:00:08*/
  22. struct rtc_time clocktime=
  23. {
  24. 8,0,0,1,1,2000,0
  25. };

  26. extern __IO uint32_t TimeDisplay ;
  27. extern __IO uint32_t TimeAlarm ;


  28. //【*】注意事项:
  29. //在bsp_rtc.h文件中:

  30. //1.可设置宏USE_LCD_DISPLAY控制是否使用LCD显示
  31. //2.可设置宏RTC_CLOCK_SOURCE_LSI和RTC_CLOCK_SOURCE_LSE控制使用LSE晶振还是LSI晶振

  32. //3.STM32的LSE晶振要求非常严格,同样的电路、板子批量产品时总有些会出现问题。
  33. //  本实验中默认使用LSI晶振。
  34. //  
  35. //4.!!!若希望RTC在主电源掉电后仍然运行,需要给开发板的电池槽安装钮扣电池,
  36. //  !!!且改成使用外部晶振模式RTC_CLOCK_SOURCE_LSE
  37. //  钮扣电池型号:CR1220
  38. /**
  39.   * @brief  主函数
  40.   * @param  无  
  41.   * @retval 无
  42.   */
  43. int main()
  44. {               
  45.        
  46.         uint32_t clock_timestamp;
  47.         uint32_t current_timestamp;
  48.        
  49. //可使用该宏设置是否使用液晶显示
  50. #ifdef  USE_LCD_DISPLAY
  51.        
  52.                 ILI9341_Init ();         //LCD 初始化
  53.                 LCD_SetFont(&Font8x16);
  54.                 LCD_SetColors(RED,BLACK);

  55.                 ILI9341_Clear(0,0,LCD_X_LENGTH,LCD_Y_LENGTH);        /* 清屏,显示全黑 */

  56.                 ILI9341_DispStringLine_EN(LINE(0),"        BH RTC demo");
  57. #endif
  58.        
  59.           USART_Config();                       
  60.        
  61.                 Key_GPIO_Config();
  62.        
  63.                 BEEP_GPIO_Config();
  64.                
  65.                 /* 配置RTC秒中断优先级 */
  66.           RTC_NVIC_Config();
  67.           RTC_CheckAndConfig(&systmtime);
  68.        
  69.                 /*设置闹钟寄存器*/
  70.                 clock_timestamp = mktimev(&clocktime)-TIME_ZOOM;
  71.                 RTC_SetAlarm(clock_timestamp);
  72.                
  73.           while (1)
  74.           {
  75.             /* 每过1s 更新一次时间*/
  76.             if (TimeDisplay == 1)
  77.             {
  78.                                 /* 当前时间 */
  79.                                 current_timestamp = RTC_GetCounter();
  80.               Time_Display( current_timestamp,&systmtime);
  81.                                                                
  82.               TimeDisplay = 0;
  83.             }
  84.                        
  85.                         //按下按键,通过串口修改时间
  86.                         if( Key_Scan(KEY1_GPIO_PORT,KEY1_GPIO_PIN) == KEY_ON  )
  87.                         {
  88.                                 struct rtc_time set_time;

  89.                                 /*使用串口接收设置的时间,输入数字时注意末尾要加回车*/
  90.                                 Time_Regulate_Get(&set_time);
  91.                                 /*用接收到的时间设置RTC*/
  92.                                 Time_Adjust(&set_time);
  93.                                
  94.                                 //向备份寄存器写入标志
  95.                                 BKP_WriteBackupRegister(RTC_BKP_DRX, RTC_BKP_DATA);

  96.                         }        
  97.                        
  98.                         //响铃
  99.                         if( TimeAlarm == 1)
  100.                         {
  101.                                 BEEP(ON);
  102.                         }

  103.                         //按下按键,关闭蜂鸣器
  104.                         if( Key_Scan(KEY2_GPIO_PORT,KEY2_GPIO_PIN) == KEY_ON  )
  105.                         {
  106.                                 BEEP(OFF);
  107.                                 TimeAlarm = 0;
  108. ……………………

  109. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
2.RTC—闹钟实验.zip (341.5 KB, 下载次数: 49)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表