GD32E230开发标准教程【ch03】串口电子钟 PPT课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验原理
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所示。
实验原理
本实验的主要目的是介绍微控制器程序设计的模块化思想,将实现某一具体 功能的函数集成在一个模块中,并向外预留函数接口,通过包含该模块的头 文件即可调用模块中的内部变量或函数等,再根据模块类型将模块置于对应 的分组中。
实验原理
图3-1为Байду номын сангаас实验的函数调用框架。
实验原理
Timer模块的TIMER15用于产生2ms标志位,TIMER16用于产生ls标志位; Main模块通过获取和清除2ms、ls标志位,实现Proc2msTask函数中的核 心语句块每2ms执行一次,Proc1SecTask函数中的核心语句块每ls执行一次。
实验原理
掌握微控制器程序设计的模块化思想十分重要,模块化的程序不仅有利于开 发,还便于后期维护。模块化的设计思想结合实验例程固定的程序架构,可 以使初学者快速掌握微控制器程序开发要领。
03
实验步骤与代码解析
实验步骤与代码解析
实验步骤: 步骤1:复制并编译原始工程; 步骤2:添加RunClock文件对;
02
实验原理
实验原理
RunClock模块函数
RunClock模块由RunClock.h和RunClock.c文件实现,这两个文件位于本书配套资料包 的“04.例程资料\Material\02.UARTCloek\App RunClock”文件夹中。RunClock模块 有6个API函数,分别为InitRunClock、RunClockPer2ms、PauseClock、GetTimeVal 、SetTimeVal和DispTime,下面对这6个API函数进行介绍。
谢谢观看
GD32E230开发标准教程
实验原理
Main模块调用RunClock模块中的InitRunClock函数初始化时钟的计数 值,调用PauseClock函数启动时钟运行,通过SetTimeVal函数设置初始 时间值;Proc2msTask函数调用RunClock模块的RunClockPer2ms函数, 实现RunClock模块内部静态变量s iHour/s iMin/s iSec的计数功能,进 而实现时钟的运行。时间显示是由RunClock模块中的GetTimeVal函数 获取时钟计数值,再将计数值通过DispTime函数中的printf语句输出实 现的,Proc1SecTask函数每秒调用一次DispTime函数。
实验原理
另外,通过本实验,还可以了解本书配套实验例程的基本程序架构,模块的 初始化在Main模块的InitHardware和InitSoftware函数中进行,前者用于 初始化硬件相关模块,后者用于初始化软件相关模块,需要循环调用的函数 则置于Proc2msTask或Proc1SecTask函数中,还可以通过对2ms进行计数 来自定义函数的调用周期。
第三章
串口电子钟
GD32E230开发标准教程
01
实验内容
实验内容
本实验主要包括以下内容:
①将RunClock模块添加至工程,并在应用层调用 RunClock模块的API函数; ②将时钟的初始值设为 23:59:50,通过计算机上的串 口助手每秒输出一次时间值,格式为Now is xx:xx:xx; ③将编译生成的.hex或axf文件下载到GD32E2杏仁派 开发板; ④打开串口助手软件,查看电子钟运行是否正常。
步骤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、10、12月有31天;4、6 、9、11月份有30天;2月28天。 (3)程序的整体架构基本不变,只需仿照RunClockPer2ms函数编写用于 进行日期计数的函数RunDataPer2ms即可。
实验原理
lnitRunClock函数描述如表3-1所示。
实验原理
RunClockPer2ms函数描述如表3-2所示。
实验原理
PauseCloek函数描述如表3-3所示。
实验原理
GetTimeVal函数描述如表3-4所示。
实验原理
SetTimeVal函数描述如表3-5所示。
实验原理
DispTime函数描述如表3-6所示。
相关文档
最新文档