GD32E230开发标准教程 课件 ch03串口电子钟_第1页
GD32E230开发标准教程 课件 ch03串口电子钟_第2页
GD32E230开发标准教程 课件 ch03串口电子钟_第3页
GD32E230开发标准教程 课件 ch03串口电子钟_第4页
GD32E230开发标准教程 课件 ch03串口电子钟_第5页
已阅读5页,还剩22页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

串口电子钟GD32E230开发标准教程第三章01实验内容本实验主要包括以下内容:①将RunClock模块添加至工程,并在应用层调用RunClock模块的API函数;②将时钟的初始值设为23:59:50,通过计算机上的串口助手每秒输出一次时间值,格式为Nowisxx:xx:xx;③将编译生成的.hex或axf文件下载到GD32E2杏仁派开发板;④打开串口助手软件,查看电子钟运行是否正常。实验内容02实验原理RunClock模块函数RunClock模块由RunClock.h和RunClock.c文件实现,这两个文件位于本书配套资料包的“04.例程资料\Material\02.UARTCloek\AppRunClock”文件夹中。RunClock模块有6个API函数,分别为InitRunClock、RunClockPer2ms、PauseClock、GetTimeVal、SetTimeVal和DispTime,下面对这6个API函数进行介绍。实验原理lnitRunClock函数描述如表3-1所示。实验原理RunClockPer2ms函数描述如表3-2所示。实验原理PauseCloek函数描述如表3-3所示。实验原理GetTimeVal函数描述如表3-4所示。实验原理SetTimeVal函数描述如表3-5所示。实验原理DispTime函数描述如表3-6所示。实验原理图3-1为本实验的函数调用框架。实验原理Timer模块的TIMER15用于产生2ms标志位,TIMER16用于产生ls标志位;Main模块通过获取和清除2ms、ls标志位,实现Proc2msTask函数中的核心语句块每2ms执行一次,Proc1SecTask函数中的核心语句块每ls执行一次。实验原理Main模块调用RunClock模块中的InitRunClock函数初始化时钟的计数值,调用PauseClock函数启动时钟运行,通过SetTimeVal函数设置初始时间值;Proc2msTask函数调用RunClock模块的RunClockPer2ms函数,实现RunClock模块内部静态变量siHour/siMin/siSec的计数功能,进而实现时钟的运行。时间显示是由RunClock模块中的GetTimeVal函数获取时钟计数值,再将计数值通过DispTime函数中的printf语句输出实现的,Proc1SecTask函数每秒调用一次DispTime函数。实验原理Proc2msTask函数的实现代码如程序清单3-1所示。实验原理Proc2msTask函数在main函数的while语句中被调用,每隔几微秒执行一次,具体间隔取决于各中断服务函数及ProclSecTask函数的执行时间。如果Proc2msTask函数约每10μs执行一次,Get2msFlag函数用于读取2ms标志位的值并判断是否为1,该标志位在TIMER15的中断服务函数中被置为1,TIMER15的中断服务函数每2ms执行一次,因此2ms标志位也是每2ms被置为1一次。实验原理如果2ms标志位为1,则执行用户代码,执行完毕,清除2ms标志位,然后执行Proc1SecTask函数,接着继续判断2ms标志位;如果2ms标志位不为1,则执行Proc1SecTask函数,然后继续判断2ms标志位。实验原理程序架构本实验的程序架构如图3-3所示。实验原理本实验的主要目的是介绍微控制器程序设计的模块化思想,将实现某一具体功能的函数集成在一个模块中,并向外预留函数接口,通过包含该模块的头文件即可调用模块中的内部变量或函数等,再根据模块类型将模块置于对应的分组中。实验原理另外,通过本实验,还可以了解本书配套实验例程的基本程序架构,模块的初始化在Main模块的InitHardware和InitSoftware函数中进行,前者用于初始化硬件相关模块,后者用于初始化软件相关模块,需要循环调用的函数则置于Proc2msTask或Proc1SecTask函数中,还可以通过对2ms进行计数来自定义函数的调用周期。实验原理掌握微控制器程序设计的模块化思想十分重要,模块化的程序不仅有利于开发,还便于后期维护。模块化的设计思想结合实验例程固定的程序架构,可以使初学者快速掌握微控制器程序开发要领。实验原理03实验步骤与代码解析实验步骤:步骤1:复制并编译原始工程;步骤2:添加RunClock文件对;步骤3:完善串口电子钟应用层;步骤4:编译及下载验证。实验步骤与代码解析04本章任务2021年共有365天,将2021年1月1日作为计数起点,即计数1,将2021年12月31日作为计数终点,即计数365。计数1代表“2021年1月1日-星期五”,计数10代表“2021年1月10日-星期日”.根据串口电子钟实验原理,基于GD32E2杏仁派开发板设计一个实验,实现每秒计数递增一次,计数范围为1~365,并通过printf语句每秒输出一次计数对应的年、月、日、星期,结果通过计算机上的串口助手显示。此外,可以设置日期的初始值,例如,将初始日期设置为“2021年1月10日-星期日”,第1秒输出“2021年1月11日-星期一”、第2秒输出“2021年1月12日-星期二”,以此类推。本章任务任务提示:(1)仿照小时、分钟、秒,定义3个变量用于进行月、日、星期计数。(2)进行日期计数时,应根据当前月份的天数设置计数上限值。根据天数的不同,将12个月份分为3组:1、3、5、7、8、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论