对于蓝桥杯嵌入式比赛中的RTC部分呢,也经常考,其实就是一个实时时钟,配置起来也比较容易,偷懒的话,可以直接复制粘贴赛场提供的例程程序。
它需要有RTC配置、中断NVIC配置和时间显示,程序如下:

u8 TimeDisplay=0;void RTC_Configuration(void)
{RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);PWR_BackupAccessCmd(ENABLE);BKP_DeInit();RCC_LSICmd(ENABLE);while (RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET){}RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);RCC_RTCCLKCmd(ENABLE);RTC_WaitForSynchro();RTC_WaitForLastTask();RTC_ITConfig(RTC_IT_SEC, ENABLE);RTC_WaitForLastTask();RTC_SetPrescaler(39999);RTC_WaitForLastTask();RTC_SetCounter(HH*3600+MM*60+SS);RTC_WaitForLastTask();
}void NVIC_Configuration(void)
{NVIC_InitTypeDef NVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);
}u8 Text[20];
void Time_Display(u32 TimeVar)
{u32 THH = 0,TMM = 0,TSS = 0;THH = TimeVar / 3600;TMM = (TimeVar % 3600) / 60;TSS = (TimeVar % 3600) % 60;sprintf((char*)Text,"Time:%2d:%2d:%2d",THH,TMM,TSS);LCD_DisplayStringLine(Line7,Text);
}

比赛的时候,RTC和NVIC配置函数是可以直接抄过来的,我们只需要写一个时间显示函数Time_Display(u32 TimeVar) ,这个函数的参数就是通过RTC_GetCounter() 函数得到的,即获取当前RTC内部计数器的计数值,然后将其转化为24小时制,通过LCD显示出来。一般情况下,我们是通过检测秒触发中断RTC_IT_SEC来刷新LCD显示的,这也符合我们日常时钟表的规律,即一秒变化一次。中断函数是写在stm32f10x.it.c里面的,中断函数如下:

void RTC_IRQHandler(void)
{if(RTC_GetFlagStatus(RTC_IT_SEC) != RESET){RTC_ClearITPendingBit(RTC_IT_SEC);TimeDisplay = 1;RTC_WaitForLastTask();if(RTC_GetCounter() == 0x00015180){RTC_SetCounter(0x0);RTC_WaitForLastTask();}}
}

秒中断服务函数的主要任务就是改变标志位TimeDisplay 的值,然后清除秒中断标志位,然后就是需要判断一下有没有达到`23:59:59 ,即:

if(RTC_GetCounter() == 0x00015180)

如果达到了此计数值,那么由于时间是24小时制,那么下一个时间点应该是0:0:0,所以需要对计数值清零。
注意中断服务函数的函数名字一定不要写错,写错了,编译仍然会通过,但是它是进不了中断服务函数的,没办法,stm32就是这样,所有的中断服务函数的名字都是固定的。
我们在中断服务函数里面改变标志位的状态,然后在主函数中通过检测这个标志位来进行刷新LCD显示,主函数程序如下:

while(1){if(TimeDisplay == 1){Time_Display(RTC_GetCounter());TimeDisplay = 0;}}

综上,RTC配置还是很容易的,一般不会出什么幺蛾子。还有就是比赛的时候一般都会有时间初值,这个初值我们是在RTC配置函数里面写的,这两行程序比赛提供的例程里面是没有的,需要我们自己添加,即:

  RTC_SetCounter(HH*3600+MM*60+SS);RTC_WaitForLastTask();

其中HH、MM、SS就是设定的初试时间值:(23:59:50)

#define HH 23
#define MM 59
#define SS 50

还有就是关于数值显示的:

sprintf((char*)Text,"Time:%2d:%2d:%2d",THH,TMM,TSS);

这个就是C语言的知识了,可以自己去试一下,改变%2d中的数值,看一下LCD上显示的有什么变化。

蓝桥杯比赛的RTC时钟配置相关推荐

  1. 蓝桥杯比赛培训笔记(基于STCCT107D训练板)

    "蓝桥杯"比赛培训笔记 更新说明 第一次大更新:删除了一部分冗余的代码,将代码部分改得更为规范了些. --2020年2月23日 第二次更新:在C语言相关中增添了"数组&q ...

  2. linux c设置rtc时间,linux内核的rtc时钟配置

    linux内核的rtc时钟配置,见Device Drivers  --->Real Time Clock .我们的RTC主要是有三种接口配置,一种是I2C接口,一种是SPI接口,还有就是CPU自 ...

  3. STM32 RTC时钟掉电日期不更新 STM32 HAL库RTC时钟配置

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 STM32 RTC时钟掉电日期不更新 & STM32 HAL库RTC时钟配置 一.STM32CubeMX RTC配置 二.RT ...

  4. 淘宝的镜像下载蓝桥杯比赛环境python3.8.6 windows 64位安装包

    淘宝的镜像下载蓝桥杯比赛环境python3.8.6 windows 64位安装包 第十二届要求的环境 我电脑是64位的,根据个人情况自行选择 地址:https://npm.taobao.org/mir ...

  5. 蓝桥杯单片机之DS1302时钟模块的使用

    蓝桥杯单片机之DS1302时钟模块的使用 DS1302简介 SPI串口简介 BCD码 阅读手册获取寄存器信息 日历时钟寄存器 控制字 将手册中的数据进行分析可得 完整代码示例: 总结 DS1302简介 ...

  6. 大学生蓝桥杯比赛时间2020_2020蓝桥杯STEAM比赛考试说明

    近期蓝桥杯组织了很多场的比赛,下半年基本上每个月都有,让许多家长不知所措.接下来爱思创小程老师就来跟家长们聊一下今年蓝桥杯的参赛攻略. 下半年蓝桥杯比赛,分为三个阶段:steam考试,蓝桥杯省赛,蓝桥 ...

  7. 2019第十届蓝桥杯比赛总结(B组c/c++)

    试题 A: 组队 本题总分:5 分 作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员, 组成球队的首发阵容. 每位球员担任 1 号位至 5 号位时的评分如下表所示.请你计算首发阵 ...

  8. 2020年蓝桥杯比赛时间_我院举办2021年创新创业大赛启动仪式及第12届蓝桥杯动员大会...

    为激励我院学生积极提升自身实践能力,促进我院良好的学风,在院长的关怀和指导下,2020年12月10日下午2点,我院在5号教学楼5401教室举办了第12届蓝桥杯动员大会.本次大会主要介绍了创新创业类比赛 ...

  9. 火牛单片机rtc时钟配置_怎么用STM32F103RTC进行时钟的配置

    #include "sys.h" #include "delay.h" #include "usart.h" #include " ...

最新文章

  1. Fluke OTDR新增SmartLoop双向测试功能
  2. HTML转WORD WORD转PDF--来源网络
  3. Kaggle发布数据科学最新报告!82%男性, 62%硕博,薪酬6位数居多
  4. java foreach用法_Java十大简单性能优化
  5. 一网打尽2013最常用的NoSQL数据库
  6. Unable to create '/media/sf_nginx/H2_20151103/H2/.git/index.lock': File exists.
  7. python实例 99,100
  8. Apache配置URL重定向
  9. Elasticsearch: 配置文件详解
  10. IE7,IE8,上传文件控件input file和asp.net FileUpload控件无法获取完整路径的解决办法...
  11. 如何在地址栏显示图标
  12. python 读取png图片 透明度
  13. Linux ipv6设置
  14. Unity3D游戏启动界面常用设置
  15. 辛弃疾·青玉案·元夕
  16. 叉烧fan的arduino自学笔记(一) 人体红外报警器
  17. 裸 VSCode 必备插件
  18. 《《《翻译》》》Navigation Through Cluttered Environments
  19. poj 3009 Curling 2.0
  20. 关于JAVA外包的解释及优劣势

热门文章

  1. Visual Studio无法推送提交到Github的解决方法
  2. spring.net结合普通三层(实现IOC 及AOP中的异常记录功能)
  3. 【干货】深度学习及在推荐中的实践-美团点评.pdf(附下载链接)
  4. 【报告分享】中国营销数字化行业趋势报告:全渠道时代,品牌商如何抓住消费者?(附下载链接)...
  5. 【报告分享】中美人工智能之比较分析报告.pdf(附下载链接)
  6. 测试需求分析第一部分
  7. 【论文】Awesome Relation Extraction Paper(关系抽取)(PART IV)
  8. 人工智能作业——搜索树博弈树一阶逻辑表达式CNF范式
  9. 蓝桥杯 入门训练 圆的面积
  10. InnoDB文件系统